Unicode Decoder

Runs in browser Encoding

Turn escaped Unicode back into text and inspect each character with its code point, UTF-8 bytes and Unicode name category.

Privacy: This tool runs entirely in your browser. Your input never leaves your device.
Loading tool…

How to use Unicode Decoder

  1. Paste the escaped text (mixed notations are fine).
  2. Read the decoded text and the count of escapes.
  3. Use the inspector to identify invisible or look-alike characters.
  4. Copy the plain text.

Unicode Decoder features

  • Decodes \uXXXX, \u{…}, \UXXXXXXXX, \xHH, U+XXXX, &#NNN;, &#xHH; and CSS escapes
  • Combines surrogate pairs into single characters; warns about lone surrogates
  • Reports which notations were found and how many escapes were decoded
  • Character inspector with code point, decimal, script/category and UTF-8 bytes
  • Live decoding as you paste

Unicode Decoder example

Decode mixed escapes

Input:

\u0645\u0631\u062d\u0628\u0627 U+2014 नमस्ते \ud83d\ude80

Output:

مرحبا — नमस्ते 🚀

Frequently asked questions about Unicode Decoder

Which notations are recognised?

\uXXXX (JS/JSON/Java), \u{X…} (ES2015), \UXXXXXXXX and \xHH (Python/C), U+XXXX (documentation), &#NNN; / &#xHH; (HTML) and CSS \HHHH escapes — all mixed in the same text.

How are surrogate pairs handled?

Consecutive \uD83D\uDE80 escapes are combined into a single 🚀 character. A lone surrogate is reported as a warning because it is not valid Unicode.

What does the inspector show?

Each resulting character with its code point, decimal value, script/category and UTF-8 bytes, so you can identify invisible characters (zero-width spaces, RTL marks) or confusable letters.

Does it decode JSON strings?

It decodes the \u escapes inside them. To also handle \n, \t and quotes, use the JSON Escape/Unescape tool.

Technical notes

Each escape is converted with String.fromCharCode or String.fromCodePoint depending on its range; adjacent high and low surrogates therefore merge into one code point naturally. The inspector classifies characters with Unicode property escapes (\p{L}, \p{Script=Arabic}, …) available in modern JavaScript engines.