Unicode Character Inspector
Inspect a whole string character by character: code points, UTF-8/UTF-16 bytes, HTML entities, and flags for invisible or bidi-control characters.
🔒 This tool runs entirely in your browser. Your files are never uploaded to a server.
Every character is inspected below, up to 200 characters — invisible and bidi-control characters are flagged.
| # | Character | Code point | Decimal | UTF-8 bytes | UTF-16 units | HTML entity |
|---|
How it works
- Type or paste text into the input — every character is inspected, up to 200.
- The tool splits the text using code-point-aware iteration, so emoji and surrogate pairs are handled correctly rather than split apart.
- Each row shows the code point, decimal value, raw UTF-8 bytes, UTF-16 units, and the HTML numeric entity.
- Invisible characters and bidi-direction controls are flagged with a labeled badge instead of an empty or misleading cell.
The formula
UTF-8 encodes a code point as 1-4 bytes depending on its value; UTF-16 encodes it as one 16-bit
unit if it fits under U+FFFF, or a surrogate pair of two units otherwise. Both are computed with
the browser's native TextEncoder and String.charCodeAt.
FAQ
What is a Unicode code point?
It's the unique number assigned to every character in the Unicode standard, written as U+ followed by hexadecimal digits, like U+0041 for "A".
Why does one character sometimes need two UTF-16 units?
Characters outside the Basic Multilingual Plane (like many emoji) are encoded as a surrogate pair — two 16-bit units — in UTF-16.
What can I do with the HTML entity value?
Paste &#codepoint; directly into HTML source to render the character without needing the raw glyph in your file.
Does this send my text anywhere?
No — the inspection runs with JavaScript's built-in string and TextEncoder APIs, entirely in your browser.
What does the invisible/bidi-control flag mean?
Some Unicode characters render as nothing (zero-width spaces, joiners, a byte-order mark) or change the visual direction of surrounding text (bidi embedding and override controls, the class used in "Trojan Source" attacks to disguise code). Those are shown as a labeled badge instead of a blank or misleading cell.
How much text can I inspect at once?
Up to 200 characters are shown in the table; longer input is truncated with a note so the page stays responsive.
How we compare
| Feature | Online Tool Store | leafo.net/characters | fileformat.info |
|---|---|---|---|
| No file upload — runs in your browser | ✓ | ✓ | ✗ |
| No sign-up | ✓ | ✓ | ✓ |
| Inspects a whole string, not just one character | ✓ | ✓ | Single character per lookup |
| Flags invisible and bidi-control characters | ✓ | ✓ | Not flagged |
| UTF-8 + UTF-16 bytes shown together | ✓ | ✗ | ✓ |
Paste a whole string and every character is inspected and flagged in one table — no per-character lookups, and no hidden characters slip past unnoticed.