Code point vs UTF-16
JS code point can represent 😀 as one \u{1F600}. UTF-16 uses the two code units \uD83D\uDE00. This tool validates surrogate pairing before decoding.
A browser-local Unicode workbench for code-point escapes, UTF-16 surrogate pairs, Python/C-style escapes, legacy %u, U+ notation and CSS hex escapes — with strict scalar validation, invisible/bidi audits, normalization insight, exact round-trip verification and batch files.
Supplementary characters such as emoji are not split accidentally: code-point profiles use one scalar escape, while UTF-16 profiles generate and validate the correct surrogate pair. Existing escape-like text can be protected, malformed/out-of-range escapes are reported with line and column, and escaped output is immediately unescaped again before Copy/Download is enabled.
Engine ready. Ctrl/Cmd + Enter converts.
Inspector works at Unicode code-point level; grapheme count uses Intl.Segmenter when available.
| # | Character | Code point | Decimal | UTF-8 | UTF-16 | Flags |
|---|
Showing up to 500 code points.
Process multiple text/code files with the current settings. Files never leave this browser; successful outputs are packed into a ZIP locally.
No files selected.
Example: \u00E9 instead of \u00e9.
Disable when you need every control character represented as an escape.
Prevents literal text such as \u0041 from being unintentionally decoded after a round trip.
Malformed and out-of-range scalar values are always preserved and reported rather than silently repaired.
Off by default so this Unicode tool does not unexpectedly rewrite file paths or language-specific string syntax.
Use 2+ only when intentionally unpacking text such as \u005Cu0041.
Default is lossless. NFKC/NFKD may intentionally change compatibility characters.
Downloaded outputs are UTF-8.
Conversion, inspection, file reading and ZIP creation are local. No API, account, upload endpoint or analytics dependency is required by this package.
JS code point can represent 😀 as one \u{1F600}. UTF-16 uses the two code units \uD83D\uDE00. This tool validates surrogate pairing before decoding.
JS: \u00E9 \u{1F600}
UTF-16: \u00E9 \uD83D\uDE00
Python: \u00E9 \U0001F600
Legacy: %u00E9 %uD83D%uDE00
U+: U+00E9 U+1F600
CSS: \0000E9\01F600Surrogate code points U+D800–U+DFFF are reserved for UTF-16 encoding and are not Unicode scalar values. Lone surrogate escapes are preserved and flagged instead of being converted into corrupt text.
The audit highlights zero-width characters, ZWJ/ZWNJ, bidi controls, variation selectors, replacement characters and Unicode noncharacters. These can be legitimate, but invisible controls deserve review in copied identifiers, source code and security-sensitive text.
Visually similar text can use different code-point sequences, such as composed é and e + U+0301. The tool reports NFC status and offers optional normalization, but never normalizes by default.
This tool operates on Unicode code points and escape notation. It does not add JavaScript or JSON quotes, escape language delimiters, or sanitize HTML. Use the dedicated JavaScript/JSON/HTML tools for those contexts.