ASCII Table — Complete 0–127 Reference

Every ASCII character with its decimal, binary, hexadecimal and octal value — plus the control codes.

No signup, no tracking

ASCII is 128 characters — 33 control codes and 95 printable characters — each identified by a number from 0 to 127. This is the lookup table: every code in decimal, binary, hexadecimal and octal, with the name and purpose of each control character explained. Ctrl+F to find any character by name or code.

ASCII (American Standard Code for Information Interchange) was standardized in 1963 and remains the base of every modern text encoding, including UTF-8. The first 128 code points of Unicode are identical to ASCII by design, which is why a plain-ASCII file and its UTF-8 version look bit-for-bit the same.

Printable ASCII characters (32–126)

The characters you actually type: space, digits, uppercase and lowercase letters, and punctuation. Every keyboard on Earth speaks these.

DecHexBinOctCharNotes
32200100000040(space)Space
33210100001041!Exclamation
34220100010042"Double quote
35230100011043#Hash / number sign
36240100100044$Dollar sign
37250100101045%Percent
38260100110046&Ampersand
39270100111047'Single quote / apostrophe
40280101000050(Left parenthesis
41290101001051)Right parenthesis
422A0101010052*Asterisk
432B0101011053+Plus
442C0101100054,Comma
452D0101101055-Hyphen / minus
462E0101110056.Period / dot
472F0101111057/Slash
483001100000600Digit zero
493101100010611Digit one
503201100100622Digit two
513301100110633Digit three
523401101000644Digit four
533501101010655Digit five
543601101100666Digit six
553701101110677Digit seven
563801110000708Digit eight
573901110010719Digit nine
583A0111010072:Colon
593B0111011073;Semicolon
603C0111100074<Less than
613D0111101075=Equals
623E0111110076>Greater than
633F0111111077?Question mark
64401000000100@At sign
65411000001101AUppercase A
66421000010102BUppercase B
67431000011103CUppercase C
68441000100104DUppercase D
69451000101105EUppercase E
70461000110106FUppercase F
71471000111107GUppercase G
72481001000110HUppercase H
73491001001111IUppercase I
744A1001010112JUppercase J
754B1001011113KUppercase K
764C1001100114LUppercase L
774D1001101115MUppercase M
784E1001110116NUppercase N
794F1001111117OUppercase O
80501010000120PUppercase P
81511010001121QUppercase Q
82521010010122RUppercase R
83531010011123SUppercase S
84541010100124TUppercase T
85551010101125UUppercase U
86561010110126VUppercase V
87571010111127WUppercase W
88581011000130XUppercase X
89591011001131YUppercase Y
905A1011010132ZUppercase Z
915B1011011133[Left bracket
925C1011100134\Backslash
935D1011101135]Right bracket
945E1011110136^Caret
955F1011111137_Underscore
96601100000140`Backtick / grave accent
97611100001141aLowercase a
98621100010142bLowercase b
99631100011143cLowercase c
100641100100144dLowercase d
101651100101145eLowercase e
102661100110146fLowercase f
103671100111147gLowercase g
104681101000150hLowercase h
105691101001151iLowercase i
1066A1101010152jLowercase j
1076B1101011153kLowercase k
1086C1101100154lLowercase l
1096D1101101155mLowercase m
1106E1101110156nLowercase n
1116F1101111157oLowercase o
112701110000160pLowercase p
113711110001161qLowercase q
114721110010162rLowercase r
115731110011163sLowercase s
116741110100164tLowercase t
117751110101165uLowercase u
118761110110166vLowercase v
119771110111167wLowercase w
120781111000170xLowercase x
121791111001171yLowercase y
1227A1111010172zLowercase z
1237B1111011173{Left brace
1247C1111100174|Pipe / vertical bar
1257D1111101175}Right brace
1267E1111110176~Tilde

ASCII control characters (0–31 and 127)

These are the non-printable codes. Most were designed for teletypes and are now obsolete, but a handful drive modern text (line feed, carriage return, tab, null) and terminal control (escape).

DecHexBinCtrlNamePurpose
0000000000^@NULNull byte — string terminator in C
1010000001^ASOHStart of heading
2020000010^BSTXStart of text
3030000011^CETXEnd of text — Ctrl+C interrupt in shells
4040000100^DEOTEnd of transmission — Ctrl+D end of file
5050000101^EENQEnquiry
6060000110^FACKAcknowledge
7070000111^GBELBell — plays a terminal beep
8080001000^HBSBackspace
9090001001^IHTHorizontal tab
100A0001010^JLFLine feed — Unix newline (\n)
110B0001011^KVTVertical tab
120C0001100^LFFForm feed — page break
130D0001101^MCRCarriage return — half of Windows newline (\r\n)
140E0001110^NSOShift out
150F0001111^OSIShift in
16100010000^PDLEData link escape
17110010001^QDC1Device control 1 — XON
18120010010^RDC2Device control 2
19130010011^SDC3Device control 3 — XOFF
20140010100^TDC4Device control 4
21150010101^UNAKNegative acknowledge
22160010110^VSYNSynchronous idle
23170010111^WETBEnd of transmission block
24180011000^XCANCancel
25190011001^YEMEnd of medium
261A0011010^ZSUBSubstitute — Ctrl+Z suspend / DOS end-of-file
271B0011011^[ESCEscape — leads every ANSI terminal sequence
281C0011100^\FSFile separator
291D0011101^]GSGroup separator
301E0011110^^RSRecord separator
311F0011111^_USUnit separator
1277F1111111^?DELDelete — the highest ASCII value

Convert between characters and codes in code

Excel and Google Sheets — CODE returns the number for a character, CHAR returns the character for a number:
=CODE("A")     → 65
=CHAR(65)      → A
=CHAR(9)       → tab character
=CHAR(10)      → line feed (use in a wrapped cell for a manual line break)

Python — ord and chr do the same:
ord("A")       # 65
chr(65)        # "A"
chr(10)        # "\n"

JavaScript — charCodeAt and String.fromCharCode:
"A".charCodeAt(0)          // 65
String.fromCharCode(65)    // "A"
The two operations you need for every ASCII lookup, in the three most common environments.

What comes after 127 — extended ASCII and UTF-8

ASCII ends at 127. The bytes from 128 to 255 are NOT standard ASCII — they belong to whichever 8-bit codepage the file was saved in (Latin-1 / ISO-8859-1 in Western Europe, Windows-1252, various regional codepages). "Extended ASCII" is really a marketing term for that legacy byte range, and different codepages assign different characters to the same byte, which is the classic cause of "mojibake" (garbled characters) when a file is opened in the wrong encoding.

UTF-8 solved this by encoding every Unicode character (over 150,000 of them and counting) as one to four bytes, with the property that any pure-ASCII text is bit-for-bit identical in UTF-8. That is why saving a plain English text file as ASCII or as UTF-8 produces the same file. The binary-hex reference on this site covers the byte-level view, and the HTML entities tool converts between characters and their HTML entity names for the ones you cannot type directly.

Related tools