Browser processing Input is processed on your device. Privacy & storage

ASCII Table

All 128 ASCII characters in decimal, hex, octal and binary, with HTML entities and control-character names — plus the 128–255 extended range.

Reference 128 characters
DecHexOct BinaryChar HTMLName
0 00 000 00000000 ^@ � NUL — null
1 01 001 00000001 ^A  SOH — start of heading
2 02 002 00000010 ^B  STX — start of text
3 03 003 00000011 ^C  ETX — end of text
4 04 004 00000100 ^D  EOT — end of transmission
5 05 005 00000101 ^E  ENQ — enquiry
6 06 006 00000110 ^F  ACK — acknowledge
7 07 007 00000111 ^G  BEL — bell
8 08 010 00001000 ^H  BS — backspace
9 09 011 00001001 ^I 	 HT — horizontal tab
10 0A 012 00001010 ^J 
 LF — line feed
11 0B 013 00001011 ^K  VT — vertical tab
12 0C 014 00001100 ^L  FF — form feed
13 0D 015 00001101 ^M 
 CR — carriage return
14 0E 016 00001110 ^N  SO — shift out
15 0F 017 00001111 ^O  SI — shift in
16 10 020 00010000 ^P  DLE — data link escape
17 11 021 00010001 ^Q  DC1 — device control 1
18 12 022 00010010 ^R  DC2 — device control 2
19 13 023 00010011 ^S  DC3 — device control 3
20 14 024 00010100 ^T  DC4 — device control 4
21 15 025 00010101 ^U  NAK — negative acknowledge
22 16 026 00010110 ^V  SYN — synchronous idle
23 17 027 00010111 ^W  ETB — end of block
24 18 030 00011000 ^X  CAN — cancel
25 19 031 00011001 ^Y  EM — end of medium
26 1A 032 00011010 ^Z  SUB — substitute
27 1B 033 00011011 ^[  ESC — escape
28 1C 034 00011100 ^\  FS — file separator
29 1D 035 00011101 ^]  GS — group separator
30 1E 036 00011110 ^^  RS — record separator
31 1F 037 00011111 ^_  US — unit separator
32 20 040 00100000 ␠   space
33 21 041 00100001 ! ! exclamation mark
34 22 042 00100010 " " quotation mark
35 23 043 00100011 # # number sign
36 24 044 00100100 $ $ dollar sign
37 25 045 00100101 % % percent sign
38 26 046 00100110 & & ampersand
39 27 047 00100111 ' ' apostrophe
40 28 050 00101000 ( ( left parenthesis
41 29 051 00101001 ) ) right parenthesis
42 2A 052 00101010 * * asterisk
43 2B 053 00101011 + + plus sign
44 2C 054 00101100 , , comma
45 2D 055 00101101 - - hyphen-minus
46 2E 056 00101110 . . full stop
47 2F 057 00101111 / / solidus
48 30 060 00110000 0 0 digit 0
49 31 061 00110001 1 1 digit 1
50 32 062 00110010 2 2 digit 2
51 33 063 00110011 3 3 digit 3
52 34 064 00110100 4 4 digit 4
53 35 065 00110101 5 5 digit 5
54 36 066 00110110 6 6 digit 6
55 37 067 00110111 7 7 digit 7
56 38 070 00111000 8 8 digit 8
57 39 071 00111001 9 9 digit 9
58 3A 072 00111010 : : colon
59 3B 073 00111011 ; &#59; semicolon
60 3C 074 00111100 < &lt; less-than sign
61 3D 075 00111101 = &#61; equals sign
62 3E 076 00111110 > &gt; greater-than sign
63 3F 077 00111111 ? &#63; question mark
64 40 100 01000000 @ &#64; commercial at
65 41 101 01000001 A &#65; uppercase letter A
66 42 102 01000010 B &#66; uppercase letter B
67 43 103 01000011 C &#67; uppercase letter C
68 44 104 01000100 D &#68; uppercase letter D
69 45 105 01000101 E &#69; uppercase letter E
70 46 106 01000110 F &#70; uppercase letter F
71 47 107 01000111 G &#71; uppercase letter G
72 48 110 01001000 H &#72; uppercase letter H
73 49 111 01001001 I &#73; uppercase letter I
74 4A 112 01001010 J &#74; uppercase letter J
75 4B 113 01001011 K &#75; uppercase letter K
76 4C 114 01001100 L &#76; uppercase letter L
77 4D 115 01001101 M &#77; uppercase letter M
78 4E 116 01001110 N &#78; uppercase letter N
79 4F 117 01001111 O &#79; uppercase letter O
80 50 120 01010000 P &#80; uppercase letter P
81 51 121 01010001 Q &#81; uppercase letter Q
82 52 122 01010010 R &#82; uppercase letter R
83 53 123 01010011 S &#83; uppercase letter S
84 54 124 01010100 T &#84; uppercase letter T
85 55 125 01010101 U &#85; uppercase letter U
86 56 126 01010110 V &#86; uppercase letter V
87 57 127 01010111 W &#87; uppercase letter W
88 58 130 01011000 X &#88; uppercase letter X
89 59 131 01011001 Y &#89; uppercase letter Y
90 5A 132 01011010 Z &#90; uppercase letter Z
91 5B 133 01011011 [ &#91; left square bracket
92 5C 134 01011100 \ &#92; reverse solidus
93 5D 135 01011101 ] &#93; right square bracket
94 5E 136 01011110 ^ &#94; circumflex
95 5F 137 01011111 _ &#95; low line
96 60 140 01100000 ` &#96; grave accent
97 61 141 01100001 a &#97; lowercase letter a
98 62 142 01100010 b &#98; lowercase letter b
99 63 143 01100011 c &#99; lowercase letter c
100 64 144 01100100 d &#100; lowercase letter d
101 65 145 01100101 e &#101; lowercase letter e
102 66 146 01100110 f &#102; lowercase letter f
103 67 147 01100111 g &#103; lowercase letter g
104 68 150 01101000 h &#104; lowercase letter h
105 69 151 01101001 i &#105; lowercase letter i
106 6A 152 01101010 j &#106; lowercase letter j
107 6B 153 01101011 k &#107; lowercase letter k
108 6C 154 01101100 l &#108; lowercase letter l
109 6D 155 01101101 m &#109; lowercase letter m
110 6E 156 01101110 n &#110; lowercase letter n
111 6F 157 01101111 o &#111; lowercase letter o
112 70 160 01110000 p &#112; lowercase letter p
113 71 161 01110001 q &#113; lowercase letter q
114 72 162 01110010 r &#114; lowercase letter r
115 73 163 01110011 s &#115; lowercase letter s
116 74 164 01110100 t &#116; lowercase letter t
117 75 165 01110101 u &#117; lowercase letter u
118 76 166 01110110 v &#118; lowercase letter v
119 77 167 01110111 w &#119; lowercase letter w
120 78 170 01111000 x &#120; lowercase letter x
121 79 171 01111001 y &#121; lowercase letter y
122 7A 172 01111010 z &#122; lowercase letter z
123 7B 173 01111011 { &#123; left curly bracket
124 7C 174 01111100 | &#124; vertical line
125 7D 175 01111101 } &#125; right curly bracket
126 7E 176 01111110 ~ &#126; tilde
127 7F 177 01111111 ^? &#127; DEL — delete

ASCII in one paragraph

ASCII defines 128 characters using 7 bits. Codes 0–31 and 127 are control characters — they tell a terminal or printer to do something rather than drawing a glyph, which is why you see them written as ^A or <LF>. Codes 32–126 are the printable set: space, punctuation, digits, then uppercase and lowercase letters. Everything after that is an extension, not ASCII.

Where the extensions come from

Latin-1 (ISO-8859-1) uses the eighth bit to add 128 more characters: accented letters for Western European languages, plus punctuation like ©, ° and £. Codes 128–159 are technically control codes there and not printable.

Windows-1252 — what most people actually hit — kept the Latin-1 layout but put printable characters in those spare 128–159 slots: curly quotes, en and em dashes, the euro sign and the trademark symbol. That single difference is the source of the most common mojibake on the web: UTF-8 text decoded as Windows-1252 turns ’ into ’. The Extended tab above shows the Windows-1252 character for each of those slots.

Unicode is the current answer: it has a code point for essentially every character in every script. UTF-8 is the encoding that made it practical on the web, because its first 128 code points are byte-for-byte identical to ASCII — every existing ASCII document is already valid UTF-8.

The names you will meet in real error messages

  • LF (10) and CR (13) — Unix ends a line with LF, Windows with CRLF, and old Macs used a lone CR. This is why “invisible” differences between files exist.
  • HT (9) — the tab. FF (12) ends a page in a printer stream.
  • ESC (27) — starts terminal escape sequences, so a stray one can recolour or clear your screen.
  • NUL (0) — a zero byte. Most string handling in C stops at it, which is why embedded NULs break parsers.
  • DEL (127) — originally “erase the character punched out on the paper tape”, which is why it sits above the printable range.

FAQ

How do I type an ASCII character I cannot find on the keyboard?

On Windows, hold Alt and type the decimal code on the numeric keypad — Alt+0169 gives ©, and the leading zero forces the Windows-1252 interpretation. On macOS, Option plus a key gives the common ones (Option+G = ©). Or skip the keyboard and paste the HTML entity.

Why does Alt+number produce different characters on different machines?

Because those codes are interpreted in the system's current code page, not in Unicode. The four-digit 0xxx form is the reliable one on Windows; a three-digit code can land in the OEM code page instead.

Is ASCII still used anywhere?

Constantly — in file magic numbers, in protocol delimiters, in C string handling, and as the shared subset of UTF-8. It is not going anywhere; it just stopped being the whole story.

Why is my text full of é and ’?

UTF-8 bytes were decoded as Latin-1 or Windows-1252. The fix is at the source: send Content-Type: text/html; charset=utf-8 and save the file as UTF-8. Re-encoding the broken output usually makes it worse.