Hex to ASCII Converter
This converter works on code values, one at a time, from the table. Codes run from 0 to 127; anything above that is reported as out of range. For whole text rather than single codes, use Hex to Text; for a plain number, use Hex to Decimal.
Going the other way? Convert ASCII code back to hex →
How do you convert hex to ASCII?
Hex to ASCII code conversion reads each value as a code between 0 and 127 and looks up the character that the ASCII table gives for it.
Hex 48 69 is "Hi" in ASCII. Read each pair of hex digits as one code (48 = 72, 69 = 105) and look the code up in the ASCII table; pairs above 7F, code 127, are out of range.
- Read the first value: 48.
- Convert it to a decimal code: 48 is 72.
- Look that code up in the table: 72 is H.
- Repeat for every value and join the characters in order: 48 69 = Hi.
Hex to ASCII reads 48 69 as two separate codes; the binary converter overview explains when a hex value such as 0x2F is one number instead.
Hexadecimal to ASCII Code Conversion Table
The codes this page works through, each with the character it stands for and the same value in hex, octal and binary. Find the code in the first column and read across; the row is the whole conversion. Codes 0 to 31 and 127 have no glyph, so the Char column shows their short name instead. 0b marks binary, 0o octal, 0x hexadecimal; a leading # marks a hex colour. Hexadecimal is not case-sensitive (FF = ff); iToolHub writes hex digits in uppercase. This page shows the rows you need; ASCII code chart (decimal, hex, octal, binary) carries all 128.
| Dec | Char | Hex | Oct | Bin |
|---|---|---|---|---|
| 33 | ! | 21 | 041 | 00100001 |
| 48 | 0 | 30 | 060 | 00110000 |
| 57 | 9 | 39 | 071 | 00111001 |
| 65 | A | 41 | 101 | 01000001 |
| 72 | H | 48 | 110 | 01001000 |
| 90 | Z | 5A | 132 | 01011010 |
| 97 | a | 61 | 141 | 01100001 |
| 100 | d | 64 | 144 | 01100100 |
| 105 | i | 69 | 151 | 01101001 |
| 110 | n | 6E | 156 | 01101110 |
| 115 | s | 73 | 163 | 01110011 |
| 122 | z | 7A | 172 | 01111010 |
The base this page writes, defined by the digits it uses, how a value is marked, and what each position is worth.
| Base | Radix | Digits | Prefix | Place worth | Typical range |
|---|---|---|---|---|---|
| Hexadecimal | 16 | 0–9, A–F (A=10 … F=15; case-insensitive) | 0x | 16ⁿ | 2 digits cover a byte (00–FF); 6 digits = RGB colour; 8 digits = 32-bit word |
Worked Example: 48 69 to ASCII
One code value, taken from the table and written out in full. This is the same working the converter shows when you turn on "show steps".
Result: 48 69 = ASCII codes 72 105 = Hi
Start with the first code, 48, which is 72 in decimal. Row 72 of the table is the letter H. There is no arithmetic to get wrong, only a row to find, and every base the table carries lands on the same row.
The rest follow the same way: 69 is the letter i. Joining the characters in order gives Hi. A code above 127 has no row, and the converter reports it as out of range instead of guessing.
Check it in reverse
Read it back and you arrive where you started: the letter H is code 72, which is 48 in hex. The table is a two-way lookup, not a calculation, so no rounding or padding can change the answer. To verify the result by hand, encode the text back to hex bytes and compare it with the value you started from.
Worked examples: hex to ASCII
Each example gives the value first, then the working. Click a value to load it in the converter.
What is 0x41 in ASCII?
0x41 is A in ASCII.
Method: look code 65 up in the 0–127 table; the row gives A.
What is 0x61 in ASCII?
0x61 is a in ASCII.
Method: look code 97 up in the 0–127 table; the row gives a.
What is 0x48 in ASCII?
0x48 is H in ASCII.
Method: look code 72 up in the 0–127 table; the row gives H.
What is 0x30 in ASCII?
0x30 is 0 in ASCII.
Method: look code 48 up in the 0–127 table; the row gives 0.
What is 0x21 in ASCII?
0x21 is ! in ASCII.
Method: look code 33 up in the 0–127 table; the row gives !.
What is 0x5A in ASCII?
0x5A is Z in ASCII.
Method: look code 90 up in the 0–127 table; the row gives Z.
What is 0x7A in ASCII?
0x7A is z in ASCII.
Method: look code 122 up in the 0–127 table; the row gives z.
What is 0x39 in ASCII?
0x39 is 9 in ASCII.
Method: look code 57 up in the 0–127 table; the row gives 9.
What is 0x64 in ASCII?
0x64 is d in ASCII.
Method: look code 100 up in the 0–127 table; the row gives d.
What is 0x6E in ASCII?
0x6E is n in ASCII.
Method: look code 110 up in the 0–127 table; the row gives n.
What is 0x73 in ASCII?
0x73 is s in ASCII.
Method: look code 115 up in the 0–127 table; the row gives s.
What is 0x69 in ASCII?
0x69 is i in ASCII.
Method: look code 105 up in the 0–127 table; the row gives i.
Every example above reverses exactly — encode the same string back into hex bytes.
What Changes the Code Output?
Values above 127
A value above 127 is out of range and the converter says so rather than guessing. Codes 128–255 belong to extended sets such as Latin-1, not to ASCII, so there is no single right character for them. Every code that is in range is listed in the ASCII table this converter reads from.
Which base the code is written in
The same code can be written in decimal, hex, octal or binary: 65, 41, 101 and 01000001 are all the letter A. This page reads hex only, so a code in another base names a different row.
Control codes and printable codes
Codes 32 to 126 are printable characters; 0–31 and 127 are control codes. A control code has no glyph, so the table shows its short name instead — 10 is LF, 13 is CR. Converting one is valid; displaying one is not.
One code or a list
Several codes separated by spaces, commas or new lines convert as a list, in order, and each keeps its own row. The separator is a display choice and does not change any value. A run with no separator is cut into 2-digit codes.
Hex to ASCII in Code
The same rule in one line. Both take code values and return the characters.
Python: bytes(int(g, 16) for g in s.split()).decode('ascii') JavaScript: new TextDecoder().decode(new Uint8Array(s.split(/\s+/).map(g => parseInt(g, 16)))) Common Mistakes
- Typing text where a code value belongs. The converter reads 72 as one code, not as the characters 7 and 2 — for whole text use decode hex as a UTF-8 string instead.
- Reading a code in the wrong base. 41 is A in hex and ) in decimal.
- Expecting a character above 127. That value is outside ASCII and the answer depends on which extended set is meant.
- Dropping the padding on a fixed-width code, so a list of codes can no longer be split apart.
Frequently Asked Questions
How many hex digits make one ASCII code?
Two. ASCII defines 128 characters, codes 0–127, using 7 bits; in practice each code is stored in one 8-bit byte with a leading 0. 41 is A, 48 is H, and every code from 00 to 7F fits in the same two digits.
Why does the converter report hex 80 to FF as out of range?
Because ASCII stops at 7F, which is code 127. UTF-8 encodes each character in 1 to 4 bytes. Characters 0–127 use one byte identical to ASCII, so ASCII text is valid UTF-8. C3 A9 spells é, code point 233, and neither of those bytes has an ASCII row.
Is hex to ASCII the same as hex to decimal?
No. Both read 41 as 65, but this page gives the character, A; hex to decimal stops at the number. Codes 128–255 are not part of ASCII. They belong to extended sets such as Latin-1 (ISO 8859-1), where 255 is ÿ; in pure ASCII a value above 127 is out of range.
How do you convert hex to ASCII in Python?
bytes.fromhex('48 69').decode('ascii') gives 'Hi', and int('41', 16) gives 65, the code for A. 0b marks binary, 0o octal, 0x hexadecimal; a leading # marks a hex colour. Hexadecimal is not case-sensitive (FF = ff); iToolHub writes hex digits in uppercase.
Every code here reads back the same way: the same value converts straight back in the text to hex direction.
Related Conversions
The rest of the family sits on the rest of the binary converters.