Unicode Character Inspector

Paste any text — a Markdown file, a regex, a JSON string, a line of code — and see every code point broken down: U+XXXX, decimal, UTF-8 bytes, UTF-16 code units, JavaScript and Python escape forms, HTML entity names, general category, the Unicode block it lives in, and a list of visual lookalikes. Live, in your browser, no upload.

Code points — click a tile to copy its U+XXXX
Detail — click a code point above to focus a row
# Char U+XXXX Decimal Category Block UTF-8 UTF-16 JS HTML Lookalikes

Frequency
Char U+XXXX Count %
How Unicode inspection works
  • Code point — the atomic unit of Unicode. A code point is identified by its U+XXXX code and a decimal value. Most code points fit in 16 bits (the BMP); the rest (e.g. most emoji, mathematical alphanumerics, historic scripts) live in supplementary planes and need a surrogate pair in UTF-16 and 4 bytes in UTF-8.
  • UTF-8 — 1 byte for U+0000…U+007F, 2 bytes up to U+07FF, 3 bytes up to U+FFFF, 4 bytes for the rest. The encoding is self-synchronising: you can always find the next character from any byte.
  • JavaScript escape\uXXXX for BMP, \u{XXXX} for non-BMP (only in modern JS). Control characters and a few specials get their own escape (\t \n \r \\ \' \" \0).
  • Python escape\uXXXX for BMP, \UXXXXXXXX (8 hex digits) for non-BMP.
  • HTML entity — if the code point has an HTML5 named entity (e.g. — for U+2014), it's shown. Always-available: &#decimal; and &#xHEX;.
  • Category — the two-letter Unicode general category. Lu = uppercase letter, Ll = lowercase, Lo = other letter (covers CJK, Cyrillic, etc.), Mn = combining mark, Zs = space, Po = punctuation, So = symbol, Nd = decimal digit.
  • Block — the named range the code point lives in. CJK Unified Ideographs (U+4E00…U+9FFF) is one block; General Punctuation (U+2000…U+206F) is another.
  • Lookalikes — characters that share the same visual shape but live in different blocks (em-dash / en-dash / minus / hyphen; smart quotes vs. straight quotes; Latin vs. Cyrillic O; etc.). Useful for spotting homograph attacks and accidental copy-paste substitutions.
  • Index in the detail table is the code-point index (1-based), not the JavaScript string length (UTF-16 code units). A surrogate-pair emoji is one code point at one index, but two UTF-16 units.
  • Nothing leaves the browser. Everything runs on the page; no network calls after the initial load.