Tech

Hex to text converter

Paste hexadecimal (with or without spaces, 0x or \x) and we decode it to real UTF-8 text. It also works in reverse: type text and get its bytes in hex, with the separator and format you choose.

Instant🔒In your browserNo signup
Live
Decoded text (UTF-8)

What decoding hexadecimal is for

Hexadecimal is the language technical tools use to show you raw bytes. When you open a memory dump, inspect a packet from a network protocol in Wireshark, run strings or a hex editor over a binary, or examine evidence in digital forensics, what you see are digit pairs like 48 65 6c 6c 6f. This converter translates them back into readable text instantly, and it is a staple of CTF challenges, where flags often hide encoded in hex. It also earns its keep in everyday debugging: checking exactly which bytes your API sends, understanding why an accent got mangled along the way, or reading a payload that was logged in hex. It accepts the hex exactly as you copied it — with spaces, line breaks, 0x or \\x prefixes, uppercase or lowercase — and decodes real UTF-8, not just ASCII.

How it works: from hex pair to character

One hex digit represents 4 bits, so a pair of digits represents exactly one byte: from 00 (0) to FF (255). Decoding means grouping the digits in pairs, converting each pair to its number, and asking TextDecoder to interpret those bytes as UTF-8. That is why an odd number of digits is always an error: a byte was left half-written. In the opposite direction, TextEncoder turns your text into UTF-8 bytes and each byte is written with its 2 hex digits.

Accents and emoji: multibyte UTF-8 in hex

The first 128 characters (ASCII) take one byte each, but everything else uses several. The ñ is 2 bytes (C3 B1), the sign is 3 (E2 82 AC) and an emoji like 🙂 is 4 (F0 9F 99 82). If you have ever seen "ñ" where "ñ" should be, this was exactly the culprit: someone decoded those 2 bytes with the wrong table. Since this tool uses the browser's native APIs, multibyte characters travel intact in both directions.

Complementary tools

If what you need is to see text as bits instead of hex, use the text to binary converter, which shows each byte as its 8 zeros and ones. And if you want to convert standalone numbers between base 2, 8, 10, 16 or any other — without going through text — that is what the number base converter does.

Reference table: characters and their hex

Printable ASCII characters run from 32 (space) to 126 (~). Here is the cheat sheet with the most looked-up ones:

CharacterDecimalHexBinary
(space)322000100000
!332100100001
#352300100011
$362400100100
%372500100101
&382600100110
*422A00101010
+432B00101011
-452D00101101
.462E00101110
/472F00101111
0483000110000
9573900111001
=613D00111101
?633F00111111
@644001000000
A654101000001
F704601000110
Z905A01011010
a976101100001
f1026601100110
z1227A01111010
ñ (UTF-8, 2 bytes)195 177C3 B111000011 10110001
🙂 (UTF-8, 4 bytes)240 159 153 130F0 9F 99 8211110000 10011111 10011001 10000010

The last two rows show why "one character = one byte" only holds for ASCII: in UTF-8, ñ and emoji are encoded as sequences of 2 to 4 bytes, and each of those bytes shows up as one more hex pair in the output.

FAQ

How is hexadecimal converted to text?

Every pair of hex digits is a byte (00 to FF). Digits are grouped in pairs, each pair becomes a number and the bytes are decoded as UTF-8. 48 65 6C 6C 6F → "Hello".

What does the 0x prefix mean?

It is the programming-language convention for base 16: 0x48 is hex 48, i.e. 72 in decimal. You can paste hex here with or without 0x, and with \\x too.

What happens with accents, ñ or emoji?

In UTF-8 they take several bytes: "ñ" is 2 (C3 B1), "€" is 3 and 🙂 is 4 (F0 9F 99 82). We use TextDecoder/TextEncoder, so they convert exactly in both directions.

What is the difference between hex and Base64?

Both represent bytes as text. Hex uses 2 characters per byte and is easier to inspect; Base64 uses ~1.33 and is more compact for transmission.

What happens if the hex has an odd number of digits?

A byte needs exactly 2 digits, so we show an error with the digit count found instead of inventing a result.

Does it accept hex with spaces, line breaks or uppercase?

Yes: we strip spaces, line breaks and 0x/\\x prefixes before decoding, and A-F can be uppercase or lowercase. Paste the dump as is.

Can I convert text to hex right here?

Yes, switch the mode to "Text → Hex". You choose the separator (space, none or 0x per byte) and uppercase or lowercase letters.

Is my text or hex sent to a server?

No. Everything happens in your browser with TextEncoder and TextDecoder; nothing leaves your device.

Was this generator useful?