How to Convert Hexadecimal to Text
Paste pairs of hexadecimal digits, with or without whitespace, to decode bytes as UTF-8. The converter also accepts 0x markers. Check the output for replacement characters if the source is not valid UTF-8.
How Hexadecimal Encoding Works
Each hex pair represents a byte from 00 to FF. Bytes are then interpreted as UTF-8 sequences. Numeric hex conversion is a different task: 41 is decimal 65 as a number, but represents A as an ASCII byte.
Hexadecimal to Text Examples
48 69 decodes to Hi, and 41 decodes to A. An odd number of hex digits leaves an incomplete byte and must be corrected. Preserve byte ordering when copying from a dump.
Unicode, Spacing, and Input Rules
Allowed digits are 0–9 and A–F. Spaces or commas can separate bytes. Non-text bytes or a different character encoding may not produce readable output; inspect the source encoding instead of assuming every hex string is a message.
More examples and technical details
How to Convert Hex to Text
Decoding hex back to text is the step you take when reading a hex dump, inspecting a packet capture, or recovering a string from raw binary data. Every pair of hex digits is one byte, and every byte maps to a character.
- Remove any formatting first: spaces, commas, and 0x prefixes are not part of the data.
- Split the remaining digits into pairs, working from the left. Each pair is one byte.
- Convert each pair from base 16 to decimal. The left digit is worth sixteen times the right digit, so 43 is 4 times 16 plus 3, which is 67.
- Look up each decimal value in an ASCII table and write out the matching character.
Worked example: decoding 43 6F 64 65
43 6F 64 65 = "Code"
Reading a Hex Pair
In a two digit hex byte the left digit carries the high four bits and the right digit carries the low four bits. The left digit is multiplied by 16 and the right digit is added to it, so the range runs from 00 (zero) up to FF (255).
That is the entire range a single byte can hold. Values 32 to 126 are the printable ASCII characters, values below 32 are control codes such as tab and newline, and values above 127 belong to multi byte UTF-8 sequences.
ASCII, Unicode, and UTF-8
ASCII is the original character encoding standard, finalised in 1963. It defines 128 characters: the English alphabet in both cases, the digits 0 to 9, common punctuation, and 33 non printing control codes such as tab, newline, and carriage return. Because 128 values fit in seven bits, every ASCII character fits comfortably inside a single byte.
ASCII covers English and almost nothing else, which is why Unicode exists. Unicode assigns a number, called a code point, to every character in every writing system, plus symbols and emoji. UTF-8 is the encoding that turns those code points into bytes, and it was designed so that the first 128 code points encode to exactly the same single bytes as ASCII. That backward compatibility is why plain English text looks identical in both.
The practical consequence for this tool: English letters, digits, and punctuation each produce one byte. Accented characters, Greek, Cyrillic, Arabic, and CJK characters produce two or three bytes each, and emoji usually produce four. The converter handles all of them correctly using UTF-8.
Where Hex Decoding Fails
- An odd number of hex digits cannot be decoded, because bytes always come in pairs. This usually means a digit was dropped when copying.
- Any character outside 0 to 9 and A to F is invalid. Stray punctuation from a copy and paste is the usual cause.
- Bytes above 7F will not produce sensible characters on their own. They are part of a UTF-8 sequence and need the following bytes to decode correctly.
ASCII Conversion Table
Every printable ASCII character with its decimal code, hexadecimal byte, and binary byte. Codes 0 to 31 are control characters and are not printable, so they are not listed here.
| Char | Dec | Hex | Binary |
|---|---|---|---|
| space | 32 | 20 | 00100000 |
| ! | 33 | 21 | 00100001 |
| " | 34 | 22 | 00100010 |
| # | 35 | 23 | 00100011 |
| $ | 36 | 24 | 00100100 |
| % | 37 | 25 | 00100101 |
| & | 38 | 26 | 00100110 |
| ' | 39 | 27 | 00100111 |
| ( | 40 | 28 | 00101000 |
| ) | 41 | 29 | 00101001 |
| * | 42 | 2A | 00101010 |
| + | 43 | 2B | 00101011 |
| , | 44 | 2C | 00101100 |
| - | 45 | 2D | 00101101 |
| . | 46 | 2E | 00101110 |
| / | 47 | 2F | 00101111 |
| 0 | 48 | 30 | 00110000 |
| 1 | 49 | 31 | 00110001 |
| 2 | 50 | 32 | 00110010 |
| 3 | 51 | 33 | 00110011 |
| 4 | 52 | 34 | 00110100 |
| 5 | 53 | 35 | 00110101 |
| 6 | 54 | 36 | 00110110 |
| 7 | 55 | 37 | 00110111 |
| Char | Dec | Hex | Binary |
|---|---|---|---|
| 8 | 56 | 38 | 00111000 |
| 9 | 57 | 39 | 00111001 |
| : | 58 | 3A | 00111010 |
| ; | 59 | 3B | 00111011 |
| < | 60 | 3C | 00111100 |
| = | 61 | 3D | 00111101 |
| > | 62 | 3E | 00111110 |
| ? | 63 | 3F | 00111111 |
| @ | 64 | 40 | 01000000 |
| A | 65 | 41 | 01000001 |
| B | 66 | 42 | 01000010 |
| C | 67 | 43 | 01000011 |
| D | 68 | 44 | 01000100 |
| E | 69 | 45 | 01000101 |
| F | 70 | 46 | 01000110 |
| G | 71 | 47 | 01000111 |
| H | 72 | 48 | 01001000 |
| I | 73 | 49 | 01001001 |
| J | 74 | 4A | 01001010 |
| K | 75 | 4B | 01001011 |
| L | 76 | 4C | 01001100 |
| M | 77 | 4D | 01001101 |
| N | 78 | 4E | 01001110 |
| O | 79 | 4F | 01001111 |
| Char | Dec | Hex | Binary |
|---|---|---|---|
| P | 80 | 50 | 01010000 |
| Q | 81 | 51 | 01010001 |
| R | 82 | 52 | 01010010 |
| S | 83 | 53 | 01010011 |
| T | 84 | 54 | 01010100 |
| U | 85 | 55 | 01010101 |
| V | 86 | 56 | 01010110 |
| W | 87 | 57 | 01010111 |
| X | 88 | 58 | 01011000 |
| Y | 89 | 59 | 01011001 |
| Z | 90 | 5A | 01011010 |
| [ | 91 | 5B | 01011011 |
| \ | 92 | 5C | 01011100 |
| ] | 93 | 5D | 01011101 |
| ^ | 94 | 5E | 01011110 |
| _ | 95 | 5F | 01011111 |
| ` | 96 | 60 | 01100000 |
| a | 97 | 61 | 01100001 |
| b | 98 | 62 | 01100010 |
| c | 99 | 63 | 01100011 |
| d | 100 | 64 | 01100100 |
| e | 101 | 65 | 01100101 |
| f | 102 | 66 | 01100110 |
| g | 103 | 67 | 01100111 |
| Char | Dec | Hex | Binary |
|---|---|---|---|
| h | 104 | 68 | 01101000 |
| i | 105 | 69 | 01101001 |
| j | 106 | 6A | 01101010 |
| k | 107 | 6B | 01101011 |
| l | 108 | 6C | 01101100 |
| m | 109 | 6D | 01101101 |
| n | 110 | 6E | 01101110 |
| o | 111 | 6F | 01101111 |
| p | 112 | 70 | 01110000 |
| q | 113 | 71 | 01110001 |
| r | 114 | 72 | 01110010 |
| s | 115 | 73 | 01110011 |
| t | 116 | 74 | 01110100 |
| u | 117 | 75 | 01110101 |
| v | 118 | 76 | 01110110 |
| w | 119 | 77 | 01110111 |
| x | 120 | 78 | 01111000 |
| y | 121 | 79 | 01111001 |
| z | 122 | 7A | 01111010 |
| { | 123 | 7B | 01111011 |
| | | 124 | 7C | 01111100 |
| } | 125 | 7D | 01111101 |
| ~ | 126 | 7E | 01111110 |
Looking for a different conversion? Browse every developer tool including binary, hex, octal, and Base64 converters.
Frequently asked questions
How do I convert hexadecimal to text?
Paste complete hexadecimal byte pairs and read the decoded text.
Does the tool support Unicode and special characters?
UTF-8 multi-byte sequences are supported. Other encodings can produce replacement characters.
What input format should I use?
Use pairs such as 48 69 or compact 4869. An odd number of digits is invalid.
Is any input uploaded to a server?
No. Input is processed in this browser tab and is not uploaded by the tool. Copy and download are actions you control; ordinary page analytics do not receive tool input.