Hex to ASCII Converter

charcodehex
H
72
48
i
105
69

Show the working for Text → Hex

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.

In short

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.

  1. Read the first value: 48.
  2. Convert it to a decimal code: 48 is 72.
  3. Look that code up in the table: 72 is H.
  4. 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.

Hexadecimal to ASCII Code Conversion Table
DecCharHexOctBin
33!2104100100001
4803006000110000
5793907100111001
65A4110101000001
72H4811001001000
90Z5A13201011010
97a6114101100001
100d6414401100100
105i6915101101001
110n6E15601101110
115s7316301110011
122z7A17201111010

The base this page writes, defined by the digits it uses, how a value is marked, and what each position is worth.

Base reference
BaseRadixDigits PrefixPlace worthTypical range
Hexadecimal160–9, A–F (A=10 … F=15; case-insensitive) 0x16ⁿ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".

charcodehex
H
72
48
i
105
69

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.

Load this value in the converter

What is 0x61 in ASCII?

0x61 is a in ASCII.

Method: look code 97 up in the 0–127 table; the row gives a.

Load this value in the converter

What is 0x48 in ASCII?

0x48 is H in ASCII.

Method: look code 72 up in the 0–127 table; the row gives H.

Load this value in the converter

What is 0x30 in ASCII?

0x30 is 0 in ASCII.

Method: look code 48 up in the 0–127 table; the row gives 0.

Load this value in the converter

What is 0x21 in ASCII?

0x21 is ! in ASCII.

Method: look code 33 up in the 0–127 table; the row gives !.

Load this value in the converter

What is 0x5A in ASCII?

0x5A is Z in ASCII.

Method: look code 90 up in the 0–127 table; the row gives Z.

Load this value in the converter

What is 0x7A in ASCII?

0x7A is z in ASCII.

Method: look code 122 up in the 0–127 table; the row gives z.

Load this value in the converter

What is 0x39 in ASCII?

0x39 is 9 in ASCII.

Method: look code 57 up in the 0–127 table; the row gives 9.

Load this value in the converter

What is 0x64 in ASCII?

0x64 is d in ASCII.

Method: look code 100 up in the 0–127 table; the row gives d.

Load this value in the converter

What is 0x6E in ASCII?

0x6E is n in ASCII.

Method: look code 110 up in the 0–127 table; the row gives n.

Load this value in the converter

What is 0x73 in ASCII?

0x73 is s in ASCII.

Method: look code 115 up in the 0–127 table; the row gives s.

Load this value in the converter

What is 0x69 in ASCII?

0x69 is i in ASCII.

Method: look code 105 up in the 0–127 table; the row gives i.

Load this value in the converter

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.

The rest of the family sits on the rest of the binary converters.