Code and data · UnicodeUnicode Escape and Unescape \u
Paste text where letters appear as \u0418\u0432\u0430\u043d, \xd0\x98 or И and see what it says. Formats are detected on their own and can be mixed. The reverse turns text into escape sequences for JSON, JavaScript, Python, HTML or CSS.
Text is processed in your browser and goes nowhere
formats are detected on their own and can be mixed
Input · text with \u, \x, &#, U+
Example
Result
read only
{"city":"Красноярск","note":"темп. −30° 🥶"}
Found\uXXXX× 16&#x…;× 1replaced 17errors 0
Format
What to escape
Hex case
Input · plain text
Result · JSON / JS
read only
03
Characters
the result, 43 characters
CharU+\u · JSON&#x;&#;UTF-8 bytes
Click any cell to copy the code. Repeats are not merged: this is the string, character by character.
04
Formats
where each one is used — with “И” and 😀
\uXXXX
JSON · JS · Java · C#
Four hex digits. Characters above U+FFFF take a surrogate pair.
И\u0418
😀\ud83d\ude00
\u{…}
ES6 · Rust · Swift
The whole code in braces, no surrogate pairs.
И\u{418}
😀\u{1f600}
\U and \x
Python · C
\U takes eight hex digits; \x is single UTF-8 bytes, the way Python prints bytes.
И\u0418 · \xd0\x98
😀\U0001f600 · \xf0\x9f\x98\x80
&#…;
HTML · XML
A numeric reference: hexadecimal with x, or decimal.
ИИ · И
😀😀 · 😀
U+
Documentation
How Unicode tables and references write a code — not program code.
ИU+0418
😀U+1F600
CSS \…
The content property
A backslash and hex. A space follows the code if a hex digit or a space comes next.
И\418
😀\1f600
05
Frequently asked questions
Paste the text into the Decode field: sequences like \u0430 are replaced with letters at once and the rest of the text stays as it was. \u0430 is the Cyrillic “а”, \u00e9 is “é”. JSON and JavaScript write characters outside basic Latin this way: four hexadecimal digits of the character’s Unicode number. Any language works — Cyrillic, accented Latin, Greek, Chinese or emoji.
Many libraries escape everything outside ASCII by default: Python json.dumps without ensure_ascii=False, PHP json_encode without the JSON_UNESCAPED_UNICODE flag. The data is not broken — it is the same string written differently, and any program reads it correctly. To read the file yourself, paste it here or drop the whole file: up to 5 MB is decoded right in your browser.
These are UTF-8 bytes: Python prints a bytes object this way when it holds more than plain Latin. The Cyrillic letter “И” takes two bytes in UTF-8, d0 and 98, so a Russian word turns into a chain like \xd0\x98\xd0\xb2. Paste a string like b'\xd0\x98…' — the tool joins the bytes and shows the text, and warns you if they are not valid UTF-8.
It happens when JSON is placed inside another JSON string: the backslash is escaped once more and turns into two. You get \\u0418 instead of \u0418, and quotes become \". The tool notices this on its own: if the text has only doubled codes, it removes one layer and tells you so. Untick the box if you need the double backslash kept.
It depends on the language. In JSON and older JavaScript an emoji is a pair of codes, a surrogate pair: 😀 is \ud83d\ude00. Modern JavaScript, Rust and Swift write the whole code in braces — \u{1f600}, Python uses \U0001f600 and HTML 😀. Pick the format in the Escape block, and the tool splits the character into a pair where needed.
Nowhere. Decoding and escaping run in your browser, on this page: the text is not sent to a server, not added to the page address and not stored in the browser. Only the settings are remembered — the format, the scope and the letter case. Site statistics record only that the tool was used and which format it met, never the text or its characters.