Unicode Character Inspector
Break any text into its Unicode code points and see encodings, escapes and invisible characters.
Finding characters you cannot see
Invisible code points are flagged with a badge in the character column and explained underneath, so you can tell a joiner doing real work inside an emoji from a zero-width space that arrived by accident. The tool describes what each one does; it does not judge them, because most have entirely legitimate uses.
This is a debugging and document-review aid. If you are checking text somebody sent you, the useful question is usually whether the displayed characters match the stored ones — the code point list answers that directly.
Three ways to count a string
- Graphemes — what a reader perceives as one character.
- Code points — Unicode characters, which is what most standards mean.
- UTF-16 units — what
String.lengthreturns in JavaScript. - UTF-8 bytes — what storage and network limits usually measure.
See grapheme cluster for why these disagree.
Privacy
Everything on this page runs in your browser. What you type or paste is never sent to a server, never logged and never stored unless you explicitly save it — in which case it stays in this browser's local storage. Read the privacy policy.
Frequently asked questions
Why does my text have more characters than I can see?
Some code points are deliberately invisible: zero-width spaces, soft hyphens, byte-order marks and joiners all take up no width. They commonly survive copying out of a PDF, a spreadsheet or a formatted web page.
Why does my string fail to match even though it looks identical?
Usually a look-alike character. A non-breaking space looks exactly like a space but is a different code point, and Greek or Cyrillic letters can be visually identical to Latin ones. Paste both strings here and compare the code points.
What does the replacement character mean?
U+FFFD marks a place where bytes could not be decoded as valid text. It means the string was already damaged before it arrived — normally a file read as the wrong encoding. The original characters cannot be recovered from it.
Which count should I use for a character limit?
It depends on what is counting. Most social platforms count something close to graphemes, databases usually count bytes, and JavaScript's .length counts UTF-16 units. All three are shown so you can check against whichever applies.