Text & code / MULTIVERTO

Hexadecimal to text

Decode hexadecimal byte pairs into UTF-8 text. Invalid characters and byte sequences are reported.

Live converterYour input stays in this browser. No text is uploaded for conversion.
The file stays in your browser.
Chain tools

Apply each text tool to the previous result.

01 / Guide

How it works

Two hexadecimal digits form one byte; the resulting bytes are interpreted as UTF-8.

Good to know

Hex input needs complete byte pairs. Even syntactically valid hex can still contain bytes that are not valid UTF-8 text.

02 / Example

Example

Your input48656c6c6f
ResultHello

03 / Guide

Hexadecimal to text — How it works

Reading a hexadecimal byte sequence as text

Use this direction when a byte sequence has been written as pairs of hexadecimal digits and the bytes are known to contain UTF-8 text. In a language-neutral ASCII example, 48 represents H and 48656c6c6f yields Hello. You may separate complete pairs with whitespace to inspect them. The converter checks that every pair is complete and contains only digits zero through nine or letters A through F before it attempts to decode the byte sequence.

A valid hex string can still represent something other than text: an image header, encrypted data or a byte sequence in a different character encoding may fail strict UTF-8 decoding. If the result is an error, do not simply remove bytes until readable words appear; check the source format and its declared encoding. An odd number of digits is also an incomplete byte, not a value to guess. For debugging, keep the original hex and compare the decoded output with the system that produced the bytes.

Hexadecimal text is a view of bytes

Hexadecimal uses sixteen symbols, zero through nine and A through F. One symbol records four bits, so a complete byte needs two hexadecimal digits. For example, the UTF-8 byte for the Latin letter A is 41 in hex. This notation is convenient when inspecting files, network packets and program output because byte boundaries are easy to see. It is also longer than the original bytes: two visible digits represent each byte, without counting any separators or labels.

This converter treats its text as UTF-8 before turning bytes into hex and makes the reverse assumption when decoding. A character outside basic ASCII can occupy multiple UTF-8 bytes; the resulting string is a byte sequence, not a list of Unicode code points. Two hex digits are required for every byte. Even a perfectly formed pair sequence may describe bytes that are not valid UTF-8, in which case it cannot become text here. Hexadecimal is an encoding for display and inspection, not encryption, compression or an integrity check.

Check the encoded source before decoding

Begin with a value that is actually written in the expected representation. Paste one encoded component or byte sequence, then compare the readable output with the surrounding record that supplied it. The decoder runs in this browser and does not upload the string to a conversion service. If the input is damaged or uses another format, it may fail or remain partly unchanged, depending on the operation. Preserve the original encoded value so that you can identify whether a surprising character came from the source or from your interpretation.

Treat the decoded text as new, potentially untrusted input. A readable sentence can still contain markup, a URL, a command-like string or private information that needs separate handling. Do not insert it into an executable context just because decoding succeeded. If the output seems wrong, verify the declared character encoding and ask whether an earlier system encoded the value more than once. Repeating a decode without understanding the layers can turn a literal separator into structural punctuation or create a result that was never intended by the sender.

How this conversion transforms the input
Hexadecimal bytes
UTF-8 bytes
Decoded text