What this shows, per character
Paste text in Inspect mode and every character — by Unicode code point, not by UTF-16 code unit, so an emoji is one row, not two — gets broken down: its U+XXXX code point, raw UTF-8 and UTF-16 bytes, general category (letter, number, punctuation, symbol, mark...), script (Latin, Cyrillic, Han...), and which Unicode plane it falls in. Category and script come from the browser's own built-in Unicode database via JavaScript's native \p{...} regex property escapes — nothing is bundled or looked up over the network.
Switch to Build mode to go the other way — paste a list of U+XXXX code points and get the text they spell out.
Normalization forms
The same visible character can be represented by more than one sequence of code points — é can be one code point (U+00E9) or two (e + a combining acute accent, U+0065 U+0301). They look identical and usually behave identically, but they are not the same string — a strict equality check or a database lookup can fail between two values that render the same way. The four normalization forms resolve this by picking one canonical representation:
- NFC — canonical composition, combining marks merged into precomposed characters where possible. The form most text is already in.
- NFD — canonical decomposition, precomposed characters split into base + combining marks.
- NFKC / NFKD — the same, plus compatibility decomposition: things like ligatures, full-width characters, and styled variants get mapped to their plain equivalents. Lossier, but useful for search and comparison.
When a form's character count differs from the input, that's a real signal — it means the input wasn't already in that canonical form.
FAQ
Why does Script say "Unknown" for some characters?
Only a common subset of scripts is checked (Latin, Greek, Cyrillic, Han, Arabic, and similar) rather than all ~160+ defined in Unicode — anything outside that list falls back to "Unknown" rather than guessing.
Why isn't there a Unicode character name (like "LATIN CAPITAL LETTER A")?
Official character names come from the full Unicode Character Database, which is a large dataset this tool doesn't bundle — category, script, and plane are all derivable from the browser's built-in Unicode support instead, with no download required.
Try it yourself
For hex byte representations in JavaScript, JSON, HTML/XML, or SQL escape syntax instead of code-point analysis, see Hex Encode and Hex Decode.