ASCII vs. Unicode: How Computers Actually Store Text
Published 2026-09-14
ASCII's telegraph-era roots
ASCII (American Standard Code for Information Interchange), standardized in 1963, assigns every English letter, digit, and common punctuation mark a number between 0 and 127 — fitting neatly into 7 bits, a design choice influenced by the teleprinter and telegraph equipment of the era. It was a genuinely elegant solution for its time, but its narrow 128-character range meant it had no room at all for accented letters, non-English alphabets, or symbols invented later.
The workaround era, and why it was messy
Through the 1980s-90s, different regions and languages created their own incompatible "extended" character sets that used the unused 128-255 range differently depending on which encoding was in use — meaning the exact same byte value could represent a French accented letter in one encoding and a completely different symbol in another. Text files would appear correct on one computer and turn into garbled symbols (sometimes called "mojibake") on another using a different encoding, a common frustration in early international computing.
Unicode's solution: one number per character, globally
Unicode, developed starting in the late 1980s, assigns a single unique number (called a code point) to every character in essentially every writing system in the world — over 149,000 characters and counting, including emoji, which is why an emoji genuinely has a real, standardized numeric identity, not just a picture. UTF-8, the most common way of storing Unicode as bytes, was specifically designed so that the first 128 characters are byte-for-byte identical to original ASCII, which is why old ASCII text still opens correctly as UTF-8 today — a deliberate backward-compatibility decision that helped UTF-8 become the dominant encoding on the modern web.
Why this still matters for developers
A surprisingly common bug in real software comes from treating text as if it were always plain ASCII — code that assumes "one character = one byte" breaks the moment a user's name contains an accented letter, a right-to-left script, or an emoji, all of which take multiple bytes in UTF-8.
Seeing the codes yourself
Our ASCII Converter shows you the underlying numeric code point for any character you type, in decimal, hex, or binary, and works correctly with full Unicode text — not just the original 128-character ASCII range — so you can inspect exactly how any character, including emoji and accented letters, is represented as numbers.