Unicode

Inspect every character in a string and find the invisible ones that are breaking things.

Runs in your browser — nothing you type here is sent anywhere.
Text

3 invisible characters hiding in this text

  • at 4U+200BZERO WIDTH SPACEline 1:5A zero-width space. It splits words with nothing visible there.
  • at 23U+00A0NO-BREAK SPACEline 1:24A no-break space, not a plain space. Search and split will miss it.
  • at 28U+2011NON-BREAKING HYPHENline 1:29A non-breaking hyphen, not U+002D. Search will miss it.
1 removed, 2 swapped for a plain equivalent, 0 left alone
40
graphemes
41
code points
43
utf-16
56
utf-8 bytes
non-ascii7 code points
invisible3 code points
graphemescounted with Intl.Segmenter
Normalise

Compose — é becomes one code point.

NFC leaves this text exactly as it is.

Characters
escape
#charpointnamecatutf-8escape
0CU+0043LATIN CAPITAL LETTER CLu43
1oU+006FLATIN SMALL LETTER OLl6F
2pU+0070LATIN SMALL LETTER PLl70
3yU+0079LATIN SMALL LETTER YLl79
4·U+200BZERO WIDTH SPACECfE2 80 8B
5pU+0070LATIN SMALL LETTER PLl70
6aU+0061LATIN SMALL LETTER ALl61
7sU+0073LATIN SMALL LETTER SLl73
8tU+0074LATIN SMALL LETTER TLl74
9eU+0065LATIN SMALL LETTER ELl65
10dU+0064LATIN SMALL LETTER DLl64
11·U+0020SPACEZs20
12fU+0066LATIN SMALL LETTER FLl66
13rU+0072LATIN SMALL LETTER RLl72
14oU+006FLATIN SMALL LETTER OLl6F
15mU+006DLATIN SMALL LETTER MLl6D
16·U+0020SPACEZs20
17aU+0061LATIN SMALL LETTER ALl61
18·U+0020SPACEZs20
19dU+0064LATIN SMALL LETTER DLl64
20oU+006FLATIN SMALL LETTER OLl6F
21cU+0063LATIN SMALL LETTER CLl63
22:U+003ACOLONPo3A
23·U+00A0NO-BREAK SPACEZsC2 A0
24U+201CLEFT DOUBLE QUOTATION MARKPiE2 80 9C
25nU+006ELATIN SMALL LETTER NLl6E
26oU+006FLATIN SMALL LETTER OLl6F
27nU+006ELATIN SMALL LETTER NLl6E
28·U+2011NON-BREAKING HYPHENPdE2 80 91
29bU+0062LATIN SMALL LETTER BLl62
30rU+0072LATIN SMALL LETTER RLl72
31eU+0065LATIN SMALL LETTER ELl65
32aU+0061LATIN SMALL LETTER ALl61
33kU+006BLATIN SMALL LETTER KLl6B
34iU+0069LATIN SMALL LETTER ILl69
35nU+006ELATIN SMALL LETTER NLl6E
36gU+0067LATIN SMALL LETTER GLl67
37U+201DRIGHT DOUBLE QUOTATION MARKPfE2 80 9D
38·U+0020SPACEZs20
39👍U+1F44DSoF0 9F 91 8D
40🏽U+1F3FDEMOJI MODIFIER FITZPATRICK TYPE-4SkF0 9F 8F BD

Everything is split by code point, so an emoji is one row even though it is two UTF-16 units. Strip swaps exotic spaces for U+0020 and a non-breaking hyphen for a plain one rather than deleting them, keeps the joiners that hold an emoji or a flag together, and never removes U+FFFD — those bytes are already gone, and hiding that helps nobody.

A string that looks correct and does not compare equal usually contains something you cannot see: a zero-width space, a non-breaking space, a smart quote pasted from a document, or a homoglyph from another alphabet.

Each character is listed with its code point, name and category, and anything invisible or unusual is flagged. It is the quickest way to explain why two identical-looking strings are not equal.

What people open it for

In the terminal

tools unicode

Every utility is also a command in the desktop's shell.

More text tools

Open the full desktop, with all 47 utilities