Hex to Text Converter
This converter reads hex as whole bytes and gives back the text they spell. For one code value rather than a message, use Hex to ASCII; for a plain number, use Hex to Decimal.
Going the other way? Convert text back to hex →
How do you convert hex to text?
Hex to text conversion reads each group of hexadecimal digits as one code, then replaces that code with the character it stands for, so 2 groups give 2 characters.
- Split the input into hexadecimal pairs. The first group is 48.
- Read that group as a number. 48 is 72.
- Replace the number with its character. 72 is H.
- Repeat for every group and join the characters in order: 48 69 = Hi.
Hexadecimal to Text Conversion Table
Every letter, digit and the space, with its code in all four bases. Find the character in the first column and read across: the Dec column is the code the method uses, and the Hex column is what this converter reads — 2 digits per character, zero-padded on the left. That column uses the digit set 0–9, A–F (A=10 … F=15; case-insensitive) and nothing else, each place worth 16ⁿ, and a value marked with the 0x prefix means the same thing. 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.
| Char | Dec | Hex | Oct | Bin |
|---|---|---|---|---|
| A | 65 | 41 | 101 | 01000001 |
| B | 66 | 42 | 102 | 01000010 |
| C | 67 | 43 | 103 | 01000011 |
| D | 68 | 44 | 104 | 01000100 |
| E | 69 | 45 | 105 | 01000101 |
| F | 70 | 46 | 106 | 01000110 |
| G | 71 | 47 | 107 | 01000111 |
| H | 72 | 48 | 110 | 01001000 |
| I | 73 | 49 | 111 | 01001001 |
| J | 74 | 4A | 112 | 01001010 |
| K | 75 | 4B | 113 | 01001011 |
| L | 76 | 4C | 114 | 01001100 |
| M | 77 | 4D | 115 | 01001101 |
| N | 78 | 4E | 116 | 01001110 |
| O | 79 | 4F | 117 | 01001111 |
| P | 80 | 50 | 120 | 01010000 |
| Q | 81 | 51 | 121 | 01010001 |
| R | 82 | 52 | 122 | 01010010 |
| S | 83 | 53 | 123 | 01010011 |
| T | 84 | 54 | 124 | 01010100 |
| U | 85 | 55 | 125 | 01010101 |
| V | 86 | 56 | 126 | 01010110 |
| W | 87 | 57 | 127 | 01010111 |
| X | 88 | 58 | 130 | 01011000 |
| Y | 89 | 59 | 131 | 01011001 |
| Z | 90 | 5A | 132 | 01011010 |
| a | 97 | 61 | 141 | 01100001 |
| b | 98 | 62 | 142 | 01100010 |
| c | 99 | 63 | 143 | 01100011 |
| d | 100 | 64 | 144 | 01100100 |
| e | 101 | 65 | 145 | 01100101 |
| f | 102 | 66 | 146 | 01100110 |
| g | 103 | 67 | 147 | 01100111 |
| h | 104 | 68 | 150 | 01101000 |
| i | 105 | 69 | 151 | 01101001 |
| j | 106 | 6A | 152 | 01101010 |
| k | 107 | 6B | 153 | 01101011 |
| l | 108 | 6C | 154 | 01101100 |
| m | 109 | 6D | 155 | 01101101 |
| n | 110 | 6E | 156 | 01101110 |
| o | 111 | 6F | 157 | 01101111 |
| p | 112 | 70 | 160 | 01110000 |
| q | 113 | 71 | 161 | 01110001 |
| r | 114 | 72 | 162 | 01110010 |
| s | 115 | 73 | 163 | 01110011 |
| t | 116 | 74 | 164 | 01110100 |
| u | 117 | 75 | 165 | 01110101 |
| v | 118 | 76 | 166 | 01110110 |
| w | 119 | 77 | 167 | 01110111 |
| x | 120 | 78 | 170 | 01111000 |
| y | 121 | 79 | 171 | 01111001 |
| z | 122 | 7A | 172 | 01111010 |
| 0 | 48 | 30 | 060 | 00110000 |
| 1 | 49 | 31 | 061 | 00110001 |
| 2 | 50 | 32 | 062 | 00110010 |
| 3 | 51 | 33 | 063 | 00110011 |
| 4 | 52 | 34 | 064 | 00110100 |
| 5 | 53 | 35 | 065 | 00110101 |
| 6 | 54 | 36 | 066 | 00110110 |
| 7 | 55 | 37 | 067 | 00110111 |
| 8 | 56 | 38 | 070 | 00111000 |
| 9 | 57 | 39 | 071 | 00111001 |
| (space) | 32 | 20 | 040 | 00100000 |
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 Text
One group at a time, with the working written out. This is the same grid the converter shows when you turn on "show steps".
text
Result: 48 69 = Hi
Start at the left. The first group is 48, which reads as 72, and 72 is the code for H. The groups are all the same width, so there is no guesswork about where one ends and the next begins.
The rest follow the same way: 69 is 105, which is i. Joining the characters in the order the groups arrived gives Hi. Read a group in the wrong place and every character after it shifts, which is why the width matters more than the separator does.
Check it in reverse
The value goes back the way it came. Read 48 is 72, and 72 is H; read 69 is 105, and 105 is i. Nothing is lost on the return trip, because every character keeps one group of its own and the groups keep their order. A decoder needs no extra information from the encoder — the fixed width tells it where each group ends, and the table tells it what each code means. To verify the result by hand, encode the text result back to hex and compare it with what you started from.
Worked examples: hex to text
Each example gives the value first, then the working. Click a value to load it in the converter.
What does 48 spell in text?
"48" in hex is H in text.
Method: split into groups of two, read each group as a code, then take its character.
What does 48 69 spell in text?
"48 69" in hex is Hi in text.
Method: split into groups of two, read each group as a code, then take its character.
What does 68 65 6C 6C 6F spell in text?
"68 65 6C 6C 6F" in hex is hello in text.
Method: split into groups of two, read each group as a code, then take its character.
What does 41 6E 61 spell in text?
"41 6E 61" in hex is Ana in text.
Method: split into groups of two, read each group as a code, then take its character.
What does 61 spell in text?
"61" in hex is a in text.
Method: split into groups of two, read each group as a code, then take its character.
What does 41 spell in text?
"41" in hex is A in text.
Method: split into groups of two, read each group as a code, then take its character.
What does 65 spell in text?
"65" in hex is e in text.
Method: split into groups of two, read each group as a code, then take its character.
What does 62 spell in text?
"62" in hex is b in text.
Method: split into groups of two, read each group as a code, then take its character.
What does 64 spell in text?
"64" in hex is d in text.
Method: split into groups of two, read each group as a code, then take its character.
What does 66 spell in text?
"66" in hex is f in text.
Method: split into groups of two, read each group as a code, then take its character.
What does 74 spell in text?
"74" in hex is t in text.
Method: split into groups of two, read each group as a code, then take its character.
What does 67 spell in text?
"67" in hex is g in text.
Method: split into groups of two, read each group as a code, then take its character.
Every example above reverses exactly — write the same characters back as hex bytes.
What Changes the Text Output?
Spaces and line breaks
A space is a character like any other: code 32, or 20. A trailing space converts too, which is the usual reason an output runs one group longer than expected.
Characters outside ASCII
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. Above code 127 UTF-8 uses more than one byte per character, so the byte count stops matching the character count. é is U+00E9 and encodes as C3 A9 (2 bytes); € is U+20AC and encodes as E2 82 AC (3 bytes); 😀 is U+1F600 and encodes as F0 9F 98 80 (4 bytes). Written the way this page writes them, those are é = C3 A9, € = E2 82 AC and 😀 = F0 9F 98 80. look up any ASCII code from 0 to 127 sets out why.
Width and padding
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. That is why A is 41 here, not 41. Uppercase and lowercase differ by 32, which is bit 5, so a is 61.
Separator choice
The space between groups is a display choice; the bytes do not change. iToolHub's text-to-binary and text-to-hex converters write one 8-bit byte per character, separated by spaces. Pick no separator when the output feeds another program, a comma for a spreadsheet.
Hex to Text in Code
The same rule in one line. Both read the codes and return the original string.
Python: bytes(int(g, 16) for g in s.split()).decode('utf-8') JavaScript: new TextDecoder().decode(new Uint8Array(s.split(/\s+/).map(g => parseInt(g, 16)))) Common Mistakes
- Dropping the leading zero, so A reads 41 instead of 41. The output then splits into the wrong groups.
- Mixing widths inside one string. The first half decodes; the rest is noise.
- Pasting codes instead of characters — that is a different conversion, and it lives on hex to ASCII code lookup.
- Forgetting that the space between words is its own group, 20. The counts then disagree.
Frequently Asked Questions
Is hex to text the same as hex to ASCII?
No. This page reads hex bytes as UTF-8 and gives back the whole message, so C3 A9 comes back as the single character é. Hex to ASCII is the narrower page: one byte in, one number out, nothing above 7F.
Why does hex to text show � or garbled characters?
The bytes are not valid UTF-8, and � marks each byte the decoder could not read. The usual causes are an odd number of hex digits, a multibyte character missing one of its bytes, or text saved in a different encoding.
Does byte order (endianness) affect hex to text?
No. UTF-8 is a byte sequence, so the bytes are read left to right in the order they were written. Endianness matters for UTF-16 and UTF-32, where one character spans two or four bytes that can be stored either way round.
What is the difference between a hex string and hex bytes?
A hex string is text — the characters 4 and 8, written out. Hex bytes are the values those characters name. Paste 48 here and you get H, because this converter reads every pair of hex digits as one byte.
What is EF BB BF at the start of a hex dump?
That is the UTF-8 byte order mark. It carries no character of its own; it marks what follows as UTF-8 text. Strip those three bytes before decoding, or the message starts with a mark most editors will not show.
Every result here reverses: the same message converts straight back in the text to hex direction.
Related Conversions
The rest of the family sits on pick another conversion from the grid.