Unicode Unescape
Turn \u00e9, \uD83D\uDE00, \u{1F600}, \xc3\xa9 or € back into readable text. Paste a JSON string, a log line, Python output or a list of U+ code points — every common escape style is recognised automatically, even when they're mixed.
\\u00e9 with two backslashes? The text was escaped twice — run the result through once more.Need to encode instead? Unicode Escape →How Unicode Unescaping Works
Every escape sequence becomes the character it stands for.
Escape sequences appear wherever text passes through code: JSON from an API (Caf\u00e9), JavaScript source, Python's repr() (\xe9, \U0001f600), byte dumps in logs (\xc3\xa9), HTML (é) and CSS (content: "\2014"). This tool reads the text from left to right and replaces each escape with its character, leaving everything else untouched.
Surrogate pairs such as \uD83D\uDE00 are combined into one character (😀). A half pair on its own isn't a valid character, so it's left as it is and reported.
\x bytes. A run of \xHH escapes is first read as UTF-8 (so \xc3\xa9 is é and \xf0\x9f\x98\x80 is 😀). If the bytes aren't valid UTF-8, each one is read as a Latin-1 character instead, the way Python's \xe9 means é.
U+ lists. If the input contains nothing but U+ code points (U+0048 U+0069), they're joined into text. Inside normal text, U+ notation is left alone.
Recognised Escape Formats
All decoded automatically, even when mixed.
| Format | Example | Result | Used by |
|---|---|---|---|
\uXXXX | \u00e9, \uD83D\uDE00 | é, 😀 | JavaScript, JSON, Java, C# |
\u{X…} | \u{1F600} | 😀 | ES6 JavaScript, Rust, Swift |
\UXXXXXXXX | \U0001F600 | 😀 | Python, C, C++ |
\xHH | \xc3\xa9 / \xe9 | é | Python, PHP, C, logs |
&#xX; / &#N; | €, € | € | HTML, XML |
\X (optional) | \2014 | — | CSS |
U+X | U+0048 U+0069 | Hi | Unicode charts |
| Simple escapes | \n \t \" \\ | line break, tab, " \ | JSON, JavaScript, Python |
How to Use the Unicode Unescape
Get your result in under ten seconds.
Paste the escaped text
JSON, source code, logs, Python output or U+ lists.
Check the options
Simple escapes, HTML references and CSS escapes.
Copy the text
Invalid escapes are kept and reported, never silently dropped.
Why Use the Unicode Unescape on Developers Web Tools
Fast, accurate and private — built for developers.
Mixed formats
\u, \u{}, \U, \x, &#x; and U+ in one pass.
Surrogate pairs
\uD83D\uDE00 is combined correctly; half pairs are reported.
UTF-8 bytes
\xc3\xa9 becomes é, not é.
Clear warnings
Out-of-range and broken escapes are kept and counted.
Fast
Large inputs are decoded in a background thread.
Private
Runs entirely in your browser.
Frequently Asked Questions
Those two bytes are the UTF-8 encoding of é. The tool reads each run of \x bytes as UTF-8 first, and only falls back to one-byte Latin-1 characters when the bytes aren't valid UTF-8.
It's kept exactly as written and counted under Invalid — for example \u{110000} (beyond the last Unicode code point) or a lone surrogate like \uD83D without its partner.
In CSS, \b and \f are hex escapes (U+000B and U+000F). With Decode CSS escapes on, hex digits after a backslash are read the CSS way. Leave it off for JSON and JavaScript text.
It was probably escaped twice (\\u00e9). The first pass turns \\ into \; paste the result in again to decode the rest.
No. Everything runs in your browser.