๐ค Hex to Text Converter: Decode Hexadecimal to Text
By Shihab Mia ยท Updated 2026-07-27
Spaces, commas and 0x prefixes are ignored. Only the digits 0-9 and a-f are read, in pairs.
| Hex pair | Decimal | Character |
|---|
This hex to text converter turns any hexadecimal string into readable text in one step, so 48 69 becomes Hi and 48 65 6c 6c 6f becomes Hello. It reads the hex two characters at a time, treats each pair as one byte, converts that byte to a code point, and joins the characters into a string. Spaces, commas and 0x prefixes are stripped automatically, everything runs in your browser, and each pair is shown with its decimal value and decoded character so you can check the work.
What is the Hex to Text Converter?
Hexadecimal, usually shortened to hex, is a base 16 number system. It uses the ten digits 0 to 9 and then the six letters a to f to stand for the values 10 to 15. Two hex digits together can count from 00 up to ff, which is 0 to 255 in decimal, and that is exactly the range of a single byte. Because one byte holds one character in ASCII and in the first block of Unicode, hex is a compact and popular way to write text as raw bytes: every character becomes a neat two-digit code.
Converting hex to text reverses that packing. You split the hex string into pairs of digits, turn each pair into a number, then look up the character that has that number as its code point. Take 48: the digit 4 is worth 4 times 16, which is 64, and the digit 8 is worth 8, so 48 in hex is 72 in decimal. Code point 72 is the capital letter H. Do the same for 69 (6 times 16 plus 9 = 105, the letter i) and you have decoded Hi. The converter above performs this pair by pair and prints each step in the table.
The method never changes no matter how long the input is. For 48 65 6c 6c 6f the five pairs decode to 72, 101, 108, 108 and 111, which are H, e, l, l and o, spelling Hello. Separators such as spaces and commas are only there to make the hex easier to read, so the tool removes them before pairing the digits. It also removes any 0x prefixes, the marker many programming languages put in front of a hex number, so 0x54 and 54 are treated the same.
Two rules keep the conversion honest. First, only the characters 0-9 and a-f are valid hex, so anything else is flagged as an error. Second, the cleaned string must have an even number of digits, because every character needs exactly two. An odd length means a digit is missing or an extra one slipped in, and the tool tells you the digit count so you can find the problem rather than silently decoding the wrong bytes. Hex letters are not case sensitive, so 6C and 6c decode to the same character.
This converter decodes one byte pair into one code point at a time, which matches plain ASCII text exactly for values 00 to 7f. It is worth knowing what that means for text outside that range. Real UTF-8, the encoding behind most web pages and files today, represents many characters, such as accented letters, currency symbols and emoji, using two, three or even four bytes joined together rather than one. If a hex string was produced by encoding a character in UTF-8, decoding it one pair at a time here will show several separate characters instead of the single one that was originally encoded. For straightforward ASCII text, hex dumps of English source code, and classroom exercises, that distinction never comes up, since every character genuinely is one byte.
You will find the same underlying conversion built into most programming environments, because reading hex back into text is a common task. In Python it is bytes.fromhex("4869").decode("utf-8"), in Node.js it is Buffer.from("4869", "hex").toString(), and in a Linux or macOS terminal it is echo 4869 | xxd -r -p. Those approaches are exactly right for scripts and pipelines, but for a one-off value copied from a log, a debugger, or a homework question, pasting it into an online converter like this one is faster than opening an editor and writing a line of code.
When to use it
- Decoding a hex dump from a file, packet capture, or debugger back into readable text.
- Reading hex values copied out of source code, config files, or a database column.
- Checking a homework or exam answer when converting hexadecimal to characters by hand.
- Turning a hex-encoded token, message, or log line into plain text to see what it says.
- Verifying the output of a hex to text or text to hex conversion done in a script or a CTF challenge.
- Inspecting hex-encoded strings pulled from network traffic, browser dev tools, or a REST API response.
How to use the Hex to Text Converter
- Paste or type your hexadecimal into the input box, or tap one of the example buttons.
- Read the decoded text at the top; it updates instantly as you type.
- Check the table to see each hex pair, its decimal code point, and the character it becomes.
- If an error appears, check the digit count and remove any characters outside 0-9 and a-f.
- Use the Copy button to grab the decoded text or the cleaned hex for use elsewhere.
Formula & method
Worked examples
Convert the hex 48 69 to text.
- Remove the space so the digits become 4869.
- Split into 2-digit pairs: 48 and 69.
- Convert 48: 4x16 + 8 = 72, which is code point 72, the letter H.
- Convert 69: 6x16 + 9 = 105, which is code point 105, the letter i.
- Join the characters in order.
Result: The hex 48 69 decodes to the text Hi.
Convert the hex 48 65 6c 6c 6f to text.
- Strip the spaces to get 48656c6c6f, then split into pairs: 48, 65, 6c, 6c, 6f.
- Convert 48 to 72 (H) and 65 to 101 (e).
- Convert 6c to 108 (l), and the second 6c to 108 (l) again.
- Convert 6f to 111 (o).
- Join the five characters in order.
Result: The hex 48 65 6c 6c 6f decodes to the text Hello.
Convert 0x54,0x6f,0x6f,0x6c,0x73 (0x prefixes and commas) to text.
- Strip every 0x prefix, leaving 54,6f,6f,6c,73.
- Strip the commas, leaving 546f6f6c73, then split into pairs: 54, 6f, 6f, 6c, 73.
- Convert 54: 5x16 + 4 = 84, code point 84, the letter T.
- Convert each 6f: 6x16 + 15 = 111, code point 111, the letter o, twice.
- Convert 6c: 6x16 + 12 = 108, the letter l. Convert 73: 7x16 + 3 = 115, the letter s.
- Join the five characters in order.
Result: The hex 0x54,0x6f,0x6f,0x6c,0x73 decodes to the text Tools.
Common characters with their hex, decimal, and binary code points
| Character | Hex | Decimal | Binary |
|---|---|---|---|
| space | 20 | 32 | 00100000 |
| 0 | 30 | 48 | 00110000 |
| 9 | 39 | 57 | 00111001 |
| A | 41 | 65 | 01000001 |
| H | 48 | 72 | 01001000 |
| Z | 5A | 90 | 01011010 |
| a | 61 | 97 | 01100001 |
| i | 69 | 105 | 01101001 |
| z | 7A | 122 | 01111010 |
Hex digit values in base 16
| Hex digit | Decimal value | Binary (4 bits) |
|---|---|---|
| 0 | 0 | 0000 |
| 1 | 1 | 0001 |
| 7 | 7 | 0111 |
| 8 | 8 | 1000 |
| 9 | 9 | 1001 |
| A | 10 | 1010 |
| B | 11 | 1011 |
| C | 12 | 1100 |
| D | 13 | 1101 |
| E | 14 | 1110 |
| F | 15 | 1111 |
How to convert hex to text in other tools and languages
| Tool or language | Method | Example |
|---|---|---|
| This converter | Paste hex, read the result instantly | 48 69 -> Hi |
| Python | bytes.fromhex(value).decode("utf-8") | bytes.fromhex("4869").decode() -> Hi |
| Node.js / JavaScript | Buffer.from(value, "hex").toString() | Buffer.from("4869","hex").toString() -> Hi |
| Linux or macOS terminal | Pipe the hex through xxd in reverse mode | echo 4869 | xxd -r -p -> Hi |
| Excel | Nest CHAR and HEX2DEC for each byte pair | =CHAR(HEX2DEC("48"))&CHAR(HEX2DEC("69")) -> Hi |
Common mistakes to avoid
- Leaving an odd number of hex digits. Every character needs exactly two hex digits, so the cleaned string must have an even length. An odd count means a digit was dropped or added. Recount the pairs, or add a leading 0 to a value written as one digit.
- Splitting the digits in the wrong place. Pairs are read from the left in fixed groups of two: 4869 is 48 then 69, never 4, 86, 9. If separators are inconsistent, remove them all first and then split every two digits.
- Treating hex letters as case sensitive. The letters a to f stand for the same values whether written in upper or lower case, so 6C and 6c both decode to the letter l. Do not change a character just because the case differs.
- Forgetting to strip the 0x prefix. Many languages print hex with a 0x marker, as in 0x48. That prefix is not part of the value and must be removed before pairing, otherwise the 0 and x get read as data. This tool strips 0x automatically.
- Expecting multi-byte UTF-8 characters to decode as one character. This tool converts each byte pair into one code point, which is correct for plain ASCII. If the hex actually came from a UTF-8 encoded accented letter or emoji, which can use two to four bytes for one character, you will see several separate characters instead of the original single one.
- Confusing hex with Base64 or URL encoding. Hex only ever uses the digits 0-9 and the letters a-f in pairs. Base64 uses a much wider set of letters, digits, plus and slash, and URL encoding uses percent signs. Pasting Base64 or a percent-encoded string into a hex decoder will fail or produce nonsense.
Glossary
- Hexadecimal
- A base 16 number system using the digits 0-9 and the letters a-f, where each position is worth sixteen times the one to its right.
- Byte
- A group of 8 bits, written as exactly two hex digits. One byte holds a value from 0 to 255 and, in ASCII, one character.
- Code point
- The number assigned to a character in a character set. Hex to text turns each byte value into the character with that code point.
- ASCII
- A character set that maps the values 0 to 127 to letters, digits, punctuation, and control codes. The letter H is 72, or 48 in hex.
- Nibble
- Half a byte, that is 4 bits, written as a single hex digit. Two nibbles make one byte and one character.
- 0x prefix
- A marker such as 0x placed in front of a number to show it is written in hexadecimal. It is a notation, not part of the value.
- UTF-8
- A variable width text encoding that represents each character using one to four bytes. Plain English letters use one byte, but many accented letters, symbols and emoji use more than one.
- Hex dump
- A display of raw data as hexadecimal byte pairs, often shown next to the equivalent text, used to inspect files, memory, or network traffic.
Frequently asked questions
How do you convert hex to text?
Split the hex into 2-digit pairs, turn each pair into a decimal number, then read the character with that code point. For example 48 becomes 72, which is H, and 69 becomes 105, which is i, so 48 69 is Hi.
What does 48 69 mean in hex?
The hex 48 69 decodes to the text Hi. The pair 48 is code point 72 (the letter H) and the pair 69 is code point 105 (the letter i).
What is 48 65 6c 6c 6f in text?
The hex 48 65 6c 6c 6f decodes to Hello. The five pairs map to 72, 101, 108, 108 and 111, which are H, e, l, l and o.
Why does my hex give an error?
A hex to text conversion fails if the value contains characters other than 0-9 and a-f, or if the digit count is odd. Every character needs exactly two hex digits, so an odd length means one is missing or extra.
Do spaces and 0x prefixes matter?
No. Spaces, commas, and 0x prefixes are only there to make hex readable, so this converter strips them before pairing the digits. So 0x48 0x69, 48 69, and 4869 all decode to the same text.
Is hex to text the same as hex to ASCII?
For values 00 to 7f they match, because those bytes are ASCII characters. This tool reads each byte as a Unicode code point, so it also handles the full 00 to ff range the same way a byte string is decoded.
What is the difference between hex to text and hex to decimal?
Hex to decimal only converts the number system, so 48 in hex becomes 72 in decimal and stops there. Hex to text takes that extra step and looks up which character has 72 as its code point, giving you the letter H.
Can hex represent letters, numbers, and symbols, or only letters?
Hex can represent any byte value from 00 to ff, which covers letters, digits, punctuation, and control characters, not just letters. Values 00 to 7f are standard ASCII, and 80 to ff extend into accented letters and symbols depending on the encoding.
How do I convert hex to text in Python?
Use bytes.fromhex("4869").decode("utf-8"), which turns the hex string into raw bytes and then decodes those bytes into text, returning Hi for that example.
Can I convert hex to text without removing the spaces myself?
Yes. This converter automatically strips spaces, commas, and 0x prefixes before pairing the digits, so you can paste hex exactly as copied from a log, debugger, or dump without cleaning it up first.