Unicode Character Inspector
Analyse every character: category, script, block and encoding. Free, and runs entirely in your browser — nothing you enter is uploaded or stored.
About Unicode Inspector
Two strings that look identical and are not is one of the most frustrating bugs there is, because the evidence is invisible by construction. A name that will not match, a filename that will not open, a password that is right and rejected, a CSV column that fails a comparison — behind almost all of them is a character you cannot see on screen: a zero-width space pasted from a web page, a non-breaking space from a word processor, a combining accent where a pre-composed letter was expected.
This lists every character with its code point, its category, its script and the bytes it becomes in each encoding, and marks the ones that have no glyph. The moment something is listed as U+200B rather than drawn, the bug is found.
The counts are shown four ways on purpose, because there is no single correct answer to how long a string is. A family emoji is one character to a reader, seven code points, eleven UTF-16 units and twenty-five UTF-8 bytes — and a text field that trims at the wrong one of those cuts it in half.
Nothing is looked up over the network. The properties come from the regular-expression engine's own Unicode tables, which is the same data the standard publishes, so this works offline and on text you would not paste anywhere.
Where it helps
- Names the code point, category, script and block of every character, so an unfamiliar one can be identified rather than guessed at.
- Draws the invisible characters as their code points, which is the only way they can be seen at all.
- Counts graphemes, code points, UTF-16 units and UTF-8 bytes separately, because software disagrees about which of those is the length.
- Shows the UTF-8, UTF-16 and UTF-32 bytes side by side, which settles most arguments about why a file is the size it is.
- Flags mixed scripts and text that is not normalised — the two invisible causes of a comparison that should have matched.
- Runs entirely in this tab, so a password or a private filename can be checked without sending it anywhere.
Limits
- There is no character-name database here, so a character is identified by its block and category rather than by its formal Unicode name.
- The listing stops at 500 characters; the counts and the checks are over the whole input.
- Script and category come from the browser's Unicode tables, so a very new character may be reported as unassigned on an older browser.
- It reports what the text contains and does not change it — normalising or stripping is the Text Cleaner's job, not this one.
Frequently asked questions
Why does my string have a different length in every language?
Because they are counting different things. JavaScript's .length counts UTF-16 units, Python's len counts code points, a database column limit usually counts bytes, and a person counts what they can see. All four numbers are shown so you can tell which one your limit is actually using.
What is a zero-width space doing in my text?
It was almost certainly pasted in. Web pages use them as invisible line-break hints, some editors insert them, and chat applications add them around formatting. They survive a copy-paste and show up in nothing, which is why the first sign of one is usually a comparison that fails.
What does normalisation mean here?
Unicode can spell some characters two ways: é as one code point, or e followed by a combining accent. They look identical and are not equal. NFC composes them and NFD decomposes them; comparing strings that have not been normalised the same way is a bug that shows up only for accented text.
Is this different from the Unicode Converter?
Yes. The converter turns text into escape sequences and back. This one does not change the text at all — it tells you what is in it, character by character, which is what you want when the text is already wrong.
Related tools
- Unicode Converter — Escape, unescape and inspect code points
- IDN Homograph Detector — Check whether a domain name is imitating another one
- Hex and Text Converter — Text to hexadecimal bytes and back, with a dump
- Whitespace Remover — Trim, collapse and normalise whitespace
- Base64 — Encode or decode UTF-8 text and URL-safe Base64
- Base32 — Encode or decode Base32 in the RFC 4648, extended hex and Crockford alphabets
More Encoders & Decoders tools
- Base64 — Encode or decode UTF-8 text and URL-safe Base64
- Base32 — Encode or decode Base32 in the RFC 4648, extended hex and Crockford alphabets
- Base58 — Encode or decode Base58, and verify the Base58Check checksum an address carries
- URL Encoder — Percent-encode components or whole URLs
- HTML Entities — Escape and unescape HTML entities
- JWT — Read, verify and sign JSON Web Tokens
- Punycode — Convert internationalised domain names to and from their ASCII form
- Unicode Converter — Escape, unescape and inspect code points
- Number Base Converter — Binary, octal, decimal and hexadecimal, with the bits explained
- Hex and Text Converter — Text to hexadecimal bytes and back, with a dump
- Gzip Compressor and Decompressor — Compress and expand gzip, zlib and raw deflate