ASCII Table

The full ASCII table in decimal, hexadecimal, octal and binary, with every control character explained.

Runs locally

128 characters

Dec Hex Oct Binary Char Meaning
0 0x00 0000 00000000 NUL Null — string terminator in C
1 0x01 0001 00000001 SOH Start of heading
2 0x02 0002 00000010 STX Start of text
3 0x03 0003 00000011 ETX End of text — what Ctrl+C sends
4 0x04 0004 00000100 EOT End of transmission — Ctrl+D
5 0x05 0005 00000101 ENQ Enquiry
6 0x06 0006 00000110 ACK Acknowledge
7 0x07 0007 00000111 BEL Bell — terminal beep
8 0x08 0010 00001000 BS Backspace
9 0x09 0011 00001001 HT Horizontal tab — \t
10 0x0A 0012 00001010 LF Line feed — \n, newline on Unix
11 0x0B 0013 00001011 VT Vertical tab
12 0x0C 0014 00001100 FF Form feed — page break
13 0x0D 0015 00001101 CR Carriage return — \r, pairs with LF on Windows
14 0x0E 0016 00001110 SO Shift out
15 0x0F 0017 00001111 SI Shift in
16 0x10 0020 00010000 DLE Data link escape
17 0x11 0021 00010001 DC1 Device control 1 — XON
18 0x12 0022 00010010 DC2 Device control 2
19 0x13 0023 00010011 DC3 Device control 3 — XOFF
20 0x14 0024 00010100 DC4 Device control 4
21 0x15 0025 00010101 NAK Negative acknowledge
22 0x16 0026 00010110 SYN Synchronous idle
23 0x17 0027 00010111 ETB End of transmission block
24 0x18 0030 00011000 CAN Cancel
25 0x19 0031 00011001 EM End of medium
26 0x1A 0032 00011010 SUB Substitute — Ctrl+Z
27 0x1B 0033 00011011 ESC Escape — starts ANSI terminal sequences
28 0x1C 0034 00011100 FS File separator
29 0x1D 0035 00011101 GS Group separator
30 0x1E 0036 00011110 RS Record separator
31 0x1F 0037 00011111 US Unit separator
32 0x20 0040 00100000 (space)
33 0x21 0041 00100001 !
34 0x22 0042 00100010 "
35 0x23 0043 00100011 #
36 0x24 0044 00100100 $
37 0x25 0045 00100101 %
38 0x26 0046 00100110 &
39 0x27 0047 00100111 '
40 0x28 0050 00101000 (
41 0x29 0051 00101001 )
42 0x2A 0052 00101010 *
43 0x2B 0053 00101011 +
44 0x2C 0054 00101100 ,
45 0x2D 0055 00101101 -
46 0x2E 0056 00101110 .
47 0x2F 0057 00101111 /
48 0x30 0060 00110000 0
49 0x31 0061 00110001 1
50 0x32 0062 00110010 2
51 0x33 0063 00110011 3
52 0x34 0064 00110100 4
53 0x35 0065 00110101 5
54 0x36 0066 00110110 6
55 0x37 0067 00110111 7
56 0x38 0070 00111000 8
57 0x39 0071 00111001 9
58 0x3A 0072 00111010 :
59 0x3B 0073 00111011 ;
60 0x3C 0074 00111100 <
61 0x3D 0075 00111101 =
62 0x3E 0076 00111110 >
63 0x3F 0077 00111111 ?
64 0x40 0100 01000000 @
65 0x41 0101 01000001 A
66 0x42 0102 01000010 B
67 0x43 0103 01000011 C
68 0x44 0104 01000100 D
69 0x45 0105 01000101 E
70 0x46 0106 01000110 F
71 0x47 0107 01000111 G
72 0x48 0110 01001000 H
73 0x49 0111 01001001 I
74 0x4A 0112 01001010 J
75 0x4B 0113 01001011 K
76 0x4C 0114 01001100 L
77 0x4D 0115 01001101 M
78 0x4E 0116 01001110 N
79 0x4F 0117 01001111 O
80 0x50 0120 01010000 P
81 0x51 0121 01010001 Q
82 0x52 0122 01010010 R
83 0x53 0123 01010011 S
84 0x54 0124 01010100 T
85 0x55 0125 01010101 U
86 0x56 0126 01010110 V
87 0x57 0127 01010111 W
88 0x58 0130 01011000 X
89 0x59 0131 01011001 Y
90 0x5A 0132 01011010 Z
91 0x5B 0133 01011011 [
92 0x5C 0134 01011100 \
93 0x5D 0135 01011101 ]
94 0x5E 0136 01011110 ^
95 0x5F 0137 01011111 _
96 0x60 0140 01100000 `
97 0x61 0141 01100001 a
98 0x62 0142 01100010 b
99 0x63 0143 01100011 c
100 0x64 0144 01100100 d
101 0x65 0145 01100101 e
102 0x66 0146 01100110 f
103 0x67 0147 01100111 g
104 0x68 0150 01101000 h
105 0x69 0151 01101001 i
106 0x6A 0152 01101010 j
107 0x6B 0153 01101011 k
108 0x6C 0154 01101100 l
109 0x6D 0155 01101101 m
110 0x6E 0156 01101110 n
111 0x6F 0157 01101111 o
112 0x70 0160 01110000 p
113 0x71 0161 01110001 q
114 0x72 0162 01110010 r
115 0x73 0163 01110011 s
116 0x74 0164 01110100 t
117 0x75 0165 01110101 u
118 0x76 0166 01110110 v
119 0x77 0167 01110111 w
120 0x78 0170 01111000 x
121 0x79 0171 01111001 y
122 0x7A 0172 01111010 z
123 0x7B 0173 01111011 {
124 0x7C 0174 01111100 |
125 0x7D 0175 01111101 }
126 0x7E 0176 01111110 ~
127 0x7F 0177 01111111 DEL Delete

What is the ASCII table?

ASCII maps the numbers 0–127 to characters, and it is the foundation almost every other encoding is built on. The first 32 values plus 127 are control characters — invisible instructions inherited from teleprinters, like carriage return and bell — and the remaining 95 are the printable letters, digits and punctuation. UTF-8 was designed so that its first 128 code points are byte-identical to ASCII, which is why plain-English text is the same bytes in both, and why ASCII still turns up constantly when you are reading a hex dump or debugging an encoding bug.

How to use this tool

  1. 1 Search by decimal (65), hex (0x41), the character itself, or a name like "newline" or "escape".
  2. 2 Filter to control characters, digits, letters or symbols to narrow the table.
  3. 3 Read across for the same value in decimal, hex, octal and 8-bit binary.
  4. 4 The meaning column explains what each control character was originally for and where it still shows up.

Frequently asked questions

What is the difference between LF and CR?

LF (10, \n) means move down a line; CR (13, \r) means return to the start of the line. Unix and macOS end lines with LF alone, Windows uses CR followed by LF. That difference is why files moved between systems show stray ^M characters or collapse into one long line.

How do I get the ASCII code of a character in code?

In JavaScript, 'A'.charCodeAt(0) gives 65 and String.fromCharCode(65) reverses it. Python uses ord('A') and chr(65). In C a char is already its numeric value, so printf("%d", 'A') prints 65 directly.

Is extended ASCII the same thing?

No, and the name is misleading. ASCII is only 0–127. Values 128–255 depend entirely on which code page is in use — Latin-1, Windows-1252 and others all disagree about those bytes. That ambiguity is exactly what UTF-8 was invented to end, so treat anything above 127 as encoding-specific.

Why do uppercase and lowercase letters differ by exactly 32?

It was a deliberate design choice: A is 65 (binary 1000001) and a is 97 (1100001), so case differs by a single bit. Early hardware could flip case by toggling bit 6 with one instruction, and the trick still appears in low-level string code today.

What is character 127 doing at the end?

DEL is 127 — all seven bits set. On paper tape, deleting a character meant punching out every hole in that position, which physically produced 1111111. It ended up at the top of the table rather than with the other control characters because of that mechanical detail.