deftools.io Developer Tools

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.

Characters 0
Lookup by codepoint
Common invisible & special characters
Copied!

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.

More developer tools

Copied!