Unicode Inspector
Inspect every character's codepoint, UTF-8/UTF-16 bytes, HTML/JS/CSS/URL escapes, and block. Detects invisible, combining, control, and zero-width characters.
Common invisible & special characters
About this tool
Unicode Inspector breaks any string down character by character and shows each codepoint's number, name, UTF-8 and UTF-16 byte layout, Unicode block, and the escapes you'd use to reproduce it in HTML (—), JavaScript (\u2014), CSS (\2014), and URLs (%E2%80%94).
It flags characters that are easy to miss but cause real bugs: zero-width spaces (U+200B), zero-width joiners used in emoji sequences (U+200D), non-breaking spaces (U+00A0), bidirectional control marks, and combining diacritical marks. Example: paste café and you'll see U+00E9 (é) as one codepoint, or U+0065 + U+0301 if it was written with a combining accent — two strings that look identical but differ in length and break === comparisons.
Use it when text that should match doesn't, when a string is longer than it looks, when a regex silently fails, or when you need the exact escape sequence for a character in source code.
FAQ
Why does my string have more characters than I can see? ›
Hidden characters like zero-width spaces (U+200B), zero-width joiners (U+200D, used in emoji), soft hyphens (U+00AD), or BOM (U+FEFF) take up codepoint space but render nothing. Paste the string in and the tool will flag every invisible or special character in the alert bar.
What is a surrogate pair? ›
Characters above U+FFFF (most emoji, rare scripts, mathematical symbols) are stored as two 16-bit code units — a surrogate pair — in UTF-16. JavaScript's String.length counts 2 for each such character. The tool shows the full codepoint and labels it "surrogate pair" so you know why .length is higher than expected.
How do I find a character by its codepoint number? ›
Use the "Lookup by codepoint" box at the bottom. Enter it as U+1F600, 0x1F600, or the decimal number 128512 — all three work. The tool shows the character and all its encoding details.
What is the difference between UTF-8 and UTF-16? ›
UTF-8 uses 1–4 bytes per character and is dominant on the web. UTF-16 uses 2 or 4 bytes (2 code units) per character and is what JavaScript strings are stored as internally. The tool shows both byte layouts side by side for every character.