CruxDevCruxDev Tools Prompts
text Utility • Zero-Server Privacy • 100% Client-Side

Unicode Character Inspector

Inspect every character: code point, HTML entity, UTF-8 byte size, and script block hints.

Overview

Inspects any text character by character: each row shows the glyph, its Unicode code point in U+XXXX notation, its decimal entity form, and a hint of which script block it belongs to. Headline counters compare character count against JavaScript's own length and the true UTF-8 byte size, exposing the difference at a glance.

How It Works

Paste text into the input box — the default sample deliberately mixes Latin accents, CJK and an emoji. Three stat tiles appear immediately: Characters (code points), Code units (JS length) and UTF-8 bytes. The table below lists every character in order, capped at 200 rows for performance. Type to explore: an invisible character shows as a blank row with a telling code point, and emoji demonstrate the character-versus-code-unit gap.

Step-by-Step Usage Guide

  1. Paste the text you want to dissect into the input box.
  2. Compare the three counters: if Characters is smaller than Code units, your text contains surrogate pairs; if Bytes is larger still, multi-byte encodings are present.
  3. Scan the table for the suspicious character — invisible or unusual characters stand out as blank or rare code points.
  4. Use the U+XXXX value to search the Unicode charts, or copy the entity form for HTML use.

Technical Specifications & Standards

The tool's central lesson is the three-layer model of text. Characters are counted by iterating code points (Array.from), so the globe emoji is one character; JavaScript's .length counts UTF-16 code units, so the same emoji is 2 (a surrogate pair); and TextEncoder counts the UTF-8 bytes, 4 for that emoji. Each table row gives the character, its code point in standard U+ uppercase-hex notation padded to at least four digits, and its decimal numeric HTML entity (&#NNN;) for embedding in HTML — one column quirk to know: the column labelled Hex actually displays the decimal entity form. Block hints come from a small range table — CJK Unified, Cyrillic, Arabic, Latin Extended, Symbols, Emoji — which is a coarse guide, not the Unicode character database: a character outside the listed ranges is labelled Punctuation as a catch-all. The honest limitation: this is an inspector, not a name lookup — it tells you where a character lives and how it is encoded, but not its official Unicode name, and combining characters (accents typed as separate marks) each get their own row.

Targeted Use Cases

  • Finding the invisible character breaking a password rule, form validation or string comparison.
  • Debugging why a string's length disagrees with its visible character count.
  • Identifying lookalike characters — a Cyrillic a inside an English word — that defeat naive text matching.
  • Learning how accented characters, CJK and emoji decompose into code points, code units and bytes.

Notes & Gotchas

  • Copy the U+ code point, not the character itself, when reporting a mystery character — pasting may lose invisible characters.
  • Expect combining marks to occupy their own rows; a visually single accented letter can be two or more code points.
  • Use JS length (code units) to predict what JavaScript code will compute, and Characters for what humans see.
  • Treat the block hint as a starting point; verify against the official Unicode charts for anything critical.

Frequently Asked Questions

Why do the three counters disagree?

They measure different layers: code points are what Unicode defines as characters, JS length counts UTF-16 code units (emoji = 2), and UTF-8 bytes count storage (emoji = 4). All three are correct for their own purposes.

How do I find an invisible character?

Paste the text and look for a table row whose glyph appears blank. Its code point will identify it — common culprits are zero-width spaces (U+200B) and non-breaking spaces (U+00A0), which look like ordinary spaces but are not.

What is the difference between U+00E9 and é?

They are two notations for the same code point: hexadecimal with the U+ prefix and decimal as an HTML numeric entity. The table shows both so you can use whichever the target context needs.

Does it show the official character name?

No. Each row shows a block hint derived from code-point ranges (CJK, Cyrillic, Symbols, and so on) rather than the full Unicode name. Use the code point with the online Unicode charts for the authoritative name.