UTF-8 Decode

Turn a UTF-8 byte sequence, written as hex or percent escapes, back into text.

UTF-8 bytes
Text
Runs locally in your browser

About the UTF-8 Decode

When you have the raw bytes of a UTF-8 string, as \xNN escapes, %NN percent codes, or plain hex, this tool assembles them and decodes the result as text. It is the counterpart to UTF-8 Encode and a quick way to confirm what a byte sequence from a log, a hex dump or a network capture actually says.

The bytes must form valid UTF-8; an incomplete multi-byte sequence produces a replacement character, which itself is a useful signal that the capture was truncated. An odd number of hex digits is reported as an error. A different failure looks similar but is not: when you see é where an é belongs, the bytes are perfectly valid and the damage happened earlier, at the point something read UTF-8 as Latin-1.

Telling those two apart, broken bytes against text that was already decoded twice, is most of what this tool earns its keep doing while chasing an encoding bug through a log file or a database export. Decoding the second case again here will not repair it, because the wrong characters are already in the string. For percent-encoded URLs the URL Decode tool is more convenient, Hex Decode handles bare hex without escape prefixes, and UTF-8 Encode shows the bytes behind text you already have.

How to use

  1. Paste the byte escapes, in \x, % or plain hex form.
  2. Read the decoded text.
  3. A replacement character means the bytes were not complete UTF-8.

Common questions

What escape formats are accepted?
\xNN, %NN and plain hex digits. Separators are ignored.
Why do I see a diamond question mark?
The bytes are not valid UTF-8, often because a multi-byte character was cut off.
Is this the same as Hex Decode?
Very close; both interpret bytes as UTF-8. This one also accepts \x and % escapes.