Where it came from
ASCII (American Standard Code for Information Interchange) was standardized in 1963, growing out of earlier telegraph and teleprinter codes that needed a common way to represent text electronically. Its 7-bit design (128 possible values) was a deliberate choice for the hardware of the era — enough to cover English letters, digits, and punctuation, while fitting comfortably within the data widths common to the communication equipment of the time.
The full layout
ASCII's 128 code points split into three functional ranges:
| Range | Contents |
|---|---|
| 0–31 | Control characters (non-printing) — tab, newline, carriage return, and other now-mostly-legacy signals |
| 32–126 | Printable characters — space, digits, uppercase and lowercase English letters, punctuation |
| 127 | Delete (a legacy control character) |
'A' = 65 'a' = 97 '0' = 48 ' ' = 32
Uppercase and lowercase letters are offset by exactly 32 in the code table — 'a' - 'A' = 32 — a deliberate design choice that made case-conversion a trivial bitwise operation on period hardware, rather than requiring a lookup table.
Why ASCII still matters in a Unicode world
Every mainstream modern encoding — most importantly UTF-8 — was designed to remain backward-compatible with ASCII: any valid ASCII byte sequence is also valid UTF-8, representing the identical characters. This wasn't an accident; it's exactly why UTF-8 could be adopted incrementally across the existing ASCII-based internet infrastructure without breaking anything already working, and why ASCII text files still open correctly in virtually any modern text editor or system without conversion.
What ASCII structurally can't represent
ASCII has no support for accented letters, non-Latin scripts (Cyrillic, Arabic, Chinese, etc.), or symbols beyond its original 128-code set — anything outside that range requires a different, larger encoding (see What is Unicode). This limitation is exactly why ASCII alone was never going to remain sufficient once computing became a genuinely global, multilingual endeavor.
Common mistakes
- Assuming "ASCII" and "text encoding" are interchangeable terms today. ASCII is one specific, narrow encoding; most modern text is UTF-8, a different (though ASCII-compatible) encoding covering far more characters.
- Forgetting the control character range (0–31) exists. These aren't visible characters but represent real signals (tab, newline, etc.) baked into the same numeric range as printable characters.
- Trying to represent non-English text in pure ASCII. It's structurally impossible — accented letters and non-Latin scripts require a different, larger character set entirely.
FAQ
How many characters can ASCII represent?
128 total code points (0–127), covering English letters, digits, common punctuation, and non-printing control characters.
Is ASCII still used today, or has it been fully replaced?
It's technically superseded by larger encodings like UTF-8 for general use, but every ASCII byte sequence remains valid, identically-interpreted UTF-8 — it's less "replaced" than "extended," which is why it still matters practically.
Why is the difference between an uppercase and lowercase ASCII letter always exactly 32?
A deliberate design choice in the original 1963 standard, making case conversion a simple, fast bitwise operation rather than requiring a lookup table — a practical concern for the era's hardware.
Generate and inspect ASCII character codes instantly with the ASCII Generator — entirely in your browser.