Text to Hex
Convert UTF-8 text bytes into hexadecimal values.
Decode hexadecimal byte values into strict UTF-8 text, including accented text, non-Latin scripts, symbols, and emoji.
Each hexadecimal pair is interpreted as one byte.
Your text is processed in this browser and is not submitted to UnicodeNow.
This tool interprets each hexadecimal pair as one byte, then decodes the byte sequence as strict UTF-8 text. It does not interpret values as Unicode code points. For Unicode values such as U+00E9 or U+1F600, use Unicode Code Points to Text.
UTF-8 bytes for é: C3 A9. Unicode code point for é: U+00E9. The single byte E9 is not equivalent to U+00E9 in UTF-8.
Enter hexadecimal byte values, not U+ code-point notation. Mixed formats are rejected.
Only configured ASCII separators are ignored. Non-breaking spaces and zero-width spaces are rejected.
Hex byte inspection preserves the parsed bytes and does not interpret them as text.
For U+ notation, use Unicode Code Points to Text.
UTF-8 text mode validates the parsed bytes strictly and never inserts replacement characters silently.
Hex byte inspection shows normalized parsed bytes and does not assume a text encoding.
This tool follows a byte-oriented pipeline: hexadecimal pairs become bytes, and those bytes are decoded as strict UTF-8 text. The input 48 65 6C 6C 6F becomes bytes 48, 65, 6C, 6C, 6F, then the UTF-8 decoder produces Hello. Processing runs locally in your browser.
The tool is intentionally one-way. It does not encode text into hex on this route. Use Text to Hex for the reverse workflow.
This distinction matters when you are debugging data copied from logs, packet captures, database dumps or API traces. A hex dump is normally a representation of bytes, not a list of characters. The page therefore validates the byte syntax first, then validates UTF-8 separately, so you can tell whether the problem is malformed hex or a valid byte stream that is not UTF-8 text.
Hex bytes and Unicode code points are different notations. UTF-8 bytes for é are C3 A9, while the Unicode code point is U+00E9. The byte E9 alone is not valid standalone UTF-8 for é; it may be meaningful in another legacy encoding, but this page validates strict UTF-8.
For emoji the difference is even more visible. 😀 is Unicode code point U+1F600, but its UTF-8 byte sequence is F0 9F 98 80. Entering 1F600 as continuous hex means the bytes 1F, 60 and an incomplete final nibble; it is not the same thing as entering a Unicode code point.
48 65 6C 6C 6F
48656C6C6F
0x48 0x65 0x6C
\x48\x65\x6C
Auto-detect accepts clear formats and rejects mixed input such as 0x48 65 \x6C. Byte-pair mode can allow ASCII whitespace, commas or colons according to the separator setting. Continuous mode requires only hexadecimal digits and an even digit count.
Separators are deliberately limited. Ordinary spaces, tabs and line breaks are safe to ignore when that option is selected, but non-breaking spaces, zero-width spaces and punctuation outside the selected format are reported. That prevents invisible copied characters from changing how the byte stream is read.
| Text | UTF-8 hex |
|---|---|
A | 41 |
é | C3 A9 |
€ | E2 82 AC |
😀 | F0 9F 98 80 |
Hex syntax can be valid while the bytes are not valid UTF-8. Common failures include truncated sequences such as C3, unexpected continuation bytes such as A0 A1, overlong encodings such as C0 AF, surrogate encodings such as ED A0 80, and four-byte sequences above U+10FFFF such as F4 90 80 80. Diagnostics use one-based byte offsets.
The output area does not silently replace malformed byte sequences with U+FFFD. If UTF-8 text mode fails, switch to Hex byte inspection to confirm the exact bytes. This is useful for binary headers such as FF D8 FF E0, where the hex is well-formed but the data is not text.
Hexadecimal may represent images, PDFs, ZIP files, protocol packets or arbitrary bytes. Valid hex does not guarantee valid UTF-8. If the input is binary, choose Hex byte inspection to normalize and review the parsed bytes without forcing a text decoding step.
If you know the bytes use another character encoding, use a tool designed for that encoding instead of forcing UTF-8. A byte value such as E9 may decode to é in Windows-1252 or ISO-8859-1, but it is not legal UTF-8 by itself. Keeping that boundary clear avoids mojibake and makes error reports easier to reproduce.
This tool runs in your browser. Your input is not submitted to UnicodeNow. Output is written to a textarea as text, and downloads use Blob URLs that are revoked after use.
For source-code escape syntax such as \x48, this tool accepts the byte form only when the \x-prefixed input format is selected. It still treats the result as bytes, not as JavaScript, Python or C source code, and it never executes the input.
It parses hexadecimal byte values and decodes them using strict UTF-8.
Yes. Each pair from 00 through FF is interpreted as one byte.
E9 is one byte. C3 A9 is the valid UTF-8 byte sequence for é.
Because UTF-8 encodes U+00E9 as two bytes: C3 A9.
Yes. Choose Continuous hexadecimal or Auto-detect for input such as 48656C6C6F.
Yes. Choose 0x-prefixed bytes for input such as 0x48 0x65.
Hexadecimal can represent any bytes, including binary data or text in another encoding.
A lead byte appears without all required continuation bytes.
Yes. Hex can represent arbitrary bytes, including binary file headers and payloads.
No. It decodes bytes. Use Unicode Code Points to Text for U+ notation.
No, unless normalization is explicitly enabled after successful decoding.
No. This tool runs in your browser and does not submit input to UnicodeNow.
Convert UTF-8 text bytes into hexadecimal values.
Convert text to UTF-8 bytes and validate byte sequences.
Decode binary byte groups into UTF-8 text.
Convert decimal bytes or Unicode code point values to text.
Encode and decode UTF-8 text as standard or URL-safe Base64.
Count UTF-8 bytes, code points, grapheme clusters and UTF-16 code units for text.
Compare likely text encodings from raw bytes or byte-like input.
Convert U+XXXX, 0x, and escape-style code points back to text.
Inspect each Unicode character, encoding, category, script and normalization form.
Unicode defines characters and code points. UTF-8 encodes those code points as bytes for files, databases, web pages, APIs and network messages.
Learn what Unicode code points are, how U+ notation works, and how code points differ from glyphs, bytes, code units and visible characters.
A safe workflow for diagnosing broken UTF-8, validating bytes, reversing mojibake, handling double encoding and auditing repairs.
Learn how Unicode escape syntax works across JavaScript, JSON, Python, PHP, Java, HTML, CSS and URLs.
Choose the right Unicode length unit for UI limits, storage limits, APIs, JavaScript, Python and PHP.