How hex to text conversion works
48 65 6c 6c 6f → H e l l o Every two hex digits represent one byte (a value from 0 to 255), and each byte maps to a character. For plain ASCII text, that mapping is one byte per character. For anything outside ASCII — accented letters, symbols, emoji — UTF-8 uses two, three, or even four bytes for a single character, which is why this tool decodes UTF-8 by default rather than assuming one byte always equals one character.
c3 a9 → é (2 bytes, one character) ASCII vs. UTF-8 mode
UTF-8 is a superset of ASCII — every plain ASCII byte decodes identically in either mode, so leaving this on UTF-8 never gets a plain "hex to ASCII" query a wrong answer. Switch to strict ASCII mode specifically when you want the tool to flag any byte above 127 as an error, rather than silently interpreting it as part of a multi-byte character.
Flexible input formatting
Paste hex however it's formatted — with spaces, colons (48:65:6c),
"0x" prefixes (0x48 0x65 0x6c), or as one continuous string
(48656c6c6f) — all are accepted the same way, since only the hex
digits themselves matter.
Reference Guides
Frequently asked questions
How do I convert hex to ASCII?
Paste your hex string above — spaces, colons, and 0x prefixes are all fine. Each pair of hex digits converts to one byte, and each byte maps to a character.
What does 48 65 6c 6c 6f mean in hex?
It decodes to "Hello" — a classic example, since each of those five hex byte pairs maps to one ASCII letter.
What's the difference between hex to ASCII and hex to text?
ASCII only covers 128 basic characters (plain English letters, digits, and common symbols). "Hex to text" usually implies UTF-8, which covers virtually every character in every language, plus emoji, using more than one byte per character when needed. This tool supports both, defaulting to UTF-8 since it handles ASCII correctly too.
Why does my hex show an error instead of decoding?
Usually one of two things: an odd number of hex digits (each byte needs exactly two), or a byte value that doesn't form valid text in the selected encoding — for example, a byte above 127 in strict ASCII mode.