
Options
Paste hex bytes and read them as UTF-8 text, or type text and see its hex bytes, updated as you type. The decoder accepts hex in almost any format: spaced or run together, 0x lists, \x escapes, URL percent-encoding, C arrays, and xxd or hexdump output. The Breakdown tab shows which bytes make up each character, and invalid UTF-8 is pointed out byte by byte instead of silently turning into question marks. You can also decode as UTF-16, Latin-1, or Windows-1252, and turn any file into a hex dump. Everything runs in your browser.
How to convert hex to UTF-8 text
- Choose Hex to text and paste your hex. Spaces, commas, and prefixes like
0xare fine. - The text appears on the right. Invisible characters such as line breaks, tabs, and zero-width spaces are labeled so you can see them.
- Open Breakdown to see each character with its code point and bytes.
- Click Copy, Download the text, or save the raw bytes as a .bin file.
To go the other way, choose Text to hex, type or paste text, and pick a format. Swap turns the result into the new input so you can check a round trip.
How UTF-8 stores characters
UTF-8 uses one to four bytes per character. Plain English letters and digits take one byte each, which is why ASCII text looks the same in UTF-8. Accented letters and most other alphabets take two bytes, symbols such as the euro sign take three, and emoji take four. The first byte tells a decoder how many bytes belong to the character, and every byte after it starts with the bits 10, which is why it falls in the range 80 to BF.
| Character | Code point | UTF-8 bytes | Bytes |
|---|---|---|---|
| A | U+0041 | 41 | 1 |
| e with an acute accent | U+00E9 | C3 A9 | 2 |
| Euro sign | U+20AC | E2 82 AC | 3 |
| Grinning face emoji | U+1F600 | F0 9F 98 80 | 4 |
| Byte order mark | U+FEFF | EF BB BF | 3 |
Hex formats the decoder accepts
| Format | Example | Where you see it |
|---|---|---|
| Plain | 48656c6c6f | Hashes, database blobs, log files |
| Spaced or separated | 48 65 6C, 48:65:6C, 48-65-6C | Network tools, MAC-style dumps |
| 0x list or C array | {0x48, 0x65, 0x6C} | C, C++, Arduino, and firmware code |
| Escapes | \x48\x65\x6C | Python bytes, shell strings, exploits and payloads |
| Percent-encoding | %48%65%6C | URLs and form data |
| Hex dump | 00000000: 4865 6c6c 6f Hello | xxd, hexdump -C, and debuggers |
| Code points | U+0048 U+0065 | Unicode charts and documentation |
Fixing garbled text
When text shows up as é instead of an accented e, UTF-8 bytes were read as Windows-1252 or Latin-1. Text to hex with Windows-1252 encoding, followed by Swap and Hex to text as UTF-8, recovers the original. The reverse problem, a single unexpected byte like E9 on its own, means the text was saved as Latin-1 or Windows-1252, and the decoder suggests switching. If every other byte is 00, the data is UTF-16, and the decoder suggests that too.
Frequently asked questions
What does an invalid UTF-8 byte mean?
It means the bytes don't form a valid UTF-8 character at that point, often because the data uses another encoding or was cut off in the middle of a character. The tool marks the bad bytes in red and shows where they are, and the text gets a replacement character there, just like a browser would show.
Is hex to UTF-8 the same as hex to ASCII?
For bytes 00 to 7F, yes. ASCII is the first 128 characters of UTF-8 and the bytes are the same. Bytes from 80 to FF are where they differ: in UTF-8 they combine into multi-byte characters like accented letters and emoji.
Why do I get an odd number of hex digits error?
Each byte is exactly two hex digits, so a missing or extra digit leaves half a byte. The tool decodes everything before it and tells you, so you can find the typo.
Can I convert a file to hex?
Yes. Choose Text to hex and open any file, including images and other binary files. You'll get its bytes in the format you pick, including a hex dump with offsets.
Can I turn hex back into a file?
Yes. In Hex to text, the .bin button saves the decoded bytes exactly as they are, which works for images, archives, or any other binary data.
Is my data uploaded anywhere?
No. Everything is converted in your browser and nothing is sent to a server.
