Hex to Text Converter
Convert hexadecimal to readable text with correct UTF-8, so emoji and accented c...Convert hexadecimal to readable text with correct UTF-8, so emoji and accented characters decode back exactly. Paste spaced, continuous, or 0x-prefixe...
Updated
Paste hex any way you have it. Spaces, commas, newlines, and 0x prefixes are all stripped before decoding, so 48 69, 4869, and 0x48 0x69 all become Hi.
Hex input
Text output
Live counts
Common hex values in text
| Character | Decimal | Hex | With 0x |
|---|---|---|---|
| A | 65 | 41 | 0x41 |
| Z | 90 | 5A | 0x5A |
| a | 97 | 61 | 0x61 |
| z | 122 | 7A | 0x7A |
| 0 | 48 | 30 | 0x30 |
| 9 | 57 | 39 | 0x39 |
| space | 32 | 20 | 0x20 |
| ! | 33 | 21 | 0x21 |
Quick answer
To convert hex to text, paste your hexadecimal into the box and read the decoded text on the right. Every two hex digits are one byte, and the bytes are decoded as UTF-8, so 48 69 becomes Hi and 41 becomes A. You can paste the bytes spaced, comma separated, on separate lines, with 0x prefixes like 0x48, or as one continuous string like 4869, and the tool strips the formatting for you. Because it uses real UTF-8, accented letters and emoji, such as c3 a9 for é, decode back exactly. Everything runs in your browser, so no hex is ever uploaded.
Converter Features
Why Use Hex to Text Converter?
Accepts Any Hex Format
Paste hex with spaces, commas, newlines, or 0x prefixes, or as one continuous string. The decoder strips the formatting and reads the byte pairs, so 48 69 and 4869 both give Hi.
Correct UTF-8 Decoding
Bytes are decoded as real UTF-8, so emoji and accented letters like é (c3 a9) come back exactly instead of turning into garbled symbols. Each pair of hex digits is one byte.
Friendly Error Checks
Odd number of digits or a stray non-hex character? The decoder names the exact problem, like the unpaired digit or the letter that is not valid hex, so you fix it in one read.
Reverse to Text to Hex
One tap swaps direction so you can encode text back to hex, with a choice of separator, uppercase or lowercase, a 0x prefix, and byte grouping for a clean hex dump.
Live Byte and Digit Counts
Watch the decoded character count, the UTF-8 byte count, and the hex digit total update as you paste, so you always know exactly how much data you are decoding.
100% In Your Browser
Every conversion runs on your device in JavaScript. No hex you paste is ever uploaded, logged, or sent to a server, and it keeps working offline.
Common Uses for Hex to Text
Debugging and Data Inspection
Turn a hex dump or memory snippet back into readable text to diagnose encoding issues and hidden characters.
Programming and Protocols
Decode 0x-prefixed bytes from source code or verify what an encoded payload actually says while building parsers.
Network and Packet Analysis
Read the text inside hex-encoded packets and protocol frames captured during troubleshooting.
Security and CTF Challenges
Decode hex-encoded strings and payloads while analysing samples or solving capture-the-flag puzzles.
How It Works
Paste your hex
Drop your hexadecimal into the input box. Spaces, commas, newlines, and 0x prefixes are all fine, so paste it however you have it and the text appears instantly.
Read the decoded text
Every two hex digits become one byte, and the bytes are decoded as UTF-8 into readable text on the right. Invalid hex shows a clear message instead of a wrong result.
Copy, download, or reverse
Press Copy to put the text on your clipboard, or Download to save it as a file. Swap the panels to encode the text back to hex with your chosen format.
Tips and Best Practices
Two Hex Digits Per Byte
Read hex in pairs. Each pair of digits is one byte, so 48 69 is two bytes, which decode to the two letters Hi.
Separators Are Optional
You can paste hex with spaces, commas, 0x prefixes, or as one long string. The decoder splits it into byte pairs either way, so 4869 also decodes to Hi.
Odd Length Means a Missing Digit
Every byte needs exactly two digits, so an odd number of digits is an error. If you see the even-length message, one digit is unpaired or was cut off.