Character Counter
Count visible characters and UTF-8 bytes, with a letter, digit, space, and symbol breakdown.
Need readability scores and n-gram analysis? Word Counter
Runs locally in your browser. Nothing is uploaded or sent to a server.
Paste or type text to count user-perceived characters, including combined emoji as one character. Review the separate UTF-16 unit count when it differs, UTF-8 bytes, and the letter, digit, space, and symbol breakdown. Select a platform limit to check progress, or copy the statistics. All text analysis happens in the browser.
Updated
Related Tools
Word Counter
Count your draft with optional citation and parenthesis exclusions, then track a word goal.
text-toolsTwitter Character Counter
Check weighted length, preview your post, spot repeated hashtags, and save a draft locally.
text-toolsReading Time Calculator
Compare reading and speaking time with separate WPM settings, text counts, and a copyable read-time label.
text-toolsText Case Converter
Convert headings and identifiers with acronym preservation, language options, and line-by-line controls.
text-toolsEmoji Picker
Search 200 emojis, choose skin tones, and save reusable sequences locally in your browser.
text-toolsText to Handwriting
Turn typed notes into handwriting pages with local fonts, paper styles, and PDF or image downloads.
How many characters does your text contain?
Paste or type text to see its user-perceived character count, its count without whitespace, and its UTF-8 byte size. The Characters tile counts grapheme clusters through Intl.Segmenter, so an emoji with a skin tone or a letter with a combining accent counts as one. Counts update after you edit the text in your browser.
The table uses literal text without surrounding quotation marks or extra line breaks. Its measurements distinguish visible characters from storage units. UTF-16 units correspond to JavaScript string length, while UTF-8 bytes measure the encoded size. A single displayed symbol can therefore have different values across these columns.
| Text | Characters | Without whitespace | UTF-16 units | UTF-8 bytes |
|---|---|---|---|---|
Hello world! | 12 | 11 | 12 | 12 |
A B | 3 | 2 | 3 | 3 |
é | 1 | 1 | 1 | 2 |
😀 | 1 | 1 | 2 | 4 |
Café 👍🏽 costs 42€! | 17 | 14 | 20 | 27 |
What does the letter, digit, space, and symbol breakdown show?
The breakdown divides the inclusive character count into four groups that add up to the total. Letters cover any script, digits are decimal digits, and spaces include whitespace such as tabs and line breaks. Punctuation, other symbols, and emoji are grouped under symbols. Each grapheme is assigned to one group.
For Café 👍🏽 costs 42€!, the engine reports 9 letters, 2 digits, 3 spaces, and 3 symbols. Together they make 17 characters. The skin-tone emoji is one symbol; the euro sign and exclamation mark are the other two. No Spaces removes all whitespace and reports 14 characters for this example.
Why can UTF-16 units and UTF-8 bytes differ from characters?
UTF-16 units and UTF-8 bytes measure encoded text rather than the number of user-perceived characters. When JavaScript string length differs from the grapheme count, the Characters tile shows an extra annotation such as 20 UTF-16 units. JavaScript and many database limits use those units, so keep the destination's counting rule in view.
The UTF-8 tile uses TextEncoder to measure bytes. A precomposed é is one character, one UTF-16 unit, and two UTF-8 bytes. A plain letter followed by a combining accent remains one grapheme but can use more units. Check the byte tile for encoded size; do not infer bytes by multiplying the visible character count by a fixed amount.
How are words, sentences, paragraphs, and lines counted?
Words are nonempty tokens separated by whitespace, while sentences use punctuation matching and paragraphs are nonempty blocks separated by blank lines. Lines are separated by newline characters, and empty text has zero lines. These rules describe string structure rather than full linguistic analysis, so abbreviations and text without spaces can produce unexpected counts.
Unique words are lowercased, stripped of leading and trailing non-word characters, and deduplicated. Reading time uses 238 words per minute, and speaking time uses 150. These fixed estimates help compare drafts but do not measure your personal pace. Open Word Counter when reviewing word-focused text statistics.
How do platform limits and copied statistics work?
The limit selector compares the inclusive grapheme count with a built-in target and displays remaining or excess characters. Its progress turns amber at 80% and red above the limit. With text present, All Platform Limits also shows nine reference bars. These presets do not reproduce every destination's special handling of links or emoji.
Copy Stats copies character counts, the four-part breakdown, words, unique words, sentences, paragraphs, lines, and both time estimates. It omits UTF-8 bytes and the UTF-16 annotation. The input itself is capped at 1,000,000 UTF-16 units, and longer input is truncated. Use Clear to empty it, or Text Case Converter for case changes.
How to Use Character Counter
-
Paste or type your text
Enter text to update the statistics. The input is capped at 1,000,000 UTF-16 units, which is separate from the visible character count.
-
Review characters and the breakdown
Read Characters and No Spaces, then inspect letters, digits, spaces, and symbols. The Characters tile shows an additional UTF-16 unit count when it differs.
-
Choose a platform limit
Select a built-in limit to see progress and remaining or excess characters. Review UTF-8 bytes separately when a destination uses a byte limit.
-
Copy the statistics
Use Copy Stats to copy character counts, the breakdown, word and structure counts, and reading and speaking estimates. Clear empties the text input.