Hex to text converter

Paste hexadecimal bytes and read them as text. Works with spaces, no spaces, 0x, \x and % styles, and decodes UTF-8 so accents and emoji come out right.

5 chars · 5 bytes

Reading hex as text

Hexadecimal is base 16. One hex digit holds exactly four bits, so two hex digits make one byte. That's why programmers show raw bytes in hex: 48 is shorter than 01001000 and maps to it digit-for-digit (4 = 0100, 8 = 1000).

To decode a pair, multiply the first digit by 16 and add the second: 6C = 6 × 16 + 12 = 108 = “l”. Letters A–F stand for 10–15.

Spotting what you're looking at

Pairs in the 41–7A range are letters, 20 is a space, and 30–39 are digits. If most pairs are C3, E2 or F0 followed by 80–BF, the text contains accented letters, symbols or emoji in UTF-8. Long runs of 00 or random-looking high bytes usually mean the data is not text at all.

Hex to text table: printable ASCII (20–7E)

CharHexDec
space2032
!2133
"2234
#2335
$2436
%2537
&2638
'2739
(2840
)2941
*2A42
+2B43
,2C44
-2D45
.2E46
/2F47
03048
13149
23250
33351
43452
53553
63654
73755
83856
93957
:3A58
;3B59
<3C60
=3D61
>3E62
?3F63
CharHexDec
@4064
A4165
B4266
C4367
D4468
E4569
F4670
G4771
H4872
I4973
J4A74
K4B75
L4C76
M4D77
N4E78
O4F79
P5080
Q5181
R5282
S5383
T5484
U5585
V5686
W5787
X5888
Y5989
Z5A90
[5B91
\5C92
]5D93
^5E94
_5F95
CharHexDec
`6096
a6197
b6298
c6399
d64100
e65101
f66102
g67103
h68104
i69105
j6A106
k6B107
l6C108
m6D109
n6E110
o6F111
p70112
q71113
r72114
s73115
t74116
u75117
v76118
w77119
x78120
y79121
z7A122
{7B123
|7C124
}7D125
~7E126

Questions people ask

How do I convert hex to text?

Split the hex into pairs of digits. Each pair is one byte: convert it to decimal (48 hex = 72) and look up the character (72 = “H”). Paste the hex above and the converter does it for every byte, decoding UTF-8 sequences as well.

Is hex to text the same as hex to ASCII?

For bytes 00–7F, yes: UTF-8 and ASCII agree. Bytes 80–FF are not ASCII; this tool reads them as UTF-8, which is what nearly all modern text uses.

What formats does the converter accept?

Plain pairs (48 65 6C), a continuous string (48656C), 0x-prefixed values (0x48, 0x65), C-style escapes (\x48\x65), percent-encoding (%48%65) and colon-separated dumps (48:65:6C).

Why do I see � in the output?

The replacement character means those bytes are not a valid UTF-8 sequence. The data may be binary (not text), in a different encoding such as Windows-1252, or missing a byte. Try the encoding identifier.

What is 48 65 6C 6C 6F in text?

“Hello”.

How do you say “I love you” in hexadecimal?

49 20 6C 6F 76 65 20 79 6F 75. Each pair is one character: 49 = I, 20 = space, 6C = l, and so on.

What are 32 hex characters?

Thirty-two hex digits are 16 bytes. That is the length of an MD5 hash, a 128-bit key or a UUID without dashes. Those are not text, so they will not decode into readable words. Paste one into What encoding is this? to check.

Can I decode a hex file?

Yes. Use “Open file” above the hex box to load a .txt hex dump, and “Download” to save the decoded text.