Unicode to Text
Paste escaped text and get the real characters back β \uXXXX, \u{X}, \xXX, \U00XXXXXX, U+XXXX and HTML numeric references are all decoded automatically.
Unicode to Text
Turn escaped Unicode back into the characters it stands for. Paste a string full of \uXXXX, \u{...}, \xXX, \U00XXXXXX, U+XXXX or HTML numeric references and get clean, readable text out β no need to tell it which notation you used.
How it works
The decoder scans your input once and recognises every common escape notation at the same time, so a single mixed string decodes correctly. Anything that isn't an escape is left exactly as you typed it.
Recognised notations:
\uXXXXβ 4-hex JavaScript / JSON / Java escape. Surrogate pairs (e.g.π) are combined into the real astral character.\u{X..}β braced Rust / ES6 escape, 1β6 hex digits (\u{1F600}).\xXXβ 2-hex byte / Latin-1 escape (\x41).\U00XXXXXXβ 8-hex Python wide escape (\U0001F600).U+XXXX/u+xxxxβ Unicode code-point notation, 1β6 hex digits.&#DDDD;β HTML decimal numeric character reference.&#xHHHH;/&#XHHHH;β HTML hexadecimal numeric character reference.
Invalid code points (such as a lone surrogate) decode to the Unicode replacement character U+FFFD. A fragment that merely looks like the start of an escape but never completes a valid one is passed through verbatim, so nothing is silently lost.
Why use it
- Read JSON, log files or source strings where non-ASCII characters were escaped to
\uXXXX. - Recover emoji and accented text from APIs that return escaped Unicode.
- Decode HTML numeric character references copied out of markup.
- Mix notations freely β the same box handles
Γ©,U+2764and😀together.
It is the inverse of an escaping / Text to Unicode tool. Everything runs locally in your browser; your text is never uploaded.
FAQ
Does it handle emoji and other astral (non-BMP) characters?
Yes. \u{1F600}, \U0001F600, U+1F600, the surrogate pair π and the HTML reference 😀 all decode to π.
Do I have to pick which notation my text uses?
No. The decoder auto-detects all supported notations in one pass, so a string that mixes several of them decodes correctly without any configuration.
What happens to text that isn't an escape sequence?
It is passed through unchanged. Plain characters, and even incomplete-looking fragments like a stray \u with no hex digits, are left exactly as you typed them.
Will it touch string escapes like \n or \t?
No. This tool only decodes Unicode code-point notations. Whitespace/string escapes such as \n, \t and \ are left alone for a dedicated string-unescape tool.
What does U+FFFD in the output mean?
That is the Unicode replacement character. It appears when an escape names a value that is not a valid Unicode scalar (for example a lone UTF-16 surrogate like \uD83D on its own).
Developer & Automation Access
Run it from the terminal
Same engine as this page, headless β via the gizza CLI:
gizza tool unicode-to-text 'Caf\u00e9 \u{1F600} U+2764 😀'New to the CLI? Get gizza β
Open it by URL
Pre-fill and auto-run this tool with query parameters β the names match the API/CLI:
https://gizza.ai/tools/unicode-to-text/?text=Caf%5Cu00e9%20%5Cu%7B1F600%7D%20U%2B2764%20%26%23128512%3BMachine-readable descriptor: tool.json β title + parameters JSON Schema for agents.
