UTF-8 Decoder

Decode UTF-8 byte sequences to text, or encode text to bytes.

A free online UTF-8 decoder — paste percent-encoded, hex, or decimal byte sequences and get readable text, or flip to Encode mode to see any text's raw UTF-8 bytes. No signup, runs entirely in your browser.

What does a UTF-8 decoder do?

A UTF-8 decoder converts a sequence of raw bytes back into the Unicode text they represent — UTF-8 encodes each character as 1 to 4 bytes depending on the character, so a byte sequence needs decoding to become readable text again. This tool accepts several common ways bytes get written down (percent-encoding, hex, decimal) and decodes any of them, plus the reverse: turning text into its raw UTF-8 bytes.

Supported input formats

Percent-encoding (%E2%9C%93) is the format used in URLs and query strings — each byte is written as % followed by two hex digits. Hex bytes (c3 a9) write each byte as a plain two-digit hex pair, space or comma separated. Decimal bytes (195 169) write each byte as its base-10 value (0-255). The tool detects which one you've pasted automatically.

How UTF-8 encodes characters

UTF-8 is a variable-width encoding: ASCII characters (code points 0-127) take exactly 1 byte, making UTF-8 backward-compatible with plain ASCII text. Characters beyond that range take 2, 3, or 4 bytes — accented Latin letters and most European scripts typically use 2 bytes, common CJK (Chinese/Japanese/Korean) characters use 3, and emoji and rarer symbols use 4. Each additional byte starts with a distinct bit pattern, which is what lets a decoder tell how many bytes a given character spans.

Why decoding can fail

Not every byte sequence is valid UTF-8. Multi-byte characters follow a strict structure — a leading byte announcing how many bytes follow, then continuation bytes each starting with a specific bit pattern. A truncated sequence, a stray continuation byte with no leading byte before it, or an overlong encoding all fail validation. This tool surfaces that as a clear error rather than silently inserting replacement characters (�), so you can tell a genuinely broken byte sequence from a display or font problem.

Frequently asked questions

Paste the byte sequence — percent-encoded (%C3%A9), space-separated hex (c3 a9), or space/comma-separated decimal (195 169) — and the decoded text appears instantly. The format is auto-detected.
Percent-encoding (the format used in URLs, like %E2%9C%93), space or comma-separated hex byte pairs, and space or comma-separated decimal byte values. The tool detects which format you've pasted automatically.
Not every byte sequence is valid UTF-8 — multi-byte characters follow a specific bit-pattern structure, and a truncated or corrupted sequence (like a lone continuation byte, or a byte value that starts a multi-byte sequence with no continuation bytes following it) fails validation. This tool reports an error rather than silently substituting replacement characters, so you can tell a genuinely invalid sequence from a display glitch.
No. Decoding and encoding happen locally in your browser using the native TextDecoder/TextEncoder APIs — nothing you enter is ever sent anywhere.

Related tools: Hex Decode · Binary Decoder · Base64 Converter