Paste a hexadecimal string to decode it to text, or text to encode it to hex —
with correct UTF-8 handling for accented letters, symbols and emoji, not just the
original 128 ASCII characters. Runs entirely in your browser.
Hex ⇄ Text · UTF-8 Correct · Free · Works Offline
Paste your hex string or text. Spaces, 0x prefixes and commas are all handled.
Click Hex → Text or Text → Hex — the tool never guesses silently.
Runs entirely in your browser using proper UTF-8 encoding — nothing is sent anywhere.
Copy the output, or hit Swap to flip the panels and convert back.
A hex to ASCII converter translates hexadecimal byte values into text characters, and back again. Historically "ASCII" meant only the first 128 character codes, but modern text — accented letters, currency symbols, emoji — is encoded as UTF-8, where a single character can take one to four bytes. This tool converts using UTF-8 throughout, so it handles both the classic ASCII case and everything beyond it correctly.
A naive converter maps one JavaScript character straight to one hex byte. That happens to work for
plain English text, but it silently produces the wrong bytes for anything else: an
accented letter like é is really two UTF-8 bytes (C3 A9), not one, and an
emoji is four bytes split across a JavaScript surrogate pair — mapping it byte-for-byte corrupts every
character after it in the string. This tool encodes and decodes with the browser's built-in UTF-8
codec, so the hex it produces matches what you'd get from xxd, a hex editor, or any
standard programming language.
| Character | Decimal | Hex | Description |
|---|---|---|---|
| A | 65 | 41 | Uppercase letter A |
| a | 97 | 61 | Lowercase letter a |
| 0 | 48 | 30 | Digit zero |
| Space | 32 | 20 | Space character |
| ! | 33 | 21 | Exclamation mark |
| Newline | 10 | 0A | Line feed (LF) |
| é | — | C3 A9 | Two UTF-8 bytes, not one |
| 😀 | — | F0 9F 98 80 | Four UTF-8 bytes |
Try the sample buttons above, or paste 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 (decodes to "Hello World!") to see the encoding direction.
48 65 6C 6C 6F48656C6C6F — common in binary dumps0x48 0x65 0x6C — common in C/C++48,65,6C,6C,6F48 6c 6F 6C 6f — normalised automatically48 65 6C instead of 48 65 6c.48 decodes to H, 65 to e. This tool decodes using UTF-8, so it correctly handles accented letters, symbols and emoji, not just the original 128 ASCII characters.é becomes two bytes (C3 A9) and an emoji becomes four, matching a standard hex dump or any mainstream programming language. A naive one-character-to-one-byte mapping gets this wrong for anything outside plain ASCII.0x prefix, or commas — and click Hex → Text. Separators are stripped, the digits are grouped into byte pairs, and the bytes are decoded as UTF-8.0x-prefixed, comma-separated, and mixed case — the parser strips anything that isn't a hex digit before decoding.