ASCII
American Standard Code for Information Interchange — character encoding standard
ASCII is a character encoding standard that assigns a unique 7-bit numeric value, ranging from 0 to 127, to English letters, digits, punctuation, and control characters. Standardized in the early 1960s for use in telecommunications and…
Definition
ASCII is a character encoding standard that assigns a unique 7-bit numeric value, ranging from 0 to 127, to English letters, digits, punctuation, and control characters. Standardized in the early 1960s for use in telecommunications and early computing equipment, it became the foundation for how text is represented digitally, and its first 128 code points remain identical in later encodings like Latin-1 and UTF-8, preserving backward compatibility across decades of computing.
Overview
Before ASCII, different computer manufacturers and telegraph systems used incompatible character codes, meaning text created on one machine often could not be correctly interpreted by another. ASCII was developed in the United States in the early 1960s specifically to give computers, teleprinters, and communications equipment a shared, standardized way to represent English text and basic control signals, so a byte's value would mean the same character regardless of which vendor's equipment produced or read it. Mechanically, ASCII maps 128 values, expressible in 7 bits, to specific meanings: values 0-31 and 127 are non-printing control characters such as line feed, carriage return, and tab, originally designed to control physical teleprinter hardware; values 32-126 cover the space character, digits 0-9, uppercase and lowercase English letters, and common punctuation. Because most computers store data in 8-bit bytes, the eighth bit was historically free for extensions or parity checking, which later encodings used to add accented characters and symbols beyond ASCII's original 128. ASCII's central role today is as the common subset shared by nearly every widely used text encoding: Latin-1 (ISO 8859-1) extends it with an additional 128 characters for Western European accents, and UTF-8, the dominant encoding for text on the web, is specifically designed so that any valid ASCII byte sequence is also valid UTF-8 with the identical meaning, which is why plain English text looks the same whether a file is labeled as ASCII or UTF-8. This compatibility is a large part of why the character set has survived essentially unchanged for over sixty years. In practice, developers encounter ASCII directly in source code identifiers, configuration file syntax, HTTP headers, and countless protocols that restrict certain fields to the ASCII range for maximum interoperability, and indirectly whenever they reason about byte-level text handling, since ASCII values underlie functions like character comparison and sorting in many programming languages. It also remains the reference point for teaching character encoding concepts before introducing the complexity of full Unicode. The fundamental limitation is that ASCII's 128 code points can only represent unaccented English-language text and cannot express accented Latin characters, non-Latin scripts like Cyrillic, Chinese, or Arabic, or emoji, which is precisely the gap Unicode and its UTF-8 encoding were created to close while remaining backward-compatible with ASCII's original 128 values. Any application that needs to handle international text correctly must move beyond plain ASCII to a Unicode-based encoding, even though its own byte values remain a valid, unmodified starting point for every one of those wider encodings.
Key Concepts
- Assigns 128 unique values across 7 bits to characters and control codes
- Covers uppercase and lowercase English letters, digits, and punctuation
- Includes non-printing control characters for line feed, tab, and carriage return
- First 128 code points identical across Latin-1 and UTF-8 encodings
- Standardized in the early 1960s for telecommunications interoperability
- Forms the backward-compatible foundation for modern Unicode encodings
- Widely used to restrict fields in protocols for maximum compatibility
- Basis for character sorting and comparison in many programming languages