What Is Text Encoding?
Text encoding maps character values to byte sequences and back. Without an agreed encoding, the same bytes can be interpreted as different text. Two essential standards are ASCII, a 7-bit coded character set, and UTF-8, a variable-width Unicode encoding that preserves ASCII's byte values.
Technical review — 17 July 2026. Definitions and byte examples were checked against IETF RFC 20, IETF RFC 3629, Unicode 17, and the WHATWG Encoding Standard, then covered by automated round-trip tests.
ASCII: The Original Standard
ASCII (American Standard Code for Information Interchange) uses 7 bits to represent 128 values: graphic characters plus control characters such as line feed and carriage return. When embedded in an 8-bit byte, the high-order bit is zero. Thus "A" is ASCII decimal 65, binary 1000001 as a 7-bit value, and normally displayed as byte 01000001. ASCII has no code for é, €, emoji, or non-Latin scripts.
The Problem ASCII Couldn't Solve
As computers spread globally, the limitations of ASCII became a serious problem. Different regions and systems adopted encodings such as ISO 8859-1 (Latin-1), Shift_JIS, and GB2312. A file decoded with the wrong encoding could display garbled text (mojibake). Unicode established a shared repertoire of coded characters, while UTF-8 provided a compact, ASCII-compatible way to encode Unicode scalar values as bytes.
UTF-8: The Universal Encoding
UTF-8 is a variable-width encoding for Unicode scalar values. RFC 3629 defines sequences of 1 to 4 octets for values in the range U+0000 through U+10FFFF, excluding surrogate code points. Values U+0000 through U+007F use one byte with the same value as ASCII. Other scalar values use 2, 3, or 4 bytes according to their value; scripts do not each have one fixed byte count. This design means every plain ASCII byte string is also valid UTF-8.
ASCII vs UTF-8: Key Differences
| Property | ASCII | UTF-8 |
|---|---|---|
| Coded range | 128 values, 0–127 | Unicode scalar values |
| Width | 7 significant bits; commonly one byte in storage/interchange | 1–4 bytes per scalar value |
| ASCII compatibility | N/A | ASCII values use the identical single byte |
A |
41 hex / 01000001 byte |
41 hex / 01000001 |
é |
Not representable | C3 A9 / 11000011 10101001 |
€ |
Not representable | E2 82 AC / 11100010 10000010 10101100 |
For ASCII-only text, ASCII and UTF-8 produce the same bytes. The difference becomes visible as soon as the text contains a non-ASCII scalar value.
How UTF-8 Encoding Works in Binary
Understanding UTF-8's binary structure reveals its elegance. For single-byte characters (ASCII range), the format is 0xxxxxxx — the leading 0 indicates a single-byte character. For two-byte characters, the format is 110xxxxx 10xxxxxx. Three-byte: 1110xxxx 10xxxxxx 10xxxxxx. Four-byte: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx. The leading bits tell the decoder how many bytes to read. For example, the Euro sign has Unicode code point U+20AC (decimal 8364). In UTF-8, it's encoded as three bytes: 11100010 10000010 10101100. The leading 1110 signals a 3-byte sequence, and the 10 prefixes mark continuation bytes. This self-synchronizing design means that even if you jump into the middle of a UTF-8 stream, you can find the start of the next character by looking for a byte that doesn't start with 10.
When to Use ASCII vs UTF-8
In modern development, UTF-8 is almost always the right choice. Use it for websites, APIs, databases, configuration files, and any text that might contain international characters. UTF-8 is the default encoding for HTML5, JSON, XML, and most modern programming languages. The only scenarios where you might specifically choose ASCII are: working with legacy systems that don't support UTF-8, embedded systems with extremely limited memory where you know only English characters will be used, or certain network protocols that explicitly require ASCII. Even in these cases, UTF-8 is usually safe because ASCII data is valid UTF-8 data. The rule of thumb: if you're starting a new project, use UTF-8 everywhere — in your source files, database connections, HTTP headers, and file I/O operations.
Try It Yourself: Compare Encodings
The binary converter uses the browser's standards-defined TextEncoder, which always emits UTF-8. Enter A, then é, €, or 😀 and compare the number of bytes. Paste the emitted binary into Binary to Text to verify the reverse direction.
Primary Sources and Verification
- IETF RFC 20 — ASCII format for Network Interchange
- IETF RFC 3629 — UTF-8, a transformation format of ISO 10646
- Unicode Standard 17, Chapter 3 — Conformance
- WHATWG Encoding Standard
Automated tests verify the published A, é, €, and 😀 byte sequences, strict 8-bit binary parsing, malformed UTF-8 rejection, and text → bytes → text round trips.