loot.tools

Unicode Character Inspector

Paste any text and see it one character at a time: the code point in U+ notation, its decimal value, the UTF-8 and UTF-16 bytes, the HTML entity, the CSS escape, the JavaScript escape, and a plain name or category. Emoji, accented letters, and invisible characters like zero-width spaces all show up clearly. Useful for debugging encoding issues, spotting hidden characters, and getting the exact escape you need. Everything runs in your browser.
13
Code points
15
UTF-16 units
24
UTF-8 bytes
4
Invisible
CharCode pointDecUTF-8UTF-16HTMLCSSJSName / category
U+006399630063c\63\u0063Basic Latin letter
U+006197610061a\61\u0061Basic Latin letter
U+0066102660066f\66\u0066Basic Latin letter
U+00E9233C3 A900E9é\E9\u00E9Letter
U+002032200020 \20\u0020SPACE
U+1F1EC127468F0 9F 87 ACD83C DDEC🇬\1F1EC\u{1F1EC}Emoji / symbol
U+1F1E7127463F0 9F 87 A7D83C DDE7🇧\1F1E7\u{1F1E7}Emoji / symbol
U+002032200020 \20\u0020SPACE
U+271310003E2 9C 932713✓\2713\u2713Symbol
U+002032200020 \20\u0020SPACE
U+006197610061a\61\u0061Basic Latin letter
U+200B8203E2 80 8B200B​\200B\u200BZERO WIDTH SPACE
U+006298620062b\62\u0062Basic Latin letter

What it shows

For every character in your text the table lists the Unicode code point (U+XXXX), its decimal value, the bytes when encoded as UTF-8 and UTF-16, a numeric or named HTML entity, the CSS escape, and the JavaScript string escape. A short label names the character or describes its category. The summary at the top counts code points, UTF-16 units (JavaScript's string length), UTF-8 bytes, and how many characters are invisible.

Find hidden characters

Some characters take up no space but still break things: zero-width spaces, the byte-order mark, non-breaking spaces, soft hyphens, and bidirectional marks. Paste text that's behaving oddly and the inspector flags each invisible character with a dot and its proper name, so you can see exactly what's in the string.

Code points vs bytes vs length

These three numbers often disagree, and that trips people up. An emoji like 😀 is one code point but two UTF-16 units (a surrogate pair), so JavaScript reports its string length as 2. The same emoji is four bytes in UTF-8. Flags are even worse, built from two regional-indicator code points. The inspector spells all of this out so you can reason about lengths and storage correctly.