Skip to content

ASCII Table — Character Code Reference

Browse all 128 ASCII characters with decimal, hex, octal, and binary values — searchable and free.

Last updated:

DecHexOctBinaryCharDescription
00000000000000NULNull
10100100000001SOHStart of Heading
20200200000010STXStart of Text
30300300000011ETXEnd of Text
40400400000100EOTEnd of Transmission
50500500000101ENQEnquiry
60600600000110ACKAcknowledge
70700700000111BELBell
80801000001000BSBackspace
90901100001001TABHorizontal Tab
100A01200001010LFLine Feed
110B01300001011VTVertical Tab
120C01400001100FFForm Feed
130D01500001101CRCarriage Return
140E01600001110SOShift Out
150F01700001111SIShift In
161002000010000DLEData Link Escape
171102100010001DC1Device Control 1
181202200010010DC2Device Control 2
191302300010011DC3Device Control 3
201402400010100DC4Device Control 4
211502500010101NAKNegative Acknowledge
221602600010110SYNSynchronous Idle
231702700010111ETBEnd of Transmission Block
241803000011000CANCancel
251903100011001EMEnd of Medium
261A03200011010SUBSubstitute
271B03300011011ESCEscape
281C03400011100FSFile Separator
291D03500011101GSGroup Separator
301E03600011110RSRecord Separator
311F03700011111USUnit Separator
322004000100000SPSpace
332104100100001!!
342204200100010""
352304300100011##
362404400100100$$
372504500100101%%
382604600100110&&
392704700100111''
402805000101000((
412905100101001))
422A05200101010**
432B05300101011++
442C05400101100,,
452D05500101101--
462E05600101110..
472F05700101111//
4830060001100000Digit 0
4931061001100011Digit 1
5032062001100102Digit 2
5133063001100113Digit 3
5234064001101004Digit 4
5335065001101015Digit 5
5436066001101106Digit 6
5537067001101117Digit 7
5638070001110008Digit 8
5739071001110019Digit 9
583A07200111010::
593B07300111011;;
603C07400111100<<
613D07500111101==
623E07600111110>>
633F07700111111??
644010001000000@@
654110101000001AUppercase A
664210201000010BUppercase B
674310301000011CUppercase C
684410401000100DUppercase D
694510501000101EUppercase E
704610601000110FUppercase F
714710701000111GUppercase G
724811001001000HUppercase H
734911101001001IUppercase I
744A11201001010JUppercase J
754B11301001011KUppercase K
764C11401001100LUppercase L
774D11501001101MUppercase M
784E11601001110NUppercase N
794F11701001111OUppercase O
805012001010000PUppercase P
815112101010001QUppercase Q
825212201010010RUppercase R
835312301010011SUppercase S
845412401010100TUppercase T
855512501010101UUppercase U
865612601010110VUppercase V
875712701010111WUppercase W
885813001011000XUppercase X
895913101011001YUppercase Y
905A13201011010ZUppercase Z
915B13301011011[[
925C13401011100\\
935D13501011101]]
945E13601011110^^
955F13701011111__
966014001100000``
976114101100001aLowercase a
986214201100010bLowercase b
996314301100011cLowercase c
1006414401100100dLowercase d
1016514501100101eLowercase e
1026614601100110fLowercase f
1036714701100111gLowercase g
1046815001101000hLowercase h
1056915101101001iLowercase i
1066A15201101010jLowercase j
1076B15301101011kLowercase k
1086C15401101100lLowercase l
1096D15501101101mLowercase m
1106E15601101110nLowercase n
1116F15701101111oLowercase o
1127016001110000pLowercase p
1137116101110001qLowercase q
1147216201110010rLowercase r
1157316301110011sLowercase s
1167416401110100tLowercase t
1177516501110101uLowercase u
1187616601110110vLowercase v
1197716701110111wLowercase w
1207817001111000xLowercase x
1217917101111001yLowercase y
1227A17201111010zLowercase z
1237B17301111011{{
1247C17401111100||
1257D17501111101}}
1267E17601111110~~
1277F17701111111DELDelete

What Is ASCII and Why Does It Still Matter?

ASCII, the American Standard Code for Information Interchange, is a character encoding standard first published in 1963 by the American Standards Association (now ANSI). It defines 128 characters using a 7-bit integer range from 0 to 127, covering everything from control signals to letters, digits, and common punctuation marks.

Despite being over six decades old, ASCII remains foundational to modern computing. Every programming language, network protocol, and operating system builds on top of it. HTTP headers, email addresses, domain names, and source code files all rely on the ASCII character set as their baseline. When you type a URL into your browser or write a line of Python, you are working with ASCII characters whether you realize it or not.

The standard was designed to be simple and universal. Seven bits give exactly 128 possible values — enough for the English alphabet in both cases, ten digits, a set of punctuation and symbols, and 33 control characters used for device communication. This compact design made ASCII efficient for the hardware of the 1960s and easy to extend for the software of today.

Control Characters (0–31): Hidden but Essential

The first 32 ASCII codes (decimal 0 through 31) plus code 127 (DEL) are control characters. They were originally designed to control hardware devices like teletypes and printers, but many have survived into the modern era with new purposes:

  • NUL (0) — The null character. Used as a string terminator in C and C++, marking the end of character arrays in memory.
  • TAB (9) — Horizontal tab. Universally used for code indentation and as a field separator in TSV (tab-separated values) files.
  • LF (10) — Line feed. The standard newline character on Unix, Linux, and macOS systems. Every \n in your code translates to this byte.
  • CR (13) — Carriage return. Windows uses CR+LF (codes 13 and 10 together) as its line ending, which is why cross-platform text files sometimes show extra characters.
  • ESC (27) — Escape. Powers ANSI escape sequences for terminal colors, cursor movement, and text formatting in command-line tools.

Understanding control characters matters when debugging file encoding issues, parsing binary protocols, or working with terminal applications. A stray CR in a Unix shell script, for example, can cause cryptic "command not found" errors that are difficult to diagnose without knowing what these invisible bytes represent.

Printable Characters (32–126): The Visible Set

The 95 printable ASCII characters span decimal codes 32 through 126. Code 32 is the space character, and codes 33 through 126 cover everything you can type on a standard US keyboard: uppercase letters (AZ, codes 65–90), lowercase letters (az, codes 97–122), digits (09, codes 48–57), and symbols like @, #, {, and }.

The ordering of these characters is deliberate and has practical consequences. Digits come before uppercase letters, which come before lowercase letters. This means that a naive alphabetical sort will place Z before a because uppercase letters have lower code values. This behavior is visible in many programming contexts — JavaScript's String.prototype.localeCompare() exists specifically to handle human-friendly sorting that ignores ASCII ordering.

Another useful property: the difference between an uppercase letter and its lowercase counterpart is always 32. A is 65 and a is 97 — a single bit flip. This was an intentional design choice that made case conversion trivial on early hardware using simple bitwise operations.

ASCII vs UTF-8 vs Unicode: How They Relate

A common point of confusion is the relationship between ASCII, Unicode, and UTF-8. Unicode is a universal character set that assigns a unique code point to every character in every writing system — over 154,000 characters as of version 16.0. UTF-8 is the most widely used encoding of Unicode, and it was specifically designed so that the first 128 code points are identical to ASCII.

This backward compatibility means that any valid ASCII file is automatically a valid UTF-8 file. A plain-text document containing only English letters, digits, and standard punctuation is bit-for-bit the same in both encodings. UTF-8 extends the range by using multi-byte sequences (2 to 4 bytes) for characters beyond the 127 mark, such as accented letters, Chinese characters, or emoji.

For developers, this means ASCII knowledge transfers directly to UTF-8 work. When you see 0x48 0x65 0x6C 0x6C 0x6F in a hex dump, you can read it as "Hello" regardless of whether the file is labeled ASCII or UTF-8. The hex values, decimal codes, and binary patterns in the table above apply equally to both encodings for all 128 original characters.

Related Developer Tools

Working with ASCII values often goes hand-in-hand with number base conversions and text encoding. If you need to convert between hexadecimal and decimal notation while reading character codes, the Hex to Decimal Converter handles that in both directions. For translating binary column values from the ASCII table into their decimal equivalents, use the Binary to Decimal Converter.

To see how entire words and sentences translate into their binary ASCII representations, the Text to Binary Converter encodes and decodes plain text using 8-bit binary (with the high bit set to zero for standard ASCII characters). Together, these tools give you a complete picture of how text data is represented at the byte level across different numeral systems.

Frequently Asked Questions

How many ASCII characters are there?
Standard ASCII defines 128 characters (0-127): 33 control characters (0-31 and 127), a space (32), and 94 printable characters (33-126) including letters, digits, and symbols.
What's the difference between ASCII and Unicode?
ASCII covers 128 characters (English letters, digits, basic symbols). Unicode extends this to over 150,000 characters covering virtually all writing systems, emoji, and symbols. The first 128 Unicode code points are identical to ASCII.
What is a control character?
Control characters (0-31 and 127) are non-printable characters used for text formatting and communication control. Common ones include NUL (0), TAB (9), LF/newline (10), CR/carriage return (13), and ESC (27).
What is the difference between ASCII and Unicode?
ASCII covers 128 characters (0-127) — English letters, digits, punctuation, and control codes. Unicode covers every written script and symbol ever defined. UTF-8 is a Unicode encoding that stays backward-compatible with ASCII for the first 128 values.
Why are there "control characters" at the start of the table?
Positions 0-31 are non-printing control codes from the teletype era — newline, tab, bell, etc. Some are still in use (newline = 10, carriage return = 13), while others (like "bell" = 7) are rarely seen outside legacy protocols.
What is "extended ASCII"?
Extended ASCII refers to single-byte character sets (like ISO-8859-1 or Windows-1252) that use positions 128-255 for European accents, currency symbols, and drawing characters. Modern systems use Unicode instead.

Related Tools