Skip to content
FormatKit

Free ASCII reference chart

ASCII table with every control code explained

This ASCII table is free and needs no signup: it lists all 128 standard code points plus the 128 Latin-1 and Windows-1252 extensions above them — 256 rows, each with its decimal, hexadecimal, octal and binary value, the character itself, its Unicode name and its HTML entity. The 33 control codes get the part other charts skip, with the C escape sequence and one line on what the code actually did. Everything is plain HTML rather than a script that draws a grid, so the chart is searchable, printable and readable with JavaScript switched off.

  • 100% free
  • No signup
  • All 256 rows
  • 33 control codes
  • 155 HTML entities

Type or paste — the last character in the box is the one described. Control codes leave it empty.

A prefix overrides the base: 0x41, \x41, U+0041, 0o101, 0b01000001, A and A all resolve to A.

Latin capital letter A
Decimal
65
Hexadecimal
0x41
Octal
0o101
Binary
0100 0001
Unicode code point
U+0041
HTML entity
A · A
UTF-8 bytes
0x41

The full ASCII table

Three blocks: the 33 control codes, the 95 printable characters, and the 128 extended codes that ASCII itself does not define. Binary is shown as the eight bits a byte actually carries, so the leading zero of every ASCII code is visible — ASCII is a 7-bit standard, and bit 8 was originally a parity bit.

Control characters — 0 to 31, and 127

None of these print a glyph; each one commanded a teletype or a data link. The escape column is C notation, which most languages copied — with two exceptions worth knowing: JavaScript has no \a, where "\a" is simply the letter a, and Python has no \e, so both need \x1B for Escape. HTML5 names only two codes in this range, 	 and 
.

The 33 ASCII control codes with decimal, hexadecimal, octal and binary values, mnemonic, escape sequence and purpose
DecHexOctBinaryAbbrNameEscapeWhat it does
00000000000000NULNull\0Ends a C string and pads records to a fixed length. It is not a space.
10100100000001SOHStart of Heading\x01Opens the addressing header of a transmission block.
20200200000010STXStart of Text\x02Closes the header and opens the message body.
30300300000011ETXEnd of Text\x03Closes the message body. Ctrl+C sends it, which is why Ctrl+C interrupts.
40400400000100EOTEnd of Transmission\x04Ends the whole transmission. Ctrl+D closes stdin in a Unix shell.
50500500000101ENQEnquiry\x05Asks the far end to identify itself and answer.
60600600000110ACKAcknowledge\x06Confirms the previous block arrived intact.
70700700000111BELBell\aRings the terminal bell, still audible in most emulators today.
80801000001000BSBackspace\bMoves the cursor one column left without erasing anything.
90901100001001HTHorizontal Tab\tJumps to the next tab stop, historically every eighth column.
100A01200001010LFLine Feed\nAdvances one line. On its own it is the Unix and macOS newline.
110B01300001011VTVertical Tab\vAdvances to the next vertical tab stop on a printer.
120C01400001100FFForm Feed\fEjects the page on a printer and clears the screen on a terminal.
130D01500001101CRCarriage Return\rReturns the cursor to column one. CR followed by LF is the Windows newline.
140E01600001110SOShift Out\x0ESwitches the printer to an alternate character set.
150F01700001111SIShift In\x0FSwitches back to the standard character set.
161002000010000DLEData Link Escape\x10Marks the bytes that follow as link control, not payload.
171102100010001DC1Device Control 1 (XON)\x11Resumes a paused stream. Ctrl+Q sends it.
181202200010010DC2Device Control 2\x12Device-specific; the standard deliberately leaves its meaning open.
191302300010011DC3Device Control 3 (XOFF)\x13Pauses a stream. Ctrl+S sends it, which is why Ctrl+S appears to freeze a terminal.
201402400010100DC4Device Control 4\x14Device-specific, conventionally a stop or halt signal.
211502500010101NAKNegative Acknowledge\x15Reports the previous block as corrupt and asks for a resend.
221602600010110SYNSynchronous Idle\x16Filler that keeps a synchronous link in step while nothing is being sent.
231702700010111ETBEnd of Transmission Block\x17Ends one block of a message that spans several.
241803000011000CANCancel\x18Discards everything sent since the last block boundary.
251903100011001EMEnd of Medium\x19Marks the physical end of the tape, card or reel of paper.
261A03200011010SUBSubstitute\x1AStands in for a character that arrived damaged, and doubles as the DOS end-of-file, Ctrl+Z.
271B03300011011ESCEscape\x1BStarts an escape sequence — the first byte of every ANSI colour code.
281C03400011100FSFile Separator\x1CSeparates files in a stream, the outermost of the four separators.
291D03500011101GSGroup Separator\x1DSeparates groups of records inside a file.
301E03600011110RSRecord Separator\x1ESeparates records; RFC 7464 JSON text sequences still use it.
311F03700011111USUnit Separator\x1FSeparates fields inside a record — the delimiter CSV never adopted.
1277F17701111111DELDelete\x7FPunched out all seven holes on paper tape, erasing whatever character was there.

Printable ASCII — 32 to 126

The 95 characters every system agrees on. Note the arithmetic built into the layout: the digits start at 48 (0x30) so masking off the high nibble gives the numeric value, and each capital letter sits exactly 32 below its lowercase twin, so flipping the 0x20 bit changes case.

The 95 printable ASCII characters, 32 to 126, with decimal, hexadecimal, octal and binary values, name and HTML entity
DecHexOctBinaryCharNameHTML entity
322004000100000SPSpace
332104100100001!Exclamation mark!
342204200100010"Quotation mark"
352304300100011#Number sign#
362404400100100$Dollar sign$
372504500100101%Percent sign%
382604600100110&Ampersand&
392704700100111'Apostrophe'
402805000101000(Left parenthesis(
412905100101001)Right parenthesis)
422A05200101010*Asterisk*
432B05300101011+Plus sign+
442C05400101100,Comma,
452D05500101101-Hyphen-minus
462E05600101110.Full stop.
472F05700101111/Solidus (slash)/
4830060001100000Digit zero
4931061001100011Digit one
5032062001100102Digit two
5133063001100113Digit three
5234064001101004Digit four
5335065001101015Digit five
5436066001101106Digit six
5537067001101117Digit seven
5638070001110008Digit eight
5739071001110019Digit nine
583A07200111010:Colon:
593B07300111011;Semicolon;
603C07400111100<Less-than sign&lt;
613D07500111101=Equals sign&equals;
623E07600111110>Greater-than sign&gt;
633F07700111111?Question mark&quest;
644010001000000@Commercial at&commat;
654110101000001ALatin capital letter A
664210201000010BLatin capital letter B
674310301000011CLatin capital letter C
684410401000100DLatin capital letter D
694510501000101ELatin capital letter E
704610601000110FLatin capital letter F
714710701000111GLatin capital letter G
724811001001000HLatin capital letter H
734911101001001ILatin capital letter I
744A11201001010JLatin capital letter J
754B11301001011KLatin capital letter K
764C11401001100LLatin capital letter L
774D11501001101MLatin capital letter M
784E11601001110NLatin capital letter N
794F11701001111OLatin capital letter O
805012001010000PLatin capital letter P
815112101010001QLatin capital letter Q
825212201010010RLatin capital letter R
835312301010011SLatin capital letter S
845412401010100TLatin capital letter T
855512501010101ULatin capital letter U
865612601010110VLatin capital letter V
875712701010111WLatin capital letter W
885813001011000XLatin capital letter X
895913101011001YLatin capital letter Y
905A13201011010ZLatin capital letter Z
915B13301011011[Left square bracket&lsqb;
925C13401011100\Reverse solidus (backslash)&bsol;
935D13501011101]Right square bracket&rsqb;
945E13601011110^Circumflex accent&Hat;
955F13701011111_Low line (underscore)&lowbar;
966014001100000`Grave accent&grave;
976114101100001aLatin small letter a
986214201100010bLatin small letter b
996314301100011cLatin small letter c
1006414401100100dLatin small letter d
1016514501100101eLatin small letter e
1026614601100110fLatin small letter f
1036714701100111gLatin small letter g
1046815001101000hLatin small letter h
1056915101101001iLatin small letter i
1066A15201101010jLatin small letter j
1076B15301101011kLatin small letter k
1086C15401101100lLatin small letter l
1096D15501101101mLatin small letter m
1106E15601101110nLatin small letter n
1116F15701101111oLatin small letter o
1127016001110000pLatin small letter p
1137116101110001qLatin small letter q
1147216201110010rLatin small letter r
1157316301110011sLatin small letter s
1167416401110100tLatin small letter t
1177516501110101uLatin small letter u
1187616601110110vLatin small letter v
1197716701110111wLatin small letter w
1207817001111000xLatin small letter x
1217917101111001yLatin small letter y
1227A17201111010zLatin small letter z
1237B17301111011{Left curly bracket&lcub;
1247C17401111100|Vertical line (pipe)&verbar;
1257D17501111101}Right curly bracket&rcub;
1267E17601111110~Tilde

Extended — 128 to 255 (Latin-1 and Windows-1252)

Strictly speaking there is no such thing as extended ASCII: ASCII ends at 127. What follows is ISO-8859-1 from 160 upwards, and Windows-1252 in the 128 to 159 block that ISO-8859-1 reserves for unprintable C1 controls. Five of those slots — 129, 141, 143, 144 and 157 — are left undefined even by Windows-1252.

Extended codes 128 to 255 as Latin-1 and Windows-1252 define them, with decimal, hexadecimal, octal and binary values, name and HTML entity
DecHexOctBinaryCharNameHTML entity
1288020010000000Euro sign&euro;
1298120110000001Unassigned in Windows-1252 (C1 control area)
1308220210000010Single low-9 quotation mark&sbquo;
1318320310000011ƒLatin small letter f with hook&fnof;
1328420410000100Double low-9 quotation mark&bdquo;
1338520510000101Horizontal ellipsis&hellip;
1348620610000110Dagger&dagger;
1358720710000111Double dagger&Dagger;
1368821010001000ˆModifier letter circumflex accent&circ;
1378921110001001Per mille sign&permil;
1388A21210001010ŠLatin capital letter S with caron&Scaron;
1398B21310001011Single left-pointing angle quotation mark&lsaquo;
1408C21410001100ŒLatin capital ligature OE&OElig;
1418D21510001101Unassigned in Windows-1252 (C1 control area)
1428E21610001110ŽLatin capital letter Z with caron&Zcaron;
1438F21710001111Unassigned in Windows-1252 (C1 control area)
1449022010010000Unassigned in Windows-1252 (C1 control area)
1459122110010001Left single quotation mark&lsquo;
1469222210010010Right single quotation mark&rsquo;
1479322310010011Left double quotation mark&ldquo;
1489422410010100Right double quotation mark&rdquo;
1499522510010101Bullet&bull;
1509622610010110En dash&ndash;
1519722710010111Em dash&mdash;
1529823010011000˜Small tilde&tilde;
1539923110011001Trade mark sign&trade;
1549A23210011010šLatin small letter s with caron&scaron;
1559B23310011011Single right-pointing angle quotation mark&rsaquo;
1569C23410011100œLatin small ligature oe&oelig;
1579D23510011101Unassigned in Windows-1252 (C1 control area)
1589E23610011110žLatin small letter z with caron&zcaron;
1599F23710011111ŸLatin capital letter Y with diaeresis&Yuml;
160A024010100000NBSPNo-break space&nbsp;
161A124110100001¡Inverted exclamation mark&iexcl;
162A224210100010¢Cent sign&cent;
163A324310100011£Pound sign&pound;
164A424410100100¤Currency sign&curren;
165A524510100101¥Yen sign&yen;
166A624610100110¦Broken bar&brvbar;
167A724710100111§Section sign&sect;
168A825010101000¨Diaeresis&uml;
169A925110101001©Copyright sign&copy;
170AA25210101010ªFeminine ordinal indicator&ordf;
171AB25310101011«Left-pointing double angle quotation mark&laquo;
172AC25410101100¬Not sign&not;
173AD25510101101SHYSoft hyphen&shy;
174AE25610101110®Registered sign&reg;
175AF25710101111¯Macron&macr;
176B026010110000°Degree sign&deg;
177B126110110001±Plus-minus sign&plusmn;
178B226210110010²Superscript two&sup2;
179B326310110011³Superscript three&sup3;
180B426410110100´Acute accent&acute;
181B526510110101µMicro sign&micro;
182B626610110110Pilcrow sign&para;
183B726710110111·Middle dot&middot;
184B827010111000¸Cedilla&cedil;
185B927110111001¹Superscript one&sup1;
186BA27210111010ºMasculine ordinal indicator&ordm;
187BB27310111011»Right-pointing double angle quotation mark&raquo;
188BC27410111100¼Vulgar fraction one quarter&frac14;
189BD27510111101½Vulgar fraction one half&frac12;
190BE27610111110¾Vulgar fraction three quarters&frac34;
191BF27710111111¿Inverted question mark&iquest;
192C030011000000ÀLatin capital letter A with grave&Agrave;
193C130111000001ÁLatin capital letter A with acute&Aacute;
194C230211000010ÂLatin capital letter A with circumflex&Acirc;
195C330311000011ÃLatin capital letter A with tilde&Atilde;
196C430411000100ÄLatin capital letter A with diaeresis&Auml;
197C530511000101ÅLatin capital letter A with ring above&Aring;
198C630611000110ÆLatin capital letter AE&AElig;
199C730711000111ÇLatin capital letter C with cedilla&Ccedil;
200C831011001000ÈLatin capital letter E with grave&Egrave;
201C931111001001ÉLatin capital letter E with acute&Eacute;
202CA31211001010ÊLatin capital letter E with circumflex&Ecirc;
203CB31311001011ËLatin capital letter E with diaeresis&Euml;
204CC31411001100ÌLatin capital letter I with grave&Igrave;
205CD31511001101ÍLatin capital letter I with acute&Iacute;
206CE31611001110ÎLatin capital letter I with circumflex&Icirc;
207CF31711001111ÏLatin capital letter I with diaeresis&Iuml;
208D032011010000ÐLatin capital letter Eth&ETH;
209D132111010001ÑLatin capital letter N with tilde&Ntilde;
210D232211010010ÒLatin capital letter O with grave&Ograve;
211D332311010011ÓLatin capital letter O with acute&Oacute;
212D432411010100ÔLatin capital letter O with circumflex&Ocirc;
213D532511010101ÕLatin capital letter O with tilde&Otilde;
214D632611010110ÖLatin capital letter O with diaeresis&Ouml;
215D732711010111×Multiplication sign&times;
216D833011011000ØLatin capital letter O with stroke&Oslash;
217D933111011001ÙLatin capital letter U with grave&Ugrave;
218DA33211011010ÚLatin capital letter U with acute&Uacute;
219DB33311011011ÛLatin capital letter U with circumflex&Ucirc;
220DC33411011100ÜLatin capital letter U with diaeresis&Uuml;
221DD33511011101ÝLatin capital letter Y with acute&Yacute;
222DE33611011110ÞLatin capital letter Thorn&THORN;
223DF33711011111ßLatin small letter sharp s&szlig;
224E034011100000àLatin small letter a with grave&agrave;
225E134111100001áLatin small letter a with acute&aacute;
226E234211100010âLatin small letter a with circumflex&acirc;
227E334311100011ãLatin small letter a with tilde&atilde;
228E434411100100äLatin small letter a with diaeresis&auml;
229E534511100101åLatin small letter a with ring above&aring;
230E634611100110æLatin small letter ae&aelig;
231E734711100111çLatin small letter c with cedilla&ccedil;
232E835011101000èLatin small letter e with grave&egrave;
233E935111101001éLatin small letter e with acute&eacute;
234EA35211101010êLatin small letter e with circumflex&ecirc;
235EB35311101011ëLatin small letter e with diaeresis&euml;
236EC35411101100ìLatin small letter i with grave&igrave;
237ED35511101101íLatin small letter i with acute&iacute;
238EE35611101110îLatin small letter i with circumflex&icirc;
239EF35711101111ïLatin small letter i with diaeresis&iuml;
240F036011110000ðLatin small letter eth&eth;
241F136111110001ñLatin small letter n with tilde&ntilde;
242F236211110010òLatin small letter o with grave&ograve;
243F336311110011óLatin small letter o with acute&oacute;
244F436411110100ôLatin small letter o with circumflex&ocirc;
245F536511110101õLatin small letter o with tilde&otilde;
246F636611110110öLatin small letter o with diaeresis&ouml;
247F736711110111÷Division sign&divide;
248F837011111000øLatin small letter o with stroke&oslash;
249F937111111001ùLatin small letter u with grave&ugrave;
250FA37211111010úLatin small letter u with acute&uacute;
251FB37311111011ûLatin small letter u with circumflex&ucirc;
252FC37411111100üLatin small letter u with diaeresis&uuml;
253FD37511111101ýLatin small letter y with acute&yacute;
254FE37611111110þLatin small letter thorn&thorn;
255FF37711111111ÿLatin small letter y with diaeresis&yuml;

How to use this ASCII chart

One character at a time in the converter, or the whole 256-row chart filtered down to what you need.

  1. Look one character up

    Type a character into the Character box and its decimal, hex, octal, binary, Unicode code point, HTML entity and UTF-8 bytes appear beside it. Go the other way by typing into the Code box: it accepts 65, 0x41, \x41, U+0041, 0o101, 0b01000001, &#65; and &#x41;, and the prefix always beats the base selected next to it.

  2. Narrow the chart

    Use the four range buttons to show only the control codes, only the 95 printable characters or only the 128 extended ones, and type in the search box to filter by character, name, mnemonic, HTML entity or code in any of the four bases. Searching 1b finds ESC, searching euro finds 128, and searching ÷ finds 247.

  3. Copy a row

    Choose what a click should copy — the character, the decimal, hex or binary code, or the HTML entity — then click any row in the chart. The copy control disappears in browsers that block clipboard writes, and every value in the converter has its own Copy button as a fallback.

Technical specifications

Code points listed256 — 0 to 127 from ANSI X3.4-1986 (US-ASCII) and 128 to 255 from ISO-8859-1 with the Windows-1252 substitutions that browsers actually apply
Columns per rowDecimal, hexadecimal, octal, 8-bit binary, the character, its Unicode name and its named HTML entity; control rows swap the character for a mnemonic, a C escape and a description
Control codes documented33 — 0 to 31 plus 127, each with abbreviation, escape sequence and one line on what the code did to a teletype
Named HTML entities155 of the 256 rows have one: 32 in the ASCII range including &Tab; and &NewLine;, and 123 above it. The other 101 have only the numeric forms &#N; and &#xN;
Converter inputA character, or a code written as 65, 0x41, \x41, U+0041, 0o101, 0b01000001, &#65; or &#x41; — and any Unicode code point up to U+10FFFF, reported with its UTF-8 bytes
SearchMatches character, name, mnemonic, escape sequence, HTML entity and the code in all four bases; filtering all 256 rows takes about 2 ms
RenderingThe whole chart is static HTML — all 256 rows are present with JavaScript disabled, and the search, range and copy controls are the only scripted part
Processing locationYour browser — nothing typed into the converter or the search box is sent anywhere, and the page works offline once loaded

Frequently asked questions

What is the difference between ASCII and UTF-8?

ASCII defines 128 characters numbered 0 to 127, while UTF-8 is an encoding that reproduces all 128 of them byte for byte and then keeps going to 1,114,112 code points. That compatibility was the design goal: a file containing only ASCII characters is already valid UTF-8, unchanged. The difference appears above 127, where ASCII simply stops and UTF-8 spends two to four bytes per character — é is a single byte 233 in Latin-1 but the two bytes 0xC3 0xA9 in UTF-8.

Why does DEL come after the letters?

Because DEL is 127, all seven bits set, and on paper tape that meant punching out every hole in a column. A hole cannot be un-punched, so the only code that could overwrite any other was the one with every bit on — whatever was there became 1111111. That is why delete sits alone at the end of the chart instead of alongside the other control codes at the start.

Is character 127 printable?

No — 127 is DEL, a control character, so ASCII has 95 printable characters (32 to 126) and 33 control codes (0 to 31 plus 127). Terminals treat DEL as an editing instruction rather than a glyph, which is also why the Backspace key on most keyboards actually transmits 127 and not 8, the code named Backspace.

Why does Ctrl+C interrupt a program?

Because a terminal turns Ctrl plus a letter into that letter's code with the top three bits cleared, and C is 67, so Ctrl+C transmits 3 — ETX, End of Text. The same arithmetic explains the rest of the muscle memory: Ctrl+D is 4 (EOT, so end of input), Ctrl+S is 19 (XOFF, pause the stream, which is why it appears to freeze a terminal), Ctrl+Q is 17 (XON, resume) and Ctrl+[ is 27 (ESC).

Which ASCII characters need an HTML entity?

Only five genuinely need escaping: & as &amp;, < as &lt;, > as &gt;, the double quote as &quot; inside a double-quoted attribute and the apostrophe as &apos; inside a single-quoted one. HTML5 defines named references for far more than that — this chart lists 155 of them, including &excl; for the exclamation mark and &Tab; for code 9 — but those are conveniences, not requirements. The numeric forms &#65; and &#x41; work for every code point whether a name exists or not.

What are the codes from 128 to 255?

They are not ASCII at all, so their meaning depends entirely on the encoding in use. ISO-8859-1 (Latin-1) puts Western European letters and punctuation in 160 to 255 and reserves 128 to 159 for C1 control codes that print nothing; Windows-1252 fills those 32 slots with curly quotes, the en and em dash, the euro sign and the ellipsis instead. The HTML standard instructs browsers to decode any page labelled ISO-8859-1 as Windows-1252 precisely because the mislabelling is so common, so this chart shows the Windows-1252 characters.

Why do my files show é instead of é?

The bytes are correct UTF-8 being read as Latin-1 or Windows-1252. UTF-8 stores é as the two bytes 0xC3 0xA9; read one byte at a time under Latin-1, 0xC3 is à and 0xA9 is ©, so é appears on screen. Fix the declared encoding rather than the visible text, because re-saving the mangled version encodes the mistake a second time and makes the original much harder to recover.

About the ASCII character set

ASCII was published in 1963 and settled into its final shape in 1967, and its 7-bit width was a hardware decision: teletypes sent eight bits per character and the eighth was a parity bit, leaving 128 usable codes. What makes the standard worth reading rather than just looking up is how deliberately those 128 slots were arranged. The digits begin at 48 so that masking a byte with 0x0F turns the character into the number it represents. Capitals begin at 65 and lowercase at 97, exactly 32 apart, so c | 0x20 lowercases a letter and c & 0xDF uppercases it, without a lookup table. The control codes occupy the first 32 slots so that clearing the top three bits of a letter produces one, which is exactly what a terminal does when you hold Ctrl. Seeing those patterns is easier in binary than in decimal, and the decimal to binary converter is the quicker way to check one by hand.

Everything above 127 is where the trouble starts, because ASCII never defined it and a dozen incompatible standards filled the gap. ISO-8859-1 covers Western Europe from 160 up and leaves 128 to 159 as C1 control codes; Windows-1252 uses those 32 slots for typographic punctuation, which is why a Word document pasted into a Latin-1 system sprays question marks where the curly quotes were. The HTML standard resolved the argument by ruling that a page declaring charset=iso-8859-1 must be decoded as Windows-1252 anyway, so in a browser the two labels are the same thing. UTF-8 ended the era by encoding 0 to 127 identically to ASCII and using multi-byte sequences above it, which is why mislabelled text now produces é and ’ rather than silence. If you are writing any of these characters into markup, escaping them with HTML encoding sidesteps the encoding question entirely.

Plenty of the control codes are still load-bearing. LF and CR remain the whole reason text files differ between Unix and Windows. ESC begins every ANSI sequence a terminal uses to colour its output. NUL terminates a C string, which is why a filename containing one is a security bug rather than a curiosity. DC3 and DC1 survive as XON and XOFF, still bound to Ctrl+S and Ctrl+Q. And RS, the record separator at 30, was revived by RFC 7464 to delimit JSON documents in a stream — a use its designers would have recognised. What all of them share is that they cannot be typed and rarely survive a copy-paste, so when you need to move bytes 0 to 31 through a text-only channel intact, base64 is the usual answer.

What this page sends anywhere

Nothing. The chart is baked into the HTML at build time and the converter runs in your own tab, so the character you look up and the term you search for stay on your machine — there is no request behind either of them. Save the page and the whole 256-row reference works on a plane.