Unicode Lookup
Inspect any text character by character: code point, name, block, UTF-8 and UTF-16 bytes, HTML entity, JavaScript and URL escapes.
| Char | Code point | Name | UTF-8 | UTF-16 | HTML | JS | URL |
|---|
Nothing to inspect yet — type something above.
Look up a code point
That is not a valid code point (0 to 10FFFF).
Convert between escaped forms
How to use the Unicode lookup
- Paste the text you are debugging into the first box — every character is broken out into its own row with its code point, name and block.
- Read across the row for the exact bytes and escapes you need: UTF-8, UTF-16, an HTML entity, a JavaScript
\uescape or a percent-encoded URL form. - Going the other way? Paste
\u4f60,你or%E4%BD%A0into the converter and every other form — including the readable text — is filled in for you.
FAQ
Why does one emoji count as two characters in JavaScript?
JavaScript strings are UTF-16. Any code point above U+FFFF — most emoji, and rarer CJK ideographs — is stored as a surrogate pair, so "🙂".length is 2. Iterate with Array.from() or a for…of loop, as this tool does, and you get one element per real character.
My string looks identical but comparisons fail. Why?
Almost always invisible or duplicated code points: a zero-width space, a non-breaking space instead of a normal one, a byte order mark at the start, or an accent stored as a base letter plus a combining mark rather than a single precomposed character. Paste both strings here and the rows will differ immediately.
Do you ship the whole Unicode database?
No — that would be several megabytes. The page carries names for ASCII, Latin-1, common punctuation, arrows, maths, currency and popular emoji, computes the algorithmic names for CJK ideographs, and shows the official block name for everything else.