ASCII Table — Complete 0–127 Reference
Every ASCII character with its decimal, binary, hexadecimal and octal value — plus the control codes.
No signup, no trackingASCII 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.
| Dec | Hex | Bin | Oct | Char | Notes |
|---|---|---|---|---|---|
| 32 | 20 | 0100000 | 040 | (space) | Space |
| 33 | 21 | 0100001 | 041 | ! | Exclamation |
| 34 | 22 | 0100010 | 042 | " | Double quote |
| 35 | 23 | 0100011 | 043 | # | Hash / number sign |
| 36 | 24 | 0100100 | 044 | $ | Dollar sign |
| 37 | 25 | 0100101 | 045 | % | Percent |
| 38 | 26 | 0100110 | 046 | & | Ampersand |
| 39 | 27 | 0100111 | 047 | ' | Single quote / apostrophe |
| 40 | 28 | 0101000 | 050 | ( | Left parenthesis |
| 41 | 29 | 0101001 | 051 | ) | Right parenthesis |
| 42 | 2A | 0101010 | 052 | * | Asterisk |
| 43 | 2B | 0101011 | 053 | + | Plus |
| 44 | 2C | 0101100 | 054 | , | Comma |
| 45 | 2D | 0101101 | 055 | - | Hyphen / minus |
| 46 | 2E | 0101110 | 056 | . | Period / dot |
| 47 | 2F | 0101111 | 057 | / | Slash |
| 48 | 30 | 0110000 | 060 | 0 | Digit zero |
| 49 | 31 | 0110001 | 061 | 1 | Digit one |
| 50 | 32 | 0110010 | 062 | 2 | Digit two |
| 51 | 33 | 0110011 | 063 | 3 | Digit three |
| 52 | 34 | 0110100 | 064 | 4 | Digit four |
| 53 | 35 | 0110101 | 065 | 5 | Digit five |
| 54 | 36 | 0110110 | 066 | 6 | Digit six |
| 55 | 37 | 0110111 | 067 | 7 | Digit seven |
| 56 | 38 | 0111000 | 070 | 8 | Digit eight |
| 57 | 39 | 0111001 | 071 | 9 | Digit nine |
| 58 | 3A | 0111010 | 072 | : | Colon |
| 59 | 3B | 0111011 | 073 | ; | Semicolon |
| 60 | 3C | 0111100 | 074 | < | Less than |
| 61 | 3D | 0111101 | 075 | = | Equals |
| 62 | 3E | 0111110 | 076 | > | Greater than |
| 63 | 3F | 0111111 | 077 | ? | Question mark |
| 64 | 40 | 1000000 | 100 | @ | At sign |
| 65 | 41 | 1000001 | 101 | A | Uppercase A |
| 66 | 42 | 1000010 | 102 | B | Uppercase B |
| 67 | 43 | 1000011 | 103 | C | Uppercase C |
| 68 | 44 | 1000100 | 104 | D | Uppercase D |
| 69 | 45 | 1000101 | 105 | E | Uppercase E |
| 70 | 46 | 1000110 | 106 | F | Uppercase F |
| 71 | 47 | 1000111 | 107 | G | Uppercase G |
| 72 | 48 | 1001000 | 110 | H | Uppercase H |
| 73 | 49 | 1001001 | 111 | I | Uppercase I |
| 74 | 4A | 1001010 | 112 | J | Uppercase J |
| 75 | 4B | 1001011 | 113 | K | Uppercase K |
| 76 | 4C | 1001100 | 114 | L | Uppercase L |
| 77 | 4D | 1001101 | 115 | M | Uppercase M |
| 78 | 4E | 1001110 | 116 | N | Uppercase N |
| 79 | 4F | 1001111 | 117 | O | Uppercase O |
| 80 | 50 | 1010000 | 120 | P | Uppercase P |
| 81 | 51 | 1010001 | 121 | Q | Uppercase Q |
| 82 | 52 | 1010010 | 122 | R | Uppercase R |
| 83 | 53 | 1010011 | 123 | S | Uppercase S |
| 84 | 54 | 1010100 | 124 | T | Uppercase T |
| 85 | 55 | 1010101 | 125 | U | Uppercase U |
| 86 | 56 | 1010110 | 126 | V | Uppercase V |
| 87 | 57 | 1010111 | 127 | W | Uppercase W |
| 88 | 58 | 1011000 | 130 | X | Uppercase X |
| 89 | 59 | 1011001 | 131 | Y | Uppercase Y |
| 90 | 5A | 1011010 | 132 | Z | Uppercase Z |
| 91 | 5B | 1011011 | 133 | [ | Left bracket |
| 92 | 5C | 1011100 | 134 | \ | Backslash |
| 93 | 5D | 1011101 | 135 | ] | Right bracket |
| 94 | 5E | 1011110 | 136 | ^ | Caret |
| 95 | 5F | 1011111 | 137 | _ | Underscore |
| 96 | 60 | 1100000 | 140 | ` | Backtick / grave accent |
| 97 | 61 | 1100001 | 141 | a | Lowercase a |
| 98 | 62 | 1100010 | 142 | b | Lowercase b |
| 99 | 63 | 1100011 | 143 | c | Lowercase c |
| 100 | 64 | 1100100 | 144 | d | Lowercase d |
| 101 | 65 | 1100101 | 145 | e | Lowercase e |
| 102 | 66 | 1100110 | 146 | f | Lowercase f |
| 103 | 67 | 1100111 | 147 | g | Lowercase g |
| 104 | 68 | 1101000 | 150 | h | Lowercase h |
| 105 | 69 | 1101001 | 151 | i | Lowercase i |
| 106 | 6A | 1101010 | 152 | j | Lowercase j |
| 107 | 6B | 1101011 | 153 | k | Lowercase k |
| 108 | 6C | 1101100 | 154 | l | Lowercase l |
| 109 | 6D | 1101101 | 155 | m | Lowercase m |
| 110 | 6E | 1101110 | 156 | n | Lowercase n |
| 111 | 6F | 1101111 | 157 | o | Lowercase o |
| 112 | 70 | 1110000 | 160 | p | Lowercase p |
| 113 | 71 | 1110001 | 161 | q | Lowercase q |
| 114 | 72 | 1110010 | 162 | r | Lowercase r |
| 115 | 73 | 1110011 | 163 | s | Lowercase s |
| 116 | 74 | 1110100 | 164 | t | Lowercase t |
| 117 | 75 | 1110101 | 165 | u | Lowercase u |
| 118 | 76 | 1110110 | 166 | v | Lowercase v |
| 119 | 77 | 1110111 | 167 | w | Lowercase w |
| 120 | 78 | 1111000 | 170 | x | Lowercase x |
| 121 | 79 | 1111001 | 171 | y | Lowercase y |
| 122 | 7A | 1111010 | 172 | z | Lowercase z |
| 123 | 7B | 1111011 | 173 | { | Left brace |
| 124 | 7C | 1111100 | 174 | | | Pipe / vertical bar |
| 125 | 7D | 1111101 | 175 | } | Right brace |
| 126 | 7E | 1111110 | 176 | ~ | 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).
| Dec | Hex | Bin | Ctrl | Name | Purpose |
|---|---|---|---|---|---|
| 0 | 00 | 0000000 | ^@ | NUL | Null byte — string terminator in C |
| 1 | 01 | 0000001 | ^A | SOH | Start of heading |
| 2 | 02 | 0000010 | ^B | STX | Start of text |
| 3 | 03 | 0000011 | ^C | ETX | End of text — Ctrl+C interrupt in shells |
| 4 | 04 | 0000100 | ^D | EOT | End of transmission — Ctrl+D end of file |
| 5 | 05 | 0000101 | ^E | ENQ | Enquiry |
| 6 | 06 | 0000110 | ^F | ACK | Acknowledge |
| 7 | 07 | 0000111 | ^G | BEL | Bell — plays a terminal beep |
| 8 | 08 | 0001000 | ^H | BS | Backspace |
| 9 | 09 | 0001001 | ^I | HT | Horizontal tab |
| 10 | 0A | 0001010 | ^J | LF | Line feed — Unix newline (\n) |
| 11 | 0B | 0001011 | ^K | VT | Vertical tab |
| 12 | 0C | 0001100 | ^L | FF | Form feed — page break |
| 13 | 0D | 0001101 | ^M | CR | Carriage return — half of Windows newline (\r\n) |
| 14 | 0E | 0001110 | ^N | SO | Shift out |
| 15 | 0F | 0001111 | ^O | SI | Shift in |
| 16 | 10 | 0010000 | ^P | DLE | Data link escape |
| 17 | 11 | 0010001 | ^Q | DC1 | Device control 1 — XON |
| 18 | 12 | 0010010 | ^R | DC2 | Device control 2 |
| 19 | 13 | 0010011 | ^S | DC3 | Device control 3 — XOFF |
| 20 | 14 | 0010100 | ^T | DC4 | Device control 4 |
| 21 | 15 | 0010101 | ^U | NAK | Negative acknowledge |
| 22 | 16 | 0010110 | ^V | SYN | Synchronous idle |
| 23 | 17 | 0010111 | ^W | ETB | End of transmission block |
| 24 | 18 | 0011000 | ^X | CAN | Cancel |
| 25 | 19 | 0011001 | ^Y | EM | End of medium |
| 26 | 1A | 0011010 | ^Z | SUB | Substitute — Ctrl+Z suspend / DOS end-of-file |
| 27 | 1B | 0011011 | ^[ | ESC | Escape — leads every ANSI terminal sequence |
| 28 | 1C | 0011100 | ^\ | FS | File separator |
| 29 | 1D | 0011101 | ^] | GS | Group separator |
| 30 | 1E | 0011110 | ^^ | RS | Record separator |
| 31 | 1F | 0011111 | ^_ | US | Unit separator |
| 127 | 7F | 1111111 | ^? | DEL | Delete — 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"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.