Text & encoding

Unicode Character Inspector

Inspect code points, UTF-8 bytes, UTF-16 offsets and grapheme counts. Reveal invisible characters and bidirectional controls without changing your text.

Stays in your browserFiles and text are processed in this tab.
Unicode Character InspectorLocal processing
Add input, or load the sample.
0 graphemes0 code points0 UTF-16 units0 UTF-8 bytes

Text & encoding

How it works

A visible character can contain several code points. The emoji 👩‍💻 contains WOMAN, ZERO WIDTH JOINER and PERSONAL COMPUTER, but normally displays as one grapheme. JavaScript string length counts UTF-16 units instead of graphemes.

Spaces can also differ: U+0020 is an ordinary space and U+00A0 is a non-breaking space. Zero-width and bidirectional controls may affect layout while remaining difficult to see. The inspector labels them explicitly.

What you can do

Keep every character occurrence and its zero-based UTF-16 offset. Compare official Unicode names, code points, UTF-8 bytes, code units, categories and common scripts. Filter hidden characters, non-ASCII, whitespace or bidi controls, and export the complete filtered table as TSV.

How to use it

  1. Paste text, open a UTF-8 file or load the sample, then select Inspect.
  2. Read the four counts and choose a table filter. Invisible characters use a visible label; your original text remains in the input.
  3. Copy the filtered TSV report or download it. A maximum of 300 table rows is rendered at once; exports include all filtered rows.

Errors and limits

At most 25,000 code points can be inspected in one run. An unpaired surrogate is an error, with its input position, rather than a fabricated character.

Official Unicode names and script identifiers use their standard names. Script recognition covers common scripts; Other means outside that set. Browser Unicode data determines categories and segmentation. Mixed-script checks are a heuristic, not a security audit.

Frequently asked questions

Why does one emoji have several rows?

Rows represent code points. Joiners, skin tones and other components can combine into one grapheme without becoming one code point.

Should I delete every invisible character?

No. Joiners are required by many emoji and writing systems. Inspect the context before using the normalizer’s optional removal controls.

Related tools