Hex to Text

Decode hexadecimal byte values into strict UTF-8 text, including accented text, non-Latin scripts, symbols, and emoji.

Each hexadecimal pair is interpreted as one byte.

Your text is processed in this browser and is not submitted to UnicodeNow.

Processed locally in your browser

This tool interprets each hexadecimal pair as one byte, then decodes the byte sequence as strict UTF-8 text. It does not interpret values as Unicode code points. For Unicode values such as U+00E9 or U+1F600, use Unicode Code Points to Text.

UTF-8 bytes for é: C3 A9. Unicode code point for é: U+00E9. The single byte E9 is not equivalent to U+00E9 in UTF-8.

Enter hexadecimal byte values, not U+ code-point notation. Mixed formats are rejected.

Only configured ASCII separators are ignored. Non-breaking spaces and zero-width spaces are rejected.

Hex byte inspection preserves the parsed bytes and does not interpret them as text.

Advanced options

Normalization changes the decoded Unicode sequence and is not required for UTF-8 decoding.

For U+ notation, use Unicode Code Points to Text.

UTF-8 text mode validates the parsed bytes strictly and never inserts replacement characters silently.

Open Text to Hex

What this Hex to Text tool does

This tool follows a byte-oriented pipeline: hexadecimal pairs become bytes, and those bytes are decoded as strict UTF-8 text. The input 48 65 6C 6C 6F becomes bytes 48, 65, 6C, 6C, 6F, then the UTF-8 decoder produces Hello. Processing runs locally in your browser.

The tool is intentionally one-way. It does not encode text into hex on this route. Use Text to Hex for the reverse workflow.

This distinction matters when you are debugging data copied from logs, packet captures, database dumps or API traces. A hex dump is normally a representation of bytes, not a list of characters. The page therefore validates the byte syntax first, then validates UTF-8 separately, so you can tell whether the problem is malformed hex or a valid byte stream that is not UTF-8 text.

Hex bytes vs Unicode code points

Hex bytes and Unicode code points are different notations. UTF-8 bytes for é are C3 A9, while the Unicode code point is U+00E9. The byte E9 alone is not valid standalone UTF-8 for é; it may be meaningful in another legacy encoding, but this page validates strict UTF-8.

For emoji the difference is even more visible. 😀 is Unicode code point U+1F600, but its UTF-8 byte sequence is F0 9F 98 80. Entering 1F600 as continuous hex means the bytes 1F, 60 and an incomplete final nibble; it is not the same thing as entering a Unicode code point.

Supported hex input formats

48 65 6C 6C 6F
48656C6C6F
0x48 0x65 0x6C
\x48\x65\x6C

Auto-detect accepts clear formats and rejects mixed input such as 0x48 65 \x6C. Byte-pair mode can allow ASCII whitespace, commas or colons according to the separator setting. Continuous mode requires only hexadecimal digits and an even digit count.

Separators are deliberately limited. Ordinary spaces, tabs and line breaks are safe to ignore when that option is selected, but non-breaking spaces, zero-width spaces and punctuation outside the selected format are reported. That prevents invisible copied characters from changing how the byte stream is read.

UTF-8 examples

TextUTF-8 hex
A41
éC3 A9
E2 82 AC
😀F0 9F 98 80

Invalid UTF-8 sequences

Hex syntax can be valid while the bytes are not valid UTF-8. Common failures include truncated sequences such as C3, unexpected continuation bytes such as A0 A1, overlong encodings such as C0 AF, surrogate encodings such as ED A0 80, and four-byte sequences above U+10FFFF such as F4 90 80 80. Diagnostics use one-based byte offsets.

The output area does not silently replace malformed byte sequences with U+FFFD. If UTF-8 text mode fails, switch to Hex byte inspection to confirm the exact bytes. This is useful for binary headers such as FF D8 FF E0, where the hex is well-formed but the data is not text.

Binary data vs text

Hexadecimal may represent images, PDFs, ZIP files, protocol packets or arbitrary bytes. Valid hex does not guarantee valid UTF-8. If the input is binary, choose Hex byte inspection to normalize and review the parsed bytes without forcing a text decoding step.

If you know the bytes use another character encoding, use a tool designed for that encoding instead of forcing UTF-8. A byte value such as E9 may decode to é in Windows-1252 or ISO-8859-1, but it is not legal UTF-8 by itself. Keeping that boundary clear avoids mojibake and makes error reports easier to reproduce.

How to use the tool

  1. Paste hex bytes into Hex byte input.
  2. Choose the input format or keep Auto-detect.
  3. Choose the separator handling for byte-pair input.
  4. Select UTF-8 text or Hex byte inspection output.
  5. Use normalization only after successful UTF-8 decoding when you intentionally want to change the Unicode sequence.
  6. Review diagnostics, statistics and warnings before copying or downloading the output.

Privacy and processing

This tool runs in your browser. Your input is not submitted to UnicodeNow. Output is written to a textarea as text, and downloads use Blob URLs that are revoked after use.

Common uses

For source-code escape syntax such as \x48, this tool accepts the byte form only when the \x-prefixed input format is selected. It still treats the result as bytes, not as JavaScript, Python or C source code, and it never executes the input.

Frequently asked questions

What does Hex to Text mean?

It parses hexadecimal byte values and decodes them using strict UTF-8.

Does each hex pair represent one byte?

Yes. Each pair from 00 through FF is interpreted as one byte.

What is the difference between E9 and C3 A9?

E9 is one byte. C3 A9 is the valid UTF-8 byte sequence for é.

Why does E9 not decode as UTF-8?

Because UTF-8 encodes U+00E9 as two bytes: C3 A9.

Can I paste continuous hexadecimal?

Yes. Choose Continuous hexadecimal or Auto-detect for input such as 48656C6C6F.

Are 0x prefixes supported?

Yes. Choose 0x-prefixed bytes for input such as 0x48 0x65.

Why is my hex valid but not UTF-8?

Hexadecimal can represent any bytes, including binary data or text in another encoding.

What is an incomplete UTF-8 sequence?

A lead byte appears without all required continuation bytes.

Can hex represent binary files?

Yes. Hex can represent arbitrary bytes, including binary file headers and payloads.

Does this tool decode Unicode code points?

No. It decodes bytes. Use Unicode Code Points to Text for U+ notation.

Does decoding normalize text?

No, unless normalization is explicitly enabled after successful decoding.

Is my input uploaded?

No. This tool runs in your browser and does not submit input to UnicodeNow.

Related tools

Text to Hex

Convert UTF-8 text bytes into hexadecimal values.

EncodingProcessed locally

Binary to Text

Decode binary byte groups into UTF-8 text.

EncodingProcessed locally

Decimal to Text

Convert decimal bytes or Unicode code point values to text.

EncodingProcessed locally

Byte Length Calculator

Count UTF-8 bytes, code points, grapheme clusters and UTF-16 code units for text.

EncodingProcessed locally

Unicode Character Inspector

Inspect each Unicode character, encoding, category, script and normalization form.

UnicodeProcessed locally

Related guides

Unicode vs UTF-8

Unicode defines characters and code points. UTF-8 encodes those code points as bytes for files, databases, web pages, APIs and network messages.

What Is a Unicode Code Point?

Learn what Unicode code points are, how U+ notation works, and how code points differ from glyphs, bytes, code units and visible characters.

How to Fix Broken UTF-8 Text

A safe workflow for diagnosing broken UTF-8, validating bytes, reversing mojibake, handling double encoding and auditing repairs.