Hex to Text Converter
Decode hexadecimal bytes into readable text, or turn text into hex, with correct UTF-8 handling for accents, symbols and emoji. Paste hex in almost any format: spaces, 0x, \x, commas or none. Everything runs in your browser.
Character and byte breakdown
How to use the Hex to Text Converter
- Pick a direction: Hex → Text to decode, or Text → Hex to encode.
- Paste your input. Hex can be written as 48656c6c6f, 48 65 6c, 0x48,0x65 or \x48\x65; separators are detected automatically.
- Choose the encoding: UTF-8 is right for almost all modern text; use ISO-8859-1 for legacy single-byte text.
- Set the hex format and letter case when encoding, then press Convert.
- Copy the result, swap directions, or download the bytes as a file. Open the breakdown to inspect each character.
ASCII hex reference
| Hex | Char | Hex | Char | Hex | Char | Hex | Char |
|---|---|---|---|---|---|---|---|
| 20 | space | 30 | 0 | 41 | A | 61 | a |
| 21 | ! | 31 | 1 | 42 | B | 62 | b |
| 22 | " | 39 | 9 | 48 | H | 65 | e |
| 2C | , | 3A | : | 4F | O | 6F | o |
| 2E | . | 3F | ? | 5A | Z | 7A | z |
| 0A | line feed (LF) | 0D | carriage return (CR) | 09 | tab | 7F | DEL |
Upper-case letters run from 41 (A) to 5A (Z), lower-case from 61 (a) to 7A (z), and digits from 30 (0) to 39 (9). Adding 20 to an upper-case letter gives the lower-case one.
UTF-8 byte patterns
| Code points | Bytes | First byte | Example |
|---|---|---|---|
| U+0000 – U+007F | 1 | 00–7F | A → 41 |
| U+0080 – U+07FF | 2 | C2–DF | é → C3 A9 |
| U+0800 – U+FFFF | 3 | E0–EF | € → E2 82 AC |
| U+10000 – U+10FFFF | 4 | F0–F4 | 😀 → F0 9F 98 80 |
Continuation bytes always fall between 80 and BF. A byte order mark (BOM) at the start of a UTF-8 file is EF BB BF; in UTF-16 it is FF FE (little-endian) or FE FF (big-endian).
Where you meet hex text
- Programming: escape sequences like
"\x48\x69"in C, Python and JavaScript, and byte arrays like{0x48, 0x69}. - URLs: percent-encoding writes bytes as
%E2%82%AC; for whole URLs use the URL Encoder Decoder. - Networking and forensics: packet captures, hex dumps and MAC addresses use colon or space separated bytes.
- CTF and puzzles: hidden messages are often hex, binary or Base64; see the Binary Translator and Base64 Encoder Decoder.
Frequently asked questions
How do I convert hex to text?
Each pair of hex digits is one byte (00 to FF). The bytes are then decoded with a character encoding: in ASCII and UTF-8, 48 is H, 65 is e and 6C is l, so 48 65 6C 6C 6F is Hello. Paste the hex and the text appears instantly.
Why do some characters take several bytes?
UTF-8 uses 1 byte for ASCII characters, 2 bytes for most accented Latin, Greek and Cyrillic letters, 3 bytes for most other scripts and symbols like € (E2 82 AC), and 4 bytes for emoji such as 👋 (F0 9F 91 8B). This tool decodes and encodes those sequences correctly.
What is the difference between hex to ASCII and hex to UTF-8?
ASCII only defines bytes 00–7F, so it covers English letters, digits and basic punctuation. UTF-8 is identical for those bytes and adds multi-byte sequences for every other character. Choosing UTF-8 is safe for ASCII data too.
Why do I get an odd number of hex digits error?
Every byte needs exactly two hex digits. If the input has, for example, 9 digits, one byte is incomplete; a digit may be missing or a stray character was pasted. With separators, single digits like 0x5 are padded to 05 automatically.
What does the � character mean?
It is the Unicode replacement character. It appears when the bytes are not valid in the selected encoding, for example a lone C3 byte in UTF-8, or bytes above 7F in ASCII mode. Try ISO-8859-1 for older files.
Is my data uploaded?
No. Conversion uses the browser's own TextEncoder and TextDecoder plus plain JavaScript. Nothing leaves your device.