Use the free Unicode Escape Converter below: your data never leaves your browser — all work happens on your device, and nothing is uploaded to any server.
What a Unicode escape is
Some characters are hard to type, hard to see, or hard to keep intact when text moves between systems. Accented letters, symbols, emoji and scripts from other languages can all get mangled by an editor, an encoding setting or a copy-and-paste round trip. Unicode escapes solve this by writing each character as plain ASCII text that any system can carry safely, and that a program can turn back into the original character.
The most familiar form is backslash-u followed by four hex digits: é becomes \u00E9, the euro sign becomes \u20AC, a Chinese character becomes \u4E2D. The digits are the character’s code point in hexadecimal, padded to four places. Other forms exist for other languages: \U with eight digits in Python, \x with two digits for the Latin range, or just the four digits on their own in some data formats. They all mean the same thing: this code point, this character.
Where escapes are used
Escapes are everywhere in programming. JavaScript, Java and JSON strings accept \u escapes, which is why a JSON file can carry any language without worrying about the file’s encoding. Python accepts both \u and \U forms. Properties files, configuration formats and some databases use escapes to store text that their native encoding cannot represent. When you see \u in a file, you are looking at text that chose safety over readability.
Escapes are also a debugging tool. A string that looks empty may contain an invisible character; its escape form reveals exactly which one. A string that displays wrongly in one editor and correctly in another can be compared escape by escape to find the code point that differs. For anyone working with text across languages, escapes turn invisible problems into visible ones.
How to use this tool
Type or paste your text and press the button. Choose the escape style that matches your target language: \uXXXX for JavaScript, Java and JSON, \U0000XXXX for Python’s long form, \xXX for short Latin-range escapes, or plain four-digit codes for data formats. By default only non-ASCII characters are escaped, so your English words stay readable and only the special characters become escapes. Uncheck that option to escape everything, which is useful when you need a fully ASCII-safe string.
Try it with a word containing an accent, then with a sentence mixing English and another language, and notice how the English part stays put while the rest becomes escapes. Try the same text in each style and compare the outputs: same characters, different notation, all correct in their own context.
Escapes are not encryption
It is tempting to see a string full of \u sequences and think the text is hidden. It is not. Anyone can convert escapes back to characters in seconds, and every programming language does it automatically when it reads the string. Escapes protect text from encoding damage, not from readers. Never use them to conceal passwords, keys or private content.
There is one more subtlety worth knowing: characters beyond the basic range, including most emoji, do not fit in four hex digits. In languages that use sixteen-bit units, they are written as a pair of \u escapes called a surrogate pair, which together represent one character. If you see two \u escapes in a row where you expected one emoji, that is what is happening, and a proper decoder will recombine them.
Unicode escapes are a small notation with a large job: keeping the world’s writing safe inside plain ASCII. This tool writes them for you instantly, in your browser, with no upload and no sign-up.
When you work with escapes regularly, keep a small reference of the forms your languages accept, because they differ in details that matter: some accept only four digits, some accept eight, and some require the digits in a particular case. Writing the wrong form produces either an error or, worse, a different character than the one you meant. A quick test with a known character, such as \u00E9, confirms the form before you use it on real content.
