Unicode Character Inspector

Break text into code points and inspect UTF-8 bytes, escapes, and hidden characters — entirely in your browser.

29

Graphemes

What a reader calls characters

29

Code points

Unicode scalar values

30

UTF-16 length

JavaScript .length

41

UTF-8 bytes

Bytes on the wire

4 invisible or lookalike characters found. These are flagged in the Note column — they are a common cause of string comparisons that fail despite looking identical.

#CharCode pointUTF-8EscapeCategoryNote
0HU+00487248\u0048Letter
1eU+006510165\u0065Letter
2lU+006C1086C\u006CLetter
3lU+006C1086C\u006CLetter
4oU+006F1116F\u006FLetter
5 U+00203220\u0020Whitespace
6👋U+1F44B128075F0 9F 91 8B\u{1F44B}Symbol
7 U+00203220\u0020Whitespace
8cU+00639963\u0063Letter
9aU+00619761\u0061Letter
10fU+006610266\u0066Letter
11éU+00E9233C3 A9\u00E9Letter
12 U+00203220\u0020Whitespace
13U+20148212E2 80 94\u2014Invisible / lookalikeEm dash (not a hyphen)
14 U+00203220\u0020Whitespace
15U+201C8220E2 80 9C\u201CInvisible / lookalikeCurly left double quote (not a straight quote)
16sU+007311573\u0073Letter
17mU+006D1096D\u006DLetter
18aU+00619761\u0061Letter
19rU+007211472\u0072Letter
20tU+007411674\u0074Letter
21U+201D8221E2 80 9D\u201DInvisible / lookalikeCurly right double quote (not a straight quote)
22·U+200B8203E2 80 8B\u200BInvisible / lookalikeZero-width space
23qU+007111371\u0071Letter
24uU+007511775\u0075Letter
25oU+006F1116F\u006FLetter
26tU+007411674\u0074Letter
27eU+006510165\u0065Letter
28sU+007311573\u0073Letter

Why the four counts differ:

  • An emoji is one grapheme and one code point, but two UTF-16 units — which is why JavaScript reports "😀".length as 2.
  • An accented letter may be one code point or a letter plus a combining mark — two code points that render as one grapheme.
  • UTF-8 bytes are what actually travel over the network and count against database column limits.

Your Data Never Leaves Your Device

Every tool runs entirely in your browser. Nothing you type is uploaded, stored, or logged on our servers.

100% Client-Side

The Unicode Character Inspector breaks text into individual code points and shows, for each one, its hex and decimal value, UTF-8 byte sequence, escape sequence, HTML entity, and general category. It exists mainly to answer two questions that are otherwise genuinely hard to investigate: why two strings that look identical do not compare equal, and why a string's length is not the number you expected.

The usual culprits are flagged automatically — zero-width spaces, byte order marks, non-breaking spaces, directional overrides, and the curly quotes and en dashes that arrive when text is pasted out of a word processor. Four separate counts are shown because they genuinely differ: graphemes are what a reader counts, code points are Unicode scalars, UTF-16 units are what JavaScript's .length returns, and UTF-8 bytes are what your database column limit actually measures.

FAQ

JavaScript's .length counts UTF-16 units, not characters. An emoji is a single character but two UTF-16 units, so "emoji".length overcounts. This tool shows graphemes, code points, UTF-16 units, and UTF-8 bytes side by side.

Paste it in — zero-width spaces, byte order marks, non-breaking spaces, and directional overrides are highlighted and named in the Note column, and shown with a visible placeholder in the Char column.

Usually a lookalike character: a curly apostrophe instead of a straight one, an en dash instead of a hyphen, or a non-breaking space instead of a regular one. All of these are flagged here.

A grapheme is what a reader perceives as one character. It can be several code points — an emoji with a skin-tone modifier, or a letter followed by a combining accent. Text truncation should count graphemes, not code points.

It is what travels over the network and what most database VARCHAR limits actually measure. A Latin letter is one byte, most accented and Greek letters two, CJK three, and emoji four.

No. Analysis runs entirely in your browser, so you can safely inspect passwords, tokens, or anything else you suspect has a stray character in it.