How do I find the Unicode code point of a character?
Paste your text and this tool lists every character with its code point in U+ notation, its decimal value, the UTF-8 bytes, an HTML entity and a JavaScript escape. It also shows the total code points, the UTF-16 length and the UTF-8 byte count. Everything runs in your browser and nothing is uploaded.
What the inspector shows you
Every character you can type or paste has a Unicode code point: a number that identifies it across every device and font. This tool takes your text, splits it into code points and lists each one with everything you might need. You get the character as it renders, its code point in the standard U+ notation, its plain decimal value, the bytes it takes up in UTF-8, an HTML entity you can drop into a web page and a JavaScript escape you can paste into code. At the top you also get three totals that are easy to confuse: the number of code points, the UTF-16 length and the UTF-8 byte count.
The text is split with the spread operator, which walks the string by code point rather than by storage unit. That matters because emoji and many less common characters are stored as two units in JavaScript, and a naive character count would report them as two. Here they are counted, and listed, as one.
Code point, UTF-16 length and byte count
These three numbers answer different questions. The code point count is how many characters there really are. The UTF-16 length is how JavaScript stores the string internally, where a character above U+FFFF takes two units. The UTF-8 byte count is how many bytes the text uses when saved or sent, which is what most storage and length limits actually measure. For plain English letters all three are usually the same, but accents and emoji pull them apart.
That last example is the classic surrogate pair. The grinning face sits above U+FFFF, so UTF-16 stores it as a leading and a trailing unit working together. The plain string length counts two, the byte count counts four, and only a proper code point count reports the single character you actually see.
Why invisible and confusable characters matter
Text copied from the web, chat apps or PDFs often carries characters you cannot see. A zero-width space, a no-break space or a byte order mark can sit between letters and quietly break a search, a login form or a line of code, because the text no longer matches what you expect. The inspector flags these clearly, naming them rather than showing a blank, so you can find and remove them.
Confusable characters are the mirror problem. Several alphabets contain letters that look almost identical to Latin ones, so a word can appear correct while being made of different code points underneath. This is how some scam links and copy-paste bugs work. Reading the code points removes all doubt: two characters that look the same are only the same if their U+ values match.
Putting the details to use
The HTML entity and JavaScript escape are there so you can reproduce any character without typing it. The entity, written as ampersand-hash-x then the hex value and a semicolon, works anywhere HTML is accepted. The JavaScript escape uses backslash-u with four hex digits for characters up to U+FFFF, and backslash-u with braces for higher ones such as emoji. The UTF-8 bytes are useful when you are debugging encoding problems, checking why a byte-based length limit is being hit, or confirming that a file is really UTF-8. Because all of this happens in your browser, you can paste in private notes, source code or messages and nothing is uploaded.
How we work it out
The text is iterated with the spread operator so astral characters (emoji and other characters above U+FFFF) count as one code point, not two UTF-16 units. Code points come from codePointAt, UTF-8 bytes from TextEncoder, and the UTF-16 length is the plain string length.
Frequently asked questions
What is the difference between a code point and the string length?
A code point is one Unicode character, such as U+1F600 for a grinning face. JavaScript stores text as UTF-16, so a character above U+FFFF takes two units, which is why the string length can be larger than the number of code points. This tool counts code points by iterating the text properly, so an emoji counts as one.
Why is the UTF-8 byte count higher than the character count?
UTF-8 uses one byte for basic Latin letters, two for most accented letters, three for many symbols and three or four for emoji. So a short piece of text with accents or emoji can use far more bytes than it has characters. The byte count is what matters for storage and for limits measured in bytes.
What are invisible or confusable characters?
Some characters have no visible shape, such as zero-width spaces, or look almost identical to others, such as a Cyrillic letter that resembles a Latin one. They can slip into text copied from the web and cause search, login or code problems. Inspecting the code points reveals exactly what is there.
What is the HTML entity and JavaScript escape for?
The HTML entity, in the form ampersand-hash-x-hex-semicolon, lets you write a character in HTML by its code point. The JavaScript escape does the same in code, using backslash-u for characters up to U+FFFF and backslash-u with braces for higher ones. Both are handy when a character is hard to type.
Is my text uploaded anywhere?
No. All the analysis happens in your browser using built-in text functions, so your text never leaves your device. You can safely paste private notes, code or messages to inspect them.