Hex to Text / ASCII to Hex
Convert hexadecimal bytes to readable text and back. Handles ASCII and multi-byte UTF-8, and accepts spaces, commas, 0x and \x prefixes.
Flexible Input
Paste hex with spaces, commas, 0x or \x prefixes, or as one continuous string. The parser normalises it for you.
UTF-8 Aware
Multi-byte characters such as CJK text and emoji decode correctly, and invalid byte sequences are flagged instead of silently dropped.
Two-Way & Private
Convert hex to text or text to hex with your choice of delimiter and case. Everything runs locally in your browser.
// HEX TO TEXT TECHNICAL INFO
How It Works:
Each pair of hexadecimal digits is one byte (0-255). The bytes are decoded as UTF-8: values below 0x80 are plain ASCII characters, while lead bytes such as 0xE4 or 0xF0 start multi-byte sequences for characters outside ASCII.
Example:
48 65 6C 6C 6F → Hello
Why Convert Hex to Text:
- >Read hex dumps from debuggers, packet captures and logs
- >Decode hex-encoded strings in URLs, APIs and database exports
- >Inspect the exact bytes behind a string, including non-ASCII characters
- >Prepare hex literals for source code, such as \x escapes
>> frequently asked questions
Q: What is a hex to text converter?
A: It turns hexadecimal byte values into the characters they represent. For example, 48 65 6C 6C 6F is the five bytes of the word "Hello". The reverse direction turns text into its hex bytes.
Q: How do I convert hex to text?
A: Choose HEX → TEXT, paste your hex into the input box and the decoded text appears instantly. Spaces, commas and 0x or \x prefixes are all accepted, so you can paste straight from a hex editor or a log.
Q: How do I convert text to hex?
A: Switch to TEXT → HEX, type or paste your text, pick a delimiter (space, none, comma, 0x or \x) and optionally upper-case output. The tool encodes the text as UTF-8 and shows each byte as two hex digits.
Q: Why do I get an error about an odd number of digits?
A: Every byte is two hex digits, so a continuous string must have an even length. A missing or extra digit usually means a character was cut off when copying. Inputs separated by spaces are padded automatically, so "4 8 65" is read as 04 08 65.
Q: Does it support Unicode and emoji?
A: Yes. Text is encoded and decoded as UTF-8, so a character like 你 becomes E4 BD A0 and an emoji such as 😀 becomes F0 9F 98 80. Bytes that are not valid UTF-8 are decoded with replacement characters and a warning is shown.
Q: What is the difference between hex, ASCII and UTF-8?
A: ASCII defines 128 characters, each fitting in one byte (00-7F). UTF-8 is a superset: it keeps ASCII unchanged and uses 2-4 bytes for everything else. Hex is just a human-readable way of writing those byte values.
Q: Is my data sent to a server?
A: No. The conversion happens entirely in your browser with JavaScript, so nothing you paste is uploaded or stored.
// ASCII to hex reference table
Printable ASCII characters and their hexadecimal and decimal byte values. Every character below is a single byte in UTF-8, so the hex you see here is exactly what the converter produces for plain English text.
| Char | Hex | Dec | Char | Hex | Dec | Char | Hex | Dec |
|---|---|---|---|---|---|---|---|---|
| space | 20 | 32 | ! | 21 | 33 | " | 22 | 34 |
| # | 23 | 35 | $ | 24 | 36 | % | 25 | 37 |
| & | 26 | 38 | ' | 27 | 39 | ( | 28 | 40 |
| ) | 29 | 41 | * | 2A | 42 | + | 2B | 43 |
| , | 2C | 44 | - | 2D | 45 | . | 2E | 46 |
| / | 2F | 47 | 0 | 30 | 48 | 1 | 31 | 49 |
| 2 | 32 | 50 | 3 | 33 | 51 | 4 | 34 | 52 |
| 5 | 35 | 53 | 6 | 36 | 54 | 7 | 37 | 55 |
| 8 | 38 | 56 | 9 | 39 | 57 | : | 3A | 58 |
| ; | 3B | 59 | < | 3C | 60 | = | 3D | 61 |
| > | 3E | 62 | ? | 3F | 63 | @ | 40 | 64 |
| A | 41 | 65 | B | 42 | 66 | C | 43 | 67 |
| D | 44 | 68 | E | 45 | 69 | F | 46 | 70 |
| G | 47 | 71 | H | 48 | 72 | I | 49 | 73 |
| J | 4A | 74 | K | 4B | 75 | L | 4C | 76 |
| M | 4D | 77 | N | 4E | 78 | O | 4F | 79 |
| P | 50 | 80 | Q | 51 | 81 | R | 52 | 82 |
| S | 53 | 83 | T | 54 | 84 | U | 55 | 85 |
| V | 56 | 86 | W | 57 | 87 | X | 58 | 88 |
| Y | 59 | 89 | Z | 5A | 90 | [ | 5B | 91 |
| \ | 5C | 92 | ] | 5D | 93 | ^ | 5E | 94 |
| _ | 5F | 95 | ` | 60 | 96 | a | 61 | 97 |
| b | 62 | 98 | c | 63 | 99 | d | 64 | 100 |
| e | 65 | 101 | f | 66 | 102 | g | 67 | 103 |
| h | 68 | 104 | i | 69 | 105 | j | 6A | 106 |
| k | 6B | 107 | l | 6C | 108 | m | 6D | 109 |
| n | 6E | 110 | o | 6F | 111 | p | 70 | 112 |
| q | 71 | 113 | r | 72 | 114 | s | 73 | 115 |
| t | 74 | 116 | u | 75 | 117 | v | 76 | 118 |
| w | 77 | 119 | x | 78 | 120 | y | 79 | 121 |
| z | 7A | 122 | { | 7B | 123 | | | 7C | 124 |
| } | 7D | 125 | ~ | 7E | 126 |
// Hex to text examples
A few quick conversions you can paste into the tool above to see how it behaves.
| Hex | Text | Note |
|---|---|---|
| 48 65 6C 6C 6F | Hello | Plain ASCII, one byte per character |
| 0x48 0x69 | Hi | 0x prefixes are ignored |
| \x4f\x4b | OK | Escape-style \x sequences work too |
| E4 BD A0 E5 A5 BD | 你好 | Multi-byte UTF-8: three bytes per CJK character |
| F0 9F 98 80 | 😀 | Four bytes for one emoji |