Why look at text in hex
When a string misbehaves (a mysterious character in a CSV, a signature that will not match, an API that rejects a name), the fastest diagnosis is to look at its bytes. Hex shows each byte as two characters, so 48 69 is Hi and c3 a9 is é in UTF-8. Invisible characters suddenly become visible: a non-breaking space is c2 a0, a zero-width space e2 80 8b, a Windows line ending 0d 0a.
Hex strings are also what you paste into protocol tools, byte arrays in code and test fixtures.
Worked example
Café → 43 61 66 c3 a9. The first three bytes are plain ASCII letters; c3 a9 is the two-byte UTF-8 form of é. If the same word were saved as Latin-1, the last byte would be e9 instead, which is why mixing encodings garbles accented text.
How this works
The page encodes your text as UTF-8 and writes each byte as two hexadecimal digits, in lowercase or uppercase, with or without spaces between bytes. ASCII characters give one byte each; accented letters two; most other scripts three; emoji four. Spaces, tabs and line breaks are encoded like any other character, which makes hidden whitespace easy to spot. Switch to Decode for the reverse. Everything runs in this tab.
Frequently asked
What is the hex for a space?
20. A non-breaking space is c2 a0 in UTF-8, a frequent cause of strange spacing.
Why does é become two bytes?
UTF-8 stores characters beyond ASCII in two to four bytes; é is c3 a9.
Is this the same as the Unicode code point?
No. These are UTF-8 bytes. The code point of é is U+00E9; use the Unicode converter for code points.
Is my text uploaded?
No. It is converted in your browser.
Sources
- The Unicode Standard, latest version
- RFC 4648 — The Base16, Base32, and Base64 Data Encodings
- Wikipedia — Hexadecimal
Reviewed Oct 17, 2026 · test vectors fixtures/dev/text-to-hex/