Character Analyzer
Paste text and see every character classified — case, digits, symbols, whitespace — with Unicode code points.
Paste or type below — analysis runs live. The summary counts everything; the table details the first 5,000 characters.
| as written | |
with \n linux — what
echo text | md5sum hashes |
|
with \r\n windows line
ending |
Colored view truncated to the first 10,000 characters.
Table truncated to the first 5,000 characters.
| # | char | category | code point | dec |
|---|
characters & unicode 101
What is a character, really?
Computers don't store letters — they store numbers. Unicode is the
agreement about which number means which character: every character gets a
code point, written U+ plus its hex value. A
is U+0041 (decimal 65), € is U+20AC, and
😀 is U+1F600. Unicode has room for over a million code
points, of which about 150,000 are assigned so far — covering every living script,
historic writing systems, symbols, and emoji.
Categories
Every code point carries a general category — that's what the colored badges in this tool show:
| category | examples | unicode classes |
|---|---|---|
| uppercase letter | A Ç Ω | Lu |
| lowercase letter | a ç ω | Ll |
| letter (other) | 漢 ا अ — scripts without case | Lo, Lt, Lm |
| digit | 0-9 ٣ 7 | Nd |
| punctuation | . , ! — « » | P* |
| symbol | + € ✓ 😀 (yes, emoji are symbols) | S* |
| whitespace | space, tab, newline, no-break space | Z*, tab/CR/LF |
| control | bell, null, escape — invisible machine codes | Cc, Cf |
Code points vs. bytes vs. what you see
Three layers are easy to confuse:
- Bytes depend on the encoding. In UTF-8,
Ais 1 byte,€is 3, and😀is 4. In JavaScript's UTF-16 strings,😀takes two 16-bit units (a "surrogate pair") — which is why naivelengthcounts call it 2. This tool counts real code points, so it's 1. - Code points are what this tool shows — the Unicode numbers.
- What you see (a grapheme) can be several code points:
écan be one code point (U+00E9) or two (e+ combining accentU+0301), and family emoji like 👨👩👧 are multiple emoji glued with invisible zero-width joiners. Paste one in and watch it decompose.
Why this matters
- Invisible characters — no-break spaces (
U+00A0), zero-width spaces, and BOMs break parsers, diffs, and copy-pasted commands. If a config file "looks right" but won't parse, paste it here. - Homoglyphs — Cyrillic
а(U+0430) looks identical to Latina(U+0061). Phishing domains and sneaky identifiers exploit this; the code points never lie. - Data cleaning — smart quotes vs straight quotes, en-dash vs hyphen, full-width digits from CJK input: all visible instantly here.