Unicode Character Inspector Developer
Break text into code points and see what each character really is, byte for byte.
Unicode Character Inspector is a free online tool that break text into code points and see what each character really is, byte for byte. It runs entirely in your web browser using Intl, so files are processed on your own device and never uploaded to a server. There is no sign-up, no file size limit imposed by the site, no watermark and no paid tier.
- Price
- Free — no account, no quota, no watermark
- Category
- Developer
- Where it runs
- In your browser, on your device
- Files uploaded
- None
- Technology
- Intl
- Settings
- 1
- Works offline
- Yes, after the first visit
About Unicode Character Inspector
Three different numbers can all be called “the length” of a string, and they disagree. “👨👩👧” is one character to a person, five code points, eleven UTF-16 units and twenty-five UTF-8 bytes — which is why a 280-character limit, a database column width and a `.length` check can all be measuring different things about the same text. This shows all four at once, then breaks the text down code point by code point with the exact UTF-8 bytes for each.
How to use it
- Paste or type your text. Every figure recalculates on each keystroke.
- Use the sample button to see what the numbers look like on real prose.
The one setting
| Setting | What it does | Default |
|---|---|---|
| Characters to list | Range 5–400. | 60 |
Under the hood
| Runs on | Intl — handles locale-aware formatting |
| Controls | Characters to list |
Questions
Why does JavaScript report a different length than I expect?
Because `String.length` counts UTF-16 code units, not characters. Anything outside the Basic Multilingual Plane — most emoji, historic scripts, mathematical alphanumerics — takes two units each, so a string of five emoji reports a length of ten.
What is a grapheme cluster?
What a person would call a character: a base letter plus any combining marks, or a full emoji sequence including its joiners. It is the “visible characters” figure here, and it is the only one of the three that matches what someone counting on screen would get.
Why do some characters show as “(control)”?
They have no visible form. Tabs, line feeds and the zero-width characters occupy a position in the string without occupying space on screen — which is exactly what makes them hard to debug. The Invisible Character Detector is aimed specifically at those.