Unicode Inspector

Insert test characters

Zero-width / invisible
Whitespace variants
BiDi / direction
Homoglyphs (Cyrillic)
Confusable punctuation
Combining marks
# Char Code point Name UTF-8 UTF-16BE Tags

Unicode Inspector

This is a Unicode inspector: it splits pasted text into code points so you can see identity, encoding and hidden marks. The inspector splits text into Unicode code points and shows identity, encoding and oddities. Identifiers such as UTF-8, ZWSP, BOM, NBSP, BiDi and U+ stay untranslated. A is U+0041, UTF-8 41, UTF-16BE 00 41. é is UTF-8 C3 A9. 🍵 is U+1F375 with UTF-16BE surrogate pair D8 3C DF 75. ZWSP is U+200B, UTF-8 E2 80 8B. Cyrillic а is U+0430; Latin a is U+0061.

How to use

  1. Paste text. Auto convert is on, so the table updates as you type.
  2. Use Insert test characters to add ZWSP, NBSP, BiDi marks, Cyrillic homoglyphs, curly quotes or combining marks.
  3. Read the summary cards: code points, unique characters, graphemes, UTF-16 units (String.length in JavaScript), UTF-8 bytes and UTF-16 bytes.
  4. Filter All / Invisible / Control / Whitespace / Homoglyphs / Non-ASCII. Copy U+ copies one code point; Copy Result copies the visible table as tab-separated text.
  5. Show Example loads Hello\tWorld, café, NBSP, 🍵, ZWSP, 世界🌍 and Cyrillic аеор.

What the summary means

Code points count scalar values: one emoji is one code point. Graphemes are what a reader sees, so a flag or a letter plus combining acute can be one grapheme made of several code points. UTF-16 units are JavaScript string.length: 🍵 is two units. UTF-8 bytes are the storage size on the web; UTF-16 bytes are twice the unit count. Invisible counts controls, format marks, ZWSP/BOM and special spaces such as NBSP, not ordinary U+0020 SPACE.

Invisible characters, BiDi and homoglyphs

Controls show as \t / \n. SPACE shows as ␣, NBSP as ⍽, other invisibles as their code point. Tags mark CTRL, INV, WS, BIDI, HOMOGLYPH. Homoglyph chips insert Cyrillic lookalikes of Latin a e o p c x y — useful when a string looks ASCII but fails a parser or login. BiDi marks (LRM, RLM, LRE, RLO, PDF) can reverse runs of text without looking like characters.

Columns and encodings

Each row is one code point: glyph, U+ value, Unicode name (official English names and algorithmic CJK / Hangul names), general category, block, UTF-8 and UTF-16BE bytes. UTF-32 is included in the copied report. Names that are not in the compact table fall back to U+1F30D-style labels — still unique. Nothing is uploaded; analysis stays in the browser.

Frequently asked questions

  • Why does 🍵 take two UTF-16 units? It is outside the BMP, so UTF-16 uses a surrogate pair.
  • Character count vs graphemes vs code units? Count code points for Unicode length, graphemes for visual length, UTF-16 units for JavaScript length.
  • Is this Hex to ASCII? Hex to ASCII decodes bytes. This page starts from characters and also flags hidden marks.
  • Can I export? Copy Result writes a TSV of the filtered table, including name, block, UTF-8, UTF-16BE, UTF-32BE and tags.

Related tools

Need a byte string of one encoding? Use String to Hex. Decode bytes with Hex to ASCII. See offsets and an ASCII column with Hex Dump.

Need bytes instead of code points? String to Hex →