Hex Decoder (Hex to Text)
Decode hex bytes to text as UTF-8, UTF-16, Latin-1 or Windows-1252. Accepts 48656C, 48 65, 0x48, \x48 and colon forms, with a hex dump table.
Paste hex bytes from a packet capture, a debugger, a database BLOB or a log file and this decoder turns them back into readable text. It accepts almost any layout — 48656C6C6F, 48 65 6C, 48:65:6C, 0x48,0x65 or \x48\x65 — reads the bytes as UTF-8, UTF-16, Latin-1 or Windows-1252, and shows a classic hex dump so you can check offsets.
How to use this tool
- Paste the hex; separators and 0x or \x prefixes are removed automatically.
- Choose how the bytes should be read — UTF-8 unless you know otherwise.
- Read the decoded text, and use the hex dump to locate a particular byte.
Formula
byte = 16 × h₁ + h₂, then text = decode(bytes, encoding)
Each pair of hex digits is one byte from 0 to 255. UTF-8 combines 1 to 4 bytes into one character, UTF-16 uses 2 bytes per code unit (4 for emoji and other supplementary characters), and Latin-1 and Windows-1252 map each byte to exactly one character.
Example
The 13 bytes 48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21 decode as UTF-8 to Hello, World! — 0x48 is H, 0x2C a comma and 0x20 a space. The two bytes C3 A9 are é in UTF-8, but read as Latin-1 they become "é", the familiar garbled text you see when UTF-8 is opened with the wrong encoding.
Frequently asked questions
Why do I see � in the result?
Those bytes are not valid UTF-8. The data may be in another encoding (try Windows-1252 or UTF-16), or it may not be text at all — compressed data, images and keys never decode to readable text.
Do I need to remove spaces or 0x prefixes first?
No. Spaces, commas, colons, hyphens, 0x, \x and % are stripped before decoding, so you can paste hex straight from code or a dump.
What is the difference between Latin-1 and Windows-1252?
They agree on every byte except 0x80–0x9F. Windows-1252 puts printable characters there, such as € at 0x80 and curly quotes at 0x91–0x94, while Latin-1 has invisible control codes.
What if my hex has an odd number of digits?
Every separated token must contain whole two-digit bytes. Both a single odd-length token and malformed byte groups are rejected instead of concatenating their digits. Invalid UTF-16 surrogate sequences are rejected too.
Sources
Last updated: 2026-10-30