Unicode inspector

Break text into characters and read each one's code points, byte length and escapes, with the invisible characters called out.

1 invisible character: zero-width space. These survive a copy and paste and are why a string comparison fails on two things that look identical.
B1B

U+0042

e1B

U+0065

s1B

U+0073

t1B

U+0074

e1B

U+0065

1B

U+0020

U1B

U+0055

I1B

U+0049

3B

U+200B

zero-width space

1B

U+0020

s1B

U+0073

h1B

U+0068

i1B

U+0069

p1B

U+0070

s1B

U+0073

1B

U+0020

b1B

U+0062

l1B

U+006C

o1B

U+006F

c1B

U+0063

k1B

U+006B

s1B

U+0073

1B

U+0020

y1B

U+0079

o1B

U+006F

u1B

U+0075

1B

U+0020

o1B

U+006F

w1B

U+0077

n1B

U+006E

!1B

U+0021

1B

U+0020

👋🏽8B

U+1F44B U+1F3FD

escaped.txt
Beste UI\u200B ships blocks you own! \uD83D\uDC4B\uD83C\uDFFD

Questions

Why does my string comparison fail on two identical-looking values?+

Usually an invisible character: a zero-width space, a no-break space or a byte order mark from a copy and paste. They are highlighted here, which is normally the whole reason to open this page.

Why is an emoji one row and several code points?+

Because a reader sees one character and the string holds several. A flag or an emoji with a skin tone is a grapheme cluster; the segmentation here follows what a person would count.

What is the escaped output for?+

Pasting into source safely. Anything outside printable ASCII is written as a \u escape, which survives a file with the wrong encoding and makes an invisible character visible in review.

Related tools

The tools are free. So is most of the library.

1935 blocks and 989 pieces for shadcn/ui and Tailwind, built on the same tokens these tools write. Install one with a command and the code is yours.

No signup for the tools. MIT for free blocks, commercial licence for Pro.

Markdown version