Skip to content
MoneyDeck

Hex to Text Converter

Decode hexadecimal bytes to readable text — or encode text as hex

Updated · Free, no signup

Result

Hello, World!

Bytes

13

Characters

13

Status

Decoded

Byte breakdown (first 64 bytes)

#HexDecimalBinaryCharacter
0487201001000H
16510101100101e
26C10801101100l
36C10801101100l
46F11101101111o
52C4400101100,
6203200100000space
7578701010111W
86F11101101111o
97211401110010r
106C10801101100l
116410001100100d
12213300100001!

About the Hex to Text Converter

This hex to text converter decodes a string of hexadecimal byte values — such as 48 65 6c 6c 6f — back into the characters they represent, and works in reverse to encode any text as hex. It accepts hex the way you actually find it: separated by spaces, colons, commas or new lines, written as one continuous run, or prefixed with 0x or \x as in source code and log files.

Developers use it to read packet captures, hex dumps, database BLOBs, URL-escaped bytes and C or Python byte literals; students use it to see how ASCII and UTF-8 map characters to numbers. The byte table under the result lists every byte with its decimal value and the character or control code it stands for, which makes stray line feeds, NUL bytes and invisible characters easy to spot.

Choose UTF-8 (the encoding of the web, where accented letters and emoji take two to four bytes) or Latin-1 (ISO-8859-1, one byte per character, which covers plain ASCII plus Western European letters). Everything runs in your browser; nothing is uploaded.

How to use the hex to text converter

  1. 1Choose Hex → text to decode or Text → hex to encode.
  2. 2Paste the hex bytes (any separator, with or without 0x) or type the text.
  3. 3Pick UTF-8, or Latin-1 for single-byte legacy text.
  4. 4For encoding, choose the hex output style and letter case.
  5. 5Copy the result and check the byte table for hidden control characters.

Formula and method

byte = 16 × value(high digit) + value(low digit)

Each byte is written as two hexadecimal digits (0–9, then A–F for 10–15). Decoding strips separators and prefixes such as 0x and \x, reads the digits two at a time and converts each pair to a number from 0 to 255 — for example 4F = 4 × 16 + 15 = 79, the letter "O". The byte sequence is then interpreted with the chosen character encoding.

In UTF-8, bytes 00–7F are plain ASCII characters, while characters beyond ASCII are stored as a lead byte (C2–F4) followed by one to three continuation bytes (80–BF); invalid sequences are reported and shown as the replacement character �. In Latin-1 every byte maps directly to the Unicode code point with the same number. Encoding runs the same steps in reverse.

high digit
First hex digit of the pair (the "sixteens" place)
low digit
Second hex digit of the pair (the "ones" place)

Worked examples

Decode a spaced hex string

48 = 72 = "H", 65 = 101 = "e", 6c = 108 = "l", and so on; 2c is a comma and 20 is a space. All 13 bytes are ASCII, so 13 bytes give 13 characters.

Encode UTF-8 text with an accent and a euro sign

C, a and f are single ASCII bytes. é (U+00E9) needs two UTF-8 bytes, C3 A9, and € (U+20AC) needs three, E2 82 AC. Seven characters therefore become 10 bytes.

Decode a 0x byte array from source code

0x4F = 79 = "O" and 0x4B = 75 = "K". The final byte 0x0A (10) is a line feed, which is invisible in the text but listed as LF in the byte table.

Encode text as an escaped byte string

H = 0x48, i = 0x69 and ! = 0x21. The escaped style produces a string you can paste straight into a C, Python or JavaScript string literal.

Frequently asked questions

How do I convert hex to text?+

Split the hex into pairs of digits, convert each pair to a number from 0 to 255, and look up the character for that byte. For example 48 69 is 72 and 105, which are "H" and "i" in ASCII. This tool does it instantly and handles UTF-8 multi-byte characters.

What is the difference between hex to ASCII and hex to UTF-8?+

For bytes 00–7F there is no difference: UTF-8 was designed so plain ASCII is identical. Bytes 80 and above differ — UTF-8 combines them into multi-byte characters like é or emoji, while Latin-1 treats each byte as its own Western European character.

Why does my decoded text show � characters?+

The replacement character appears when the bytes are not valid UTF-8 — usually because the data was saved in Latin-1 or Windows-1252, or because it is binary data rather than text. Try switching the encoding to Latin-1, or check whether the hex was truncated mid-character.

What does "odd number of hex digits" mean?+

Every byte is exactly two hex digits, so a continuous run must have an even length. An odd count usually means a digit was dropped while copying or a leading zero is missing — write 0A rather than A when bytes are joined together.

How is text converted to hex in Python or JavaScript?+

In Python use "text".encode("utf-8").hex(); in Node.js use Buffer.from("text", "utf8").toString("hex"). Both produce continuous lowercase hex, the same as this tool with the "No separator" style selected.

Related tools