Also available in: Español · Português · Français · العربية
ASCII Table
Every ASCII character in decimal, hex, octal and binary — and a count of which control characters anything still uses.
What is the ASCII table?
ASCII assigns a number from 0 to 127 to each of 128 characters. Ninety-five of them are printable: the space, the digits, the two alphabets and the punctuation on a US keyboard. The other thirty-three print nothing at all. They are control characters, and they are the half of the table that every reference lists and nobody explains.
The split is not a matter of opinion. In the Unicode Character Database, those thirty-three have the literal name <control> and their real names live in a separate aliases file. This page is generated from both, so the names, the abbreviations and the alternate names are the standard's own rather than anyone's recollection.
Everything else on a modern computer is built on top of this. UTF-8 was designed so that its first 128 code points are exactly ASCII, byte for byte, which is why a plain English text file is simultaneously valid ASCII and valid UTF-8 and has been for decades.
How to use the ASCII table
- Search however you happen to be thinking. Type 65, or 0x41, or the letter A itself, or carriage, or ESC. Decimal values, hex values, single characters, names, abbreviations and alternate names all match.
- Read across for the encoding you need. Every row carries decimal, hex, octal and eight-bit binary, zero-padded so columns line up when you copy them out. The copy button gives you the character; for the controls, which have no character, it gives the hex escape.
- Look at the control characters section first. It is the part with the surprising numbers, and it explains why a Windows line ending is two bytes rather than one.
Four of the thirty-three control characters are still used
The usual way to describe control characters is a list of names with no indication of which ones matter. Counting is more useful, so we counted. Across 9,760 text files and 127,721,432 characters — this entire website, its built HTML output, and twelve public-domain books — exactly four of the thirty-three appear at all.
Line feed occurs 434,063 times and carriage return 229,147. Tab appears three times and backspace twice, both of them inside prose describing them. The remaining twenty-nine do not occur once: not NUL, not the bell, not escape, not delete, not any of the ten transmission controls or the four device controls or the four information separators.
That is because they were instructions to a machine that no longer exists. A teletype was a typewriter on a wire, and the codes told it what to do physically: ring the bell, punch a tape, stop reading, start listening. Two of them survived because two of them moved paper. Carriage return slid the carriage back to the left margin; line feed rolled the platen up one line. A teletype needed both to start a new line, which is why a Windows line ending is still two bytes and why moving a file between operating systems can still ruin it.
The information separators are the saddest case. ASCII contains four characters — file, group, record and unit separator — designed precisely for the job that CSV does badly, with none of the quoting and escaping problems that make CSV parsing a minefield. They have been sitting at 0x1C to 0x1F since 1963 and essentially nothing uses them.
The standard does not agree with itself either
Nine ASCII characters carry more than one official name, and the table shows all of them. The most consequential is 0x0A, which the Unicode database lists as LINE FEED, NEW LINE and END OF LINE. Three names in one file for the character nobody can agree how to use is a fair summary of why line endings are a mess: the standard itself never settled whether it advances the paper or ends the line.
Tab is CHARACTER TABULATION and also HORIZONTAL TABULATION; 0x0B is LINE TABULATION and also VERTICAL TABULATION. Shift out and shift in are also LOCKING-SHIFT ONE and LOCKING-SHIFT ZERO, from a character-set switching scheme almost nobody encounters now.
One boundary case is worth knowing. Space is printable — the database names it SPACE, not <control> — yet it is the one printable character with an official abbreviation, SP, because it prints nothing visible and tables need something to show. It sits with the punctuation here for that reason.
Honest limits
The usage count is a measurement of one corpus, not a law. This site is TypeScript, HTML and English prose, so it says a great deal about what modern web source looks like and nothing about what a serial protocol or a point-of-sale terminal emits. Software that talks to a printer, a barcode scanner or a mainframe absolutely still uses these codes — that is where the device controls and transmission controls live on. What the number does establish is that they have vanished from ordinary text.
ASCII is also only the first 128 code points. Anything accented, anything in another script, every emoji and the vast majority of punctuation a real document uses are outside it. If a character is not on this page, ASCII simply has no number for it, and you want UTF-8 — which begins by agreeing with this table exactly and then keeps going.
Finally, the escape character is a special case worth flagging. It never appears in our corpus, but it is far from dead: it opens the terminal escape sequences that colour every command-line tool. It does not show up in stored text because it belongs to the wire between a program and a terminal rather than to files.
Why is it free?
Because it is a table of public facts. The page is static text with a search box that filters it in your browser — nothing is uploaded, nothing is stored, and no server is involved in reading it.
So there is no account, no sign-up and nothing held back. The underlying data is the Unicode Character Database, which anyone can download, and the script that turns it into this page is in the repository alongside it.