Hex to text
Paste hex bytes and turn them into readable text, accents and emoji included.
Each byte is two hex digits. Spaces, line breaks, commas and 0x are accepted; an odd digit count or bytes that aren't UTF-8 show an error. It all runs in your browser: your text is never uploaded.
Example input and result
48 65 6c 6c 6f
Result
Hello
How to convert hex to text
Paste the bytes into “Your text” and the decoded text appears in “Result” right away. 48 65 6c 6c 6f gives Hello. Digits can be upper or lower case and separated however you like, so every format below decodes to the same word. Then tap “Copy result” or “Download TXT”, and “Clear” when you want to start over.
48 65 6c 6c 6f(spaces)48656c6c6f(no separators)0x48 0x65 0x6C 0x6C 0x6F(0x prefixes)48,65,6c,6c,6f(commas)- One byte per line
How the decoder reads hex pairs
Before decoding, the tool strips spaces, line breaks, commas and 0x prefixes, then reads the digits two at a time, ignoring how you grouped them. That's why 4 8 6 f gives Ho: it pairs 4 with 8 and 6 with f. If one byte was written with a single digit, such as a instead of 0a, everything after it shifts by one. Make sure every byte has both digits.
Bytes are read as UTF-8, so é is c3 a9, ñ is c3 b1 and an emoji like 👋 takes four bytes, f0 9f 91 8b. 43 61 66 c3 a9 gives Café. A 0a byte is a line break: 48 65 6c 6c 6f 0a 77 6f 72 6c 64 comes out as Hello and world on two lines.
Hex input that fails, and how to fix it
If the digit count is odd, or something isn't a hex digit (0 to 9 and a to f), you see “Enter complete two-digit hexadecimal bytes.” If the pairs are fine but don't form UTF-8, you get a decoding error instead of garbled text. These are the usual causes:
\x,%orU+prefixes: delete them, since only0xis accepted- Bytes joined with colons or dashes, like
48:65:6c: replace them with spaces - A hex dump with the offset column (
00000000) or the ASCII column: copy only the byte columns, because offsets are hex digits too and decode as extra bytes - A lone
e9: that's é in Latin-1, while UTF-8 writes it asc3 a9 - A color code like
#ff0000: three color bytes, not text
Where hex-encoded text turns up
You'll run into it in CTF challenges and coding puzzles, Arduino serial monitor output, error logs, packet captures and hex editors, and in escape-room clues that hide a word in hex. Decoding happens in your browser and the bytes you paste are never uploaded, so you can check a log from work without sending it anywhere.
Frequently asked questions
How do I convert hex to text?
Paste the bytes into the box and the text appears right away. Each byte is two digits, so 48 65 6c 6c 6f gives Hello. Spaces, commas, line breaks and 0x prefixes are all fine between bytes, in upper or lower case.
Why does an odd number of hex digits fail?
Every byte needs two hex digits, like 48 or 0a. A single leftover digit can't be turned into a byte, so the tool stops instead of guessing. Look for a byte that lost its leading zero and add it back.
Does it accept the 0x format?
Yes. 0x48 0x65 0x6C 0x6C 0x6F decodes to Hello, with or without commas and in either case. Other prefixes such as \x, % or U+ aren't accepted, so remove them before you paste.
Why is é two bytes in hex?
The decoder reads UTF-8, where é is c3 a9 and ñ is c3 b1. Unaccented letters take one byte and most emoji take four. Hex from a single-byte table like Latin-1 writes é as e9, which isn't valid UTF-8 on its own, so it fails here.
Is this the same as a hex color code?
No. A color like #ff0000 is three bytes for red, green and blue, not letters. Paste it here without the # and you get an error, because ff is never a valid byte in UTF-8. This tool is for bytes that stand for text.