Hex to UTF-8 Converter
Convert hex-encoded bytes to UTF-8 text. Correctly decodes multi-byte sequences — so E2 82 AC becomes €, not garbage. Supports space, comma, and 0x-prefix input.
Hex Input
UTF-8 Output
What Is Hex to UTF-8 Conversion?
UTF-8 is a variable-width encoding that uses 1 to 4 bytes to represent every character in the Unicode standard. Everyday ASCII letters like "H" fit in one byte (0x48), but characters like the Euro sign € need three bytes (E2 82 AC), and emoji like 😀 need four. A plain hex-to-string converter treats every byte independently — which is fine for ASCII but produces garbled output the moment a multi-byte character appears. This tool assembles the bytes first and then runs the full TextDecoder UTF-8 pipeline, so you get the correct character every time. That matters when you are reading network packet payloads in Wireshark, inspecting binary files in a hex editor, or debugging string data from an API response. The encoding itself is defined in RFC 3629 and is the dominant encoding on the web today. The optional byte table below the output shows which bytes grouped together to form each character — useful for understanding how multi-byte sequences work.
How to Use
Paste your hex bytes
Type or paste hex bytes into the input box. Separate them with spaces, commas, or newlines. Values prefixed with 0x (like 0xE2 0x82 0xAC) are also accepted.
Read the decoded UTF-8 output
The tool assembles the bytes and decodes them as UTF-8 in real time. Multi-byte characters like € or 日 appear correctly. Malformed sequences are flagged with a replacement character.
Copy or download the result
Click Copy to grab the decoded text, or Download to save it as a .txt file. Toggle "Show byte table" to see how the bytes map to each character.
Example
Two examples in one: "Hello" uses single-byte ASCII sequences, while the Euro sign € is a classic 3-byte UTF-8 character.
Hex bytes → UTF-8 text
48 65 6C 6C 6F 20 E2 82 AC→ UTF-8 Output
Hello €Byte breakdown:
48 → H
65 → e
6C → l
6C → l
6F → o
20 → (space)
E2 82 AC → €FAQ
What is the difference between Hex to String and Hex to UTF-8?
A basic hex-to-string converter maps each byte one-to-one to a character code point. That works fine for ASCII (bytes 0x00–0x7F), but bytes above 0x7F in UTF-8 are part of multi-byte sequences — they must be assembled together before you get the right character. Hex to UTF-8 does that assembly step, so characters like € (E2 82 AC) and 日 (E6 97 A5) decode correctly.
What input formats are supported?
The converter accepts bytes separated by spaces (48 65 6C), commas (48,65,6C), newlines, or any mix of those. Values with a 0x prefix (0xE2 0x82 0xAC) are stripped and parsed normally. You can also paste a continuous hex string without separators as long as each byte is exactly 2 digits.
What happens with invalid or incomplete sequences?
If bytes form an incomplete or illegal UTF-8 sequence (for example a lone continuation byte like 0x80), the browser's TextDecoder replaces it with the Unicode replacement character U+FFFD (�). The rest of the string still decodes normally.
How many bytes does a UTF-8 character use?
It depends on the character. ASCII characters (U+0000–U+007F) use 1 byte. Characters like accented letters and the Euro sign (U+0080–U+07FF) use 2 bytes. Most CJK characters (U+0800–U+FFFF) use 3 bytes. Emoji and supplementary characters (U+10000–U+10FFFF) use 4 bytes. The full rules are in RFC 3629.
Where do I encounter hex-encoded UTF-8 in practice?
Common places: URL percent-encoding (e.g., %E2%82%AC is the Euro sign in a URL), network packet payloads captured in Wireshark, database BLOBs stored as hex strings, and binary protocol debugging. The MDN percent-encoding article is a good read if you work with URLs.
Can I decode emoji using this tool?
Yes. Emoji are 4-byte UTF-8 sequences. For example, 😀 is encoded as F0 9F 98 80. Paste those four bytes and the tool correctly outputs the emoji. The byte table will show all four bytes grouped together as a single character entry.