Hex to text converter
Paste hexadecimal bytes and read them as text. Works with spaces, no spaces, 0x, \x and % styles, and decodes UTF-8 so accents and emoji come out right.
Reading hex as text
Hexadecimal is base 16. One hex digit holds exactly four bits, so two hex digits make one byte. That's why programmers show raw bytes in hex: 48 is shorter than 01001000 and maps to it digit-for-digit (4 = 0100, 8 = 1000).
To decode a pair, multiply the first digit by 16 and add the second: 6C = 6 × 16 + 12 = 108 = “l”. Letters A–F stand for 10–15.
Spotting what you're looking at
Pairs in the 41–7A range are letters, 20 is a space, and 30–39 are digits. If most pairs are C3, E2 or F0 followed by 80–BF, the text contains accented letters, symbols or emoji in UTF-8. Long runs of 00 or random-looking high bytes usually mean the data is not text at all.
Hex to text table: printable ASCII (20–7E)
| 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 |
| Char | Hex | Dec |
|---|---|---|
| @ | 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 |
| Char | Hex | Dec |
|---|---|---|
| ` | 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 |
Questions people ask
How do I convert hex to text?
Split the hex into pairs of digits. Each pair is one byte: convert it to decimal (48 hex = 72) and look up the character (72 = “H”). Paste the hex above and the converter does it for every byte, decoding UTF-8 sequences as well.
Is hex to text the same as hex to ASCII?
For bytes 00–7F, yes: UTF-8 and ASCII agree. Bytes 80–FF are not ASCII; this tool reads them as UTF-8, which is what nearly all modern text uses.
What formats does the converter accept?
Plain pairs (48 65 6C), a continuous string (48656C), 0x-prefixed values (0x48, 0x65), C-style escapes (\x48\x65), percent-encoding (%48%65) and colon-separated dumps (48:65:6C).
Why do I see � in the output?
The replacement character means those bytes are not a valid UTF-8 sequence. The data may be binary (not text), in a different encoding such as Windows-1252, or missing a byte. Try the encoding identifier.
What is 48 65 6C 6C 6F in text?
“Hello”.
How do you say “I love you” in hexadecimal?
49 20 6C 6F 76 65 20 79 6F 75. Each pair is one character: 49 = I, 20 = space, 6C = l, and so on.
What are 32 hex characters?
Thirty-two hex digits are 16 bytes. That is the length of an MD5 hash, a 128-bit key or a UUID without dashes. Those are not text, so they will not decode into readable words. Paste one into What encoding is this? to check.
Can I decode a hex file?
Yes. Use “Open file” above the hex box to load a .txt hex dump, and “Download” to save the decoded text.