TTKTheTextKit

Unicode Character Inspector

Paste any text and see each character as a Unicode code point, with its U+ number, general category, script, UTF-8 bytes and UTF-16 units. The tool counts code points, visible characters and bytes, tells you whether the text is in composed (NFC) or decomposed (NFD) form, and flags invisible characters such as the zero width space and the byte order mark. A second mode turns code points back into text. Everything runs in your browser.

Code points
6
Visible characters
6
Grapheme clusters, what a reader counts
UTF-8 bytes
10
UTF-16 units
7
What JavaScript length returns

Already in NFC form (composed). Decomposing it gives 7 code points.

Every code point with its category, script and encodings
CharCode pointCategoryScriptUTF-8UTF-16
cU+0063Ll Lowercase letterLatin630063
aU+0061Ll Lowercase letterLatin610061
fU+0066Ll Lowercase letterLatin660066
éU+00E9Ll Lowercase letterLatinC3 A900E9
␠U+0020spaceZs Space separatorCommon200020
😀U+1F600So Other symbolCommonF0 9F 98 80D83D DE00

Unicode gives every character a number called a code point, written U+ followed by hexadecimal. One thing that looks like a single character can be several code points (an e with an accent can be one or two, and an emoji family is five), and each code point takes 1 to 4 bytes in UTF-8 and 1 or 2 units in UTF-16. The table shows the general category and script of each code point, and marks invisible characters such as the zero width space, the no-break space and the byte order mark, which are a common cause of strings that look equal but are not. Text is analysed up to 2,000 characters in your browser and nothing is uploaded.

Related Tools

[5 suggestions]

About the Unicode Character Inspector

Unicode gives every character a number called a code point, written U+ followed by at least four hexadecimal digits, from U+0000 to U+10FFFF. A code point is not always what a reader sees as one character. The letter e with an acute accent can be one code point, U+00E9, or two, U+0065 followed by the combining accent U+0301, and the family emoji is five code points joined by zero width joiners yet is drawn as one picture. The tool therefore reports three counts: code points, visible characters (grapheme clusters, as the browser segments them) and the length JavaScript reports, which counts UTF-16 units. Characters above U+FFFF, such as most emoji, take two UTF-16 units, called a surrogate pair. In UTF-8 a code point takes 1 byte up to U+007F, 2 bytes up to U+07FF, 3 bytes up to U+FFFF and 4 bytes above that, so the word cafe with an accent is 5 bytes when composed and 6 when decomposed. Each code point is shown with its two letter general category, such as Lu for an uppercase letter, Nd for a decimal digit or Zs for a space, and with its script, such as Latin, Greek or Cyrillic, which helps find look-alike letters from another alphabet. Invisible characters are highlighted: the zero width space, the zero width joiner and non-joiner, the no-break space, the byte order mark and the directional marks. They explain why two strings that look the same do not compare as equal. Up to 2,000 characters are shown at once. Nothing is uploaded.

What is a Unicode code point?▾

A code point is the number Unicode gives to a character, written as U+ and hexadecimal digits. The letter A is U+0041 and the grinning face emoji is U+1F600. There are 1,114,112 possible code points, from U+0000 to U+10FFFF.

Why is the length of my text different from the number of characters I see?▾

JavaScript counts UTF-16 units, so an emoji counts as 2. Some visible characters are also built from several code points, such as an accented letter written as a letter plus a combining mark. The tool shows the code point count, the visible character count and the UTF-16 length side by side.

How do I find invisible characters in text?▾

Paste the text. Characters such as the zero width space (U+200B), the no-break space (U+00A0) and the byte order mark (U+FEFF) are highlighted in the table and listed above it, so you can see what is hiding in a string that looks normal.

What is the difference between NFC and NFD?▾

They are two normal forms of the same text. NFC composes letters and accents into single code points where possible, and NFD splits them into a base letter and combining marks. The tool tells you which form your text is in and how long it is in the other.

Is my text uploaded?▾

No. The text is analysed in your browser and is never sent anywhere.