Word & Character Counter
Count characters, Chinese/English, lines, paragraphs, UTF-8 bytes and estimated reading time
Why counters disagree: characters, code points, bytes, and grapheme clusters
"How many characters" has at least four answers
The same string counted by different criteria yields different numbers, and each number is "correct":
| Metric | abc | 中文 | café | 😀 |
|---|---|---|---|---|
UTF-16 code units (JS length) | 3 | 2 | 4 | 2 |
| Unicode code points | 3 | 2 | 4 | 1 |
| UTF-8 bytes | 3 | 6 | 5 | 4 |
| User-perceived characters (grapheme clusters) | 3 | 2 | 4 | 1 |
Three key discrepancies:
- One Han character takes 3 bytes. UTF-8 is variable-length: ASCII is 1 byte, Latin extended is 2, CJK is 3, and emoji are 4. So "character count" and "byte count" differ by a factor of three for Chinese text. This directly affects database field-length limits, API payload limits, and SMS segment counts.
- An accented Latin letter takes 2 bytes.
caféis 4 characters but 5 bytes, because é is outside ASCII. It is trickier still because é may also be stored as an e followed by a combining accent — two code points that look identical but count differently. This is exactly what Unicode normalization (NFC/NFD) addresses. - An emoji counts as 2 in JavaScript. JS strings are UTF-16, and characters beyond the Basic Multilingual Plane are stored as surrogate pairs, so
lengthreturns 2. An emoji with a skin-tone modifier or a family sequence (such as 👨👩👧, built from several code points plus a zero-width joiner) can have alengthabove 8, yet the user sees a single character. A character-limit check based onlengthmisjudges this — a user who sees ten characters gets told they exceeded the limit, which is the usual cause.
This tool reports the character count (UTF-16 code units) and the UTF-8 byte count separately because both are needed in practice: UI limits are usually by character, while storage and transmission limits are by byte.
Chinese "word count" has no single definition
English splits words on spaces, so "word count" is unambiguous. Chinese has no inter-word spaces, which creates disagreement:
- By character. Each Han character counts as one, and punctuation usually counts too. This is the most common Chinese metric — an "800-character essay" means exactly this.
- By word. This needs segmentation, and segmenters disagree (研究生命起源 can be split as 研究/生命/起源 or 研究生/命/起源). It is used only in NLP contexts.
The tool counts CJK characters and English words separately so you can see both dimensions at once — in mixed text (technical docs, product copy) relying on a single number badly distorts the result.
Which number to use when
| Scenario | Look at | Reason |
|---|---|---|
| Weibo / comment length limit | Character count | The platform checks by character (and may apply weighted rules) |
| Database field length | Bytes | VARCHAR(n) is by bytes or by characters depending on version and config; confirm which |
| SMS billing | Bytes | Pure ASCII is 160 chars per message; Chinese is 70 chars per message under UCS-2 |
| Article / abstract | Character or word count | Per the submission rule, "字" or "words" |
| SEO title and description length | Pixel width | Engines truncate by rendered width, not by character count |
| Subtitle duration estimate | Character count plus reading speed | See the next section |
Reading-time baseline
The tool estimates reading time from the counts. Reference baselines:
- English silent reading is about 200-250 words per minute; Chinese silent reading is about 300-500 characters per minute.
- Reading aloud is much slower: English about 130-160 words per minute, Chinese about 200-250 characters per minute. Use the aloud speed when estimating voiceover or speech duration.
- Technical content with many numbers or code is visibly slower; the real time can be 1.5 times the estimate or more.
So the number is only a magnitude reference for judging "is this copy too long", not a precise duration promise.
What the tool counts
- Character count, and character count excluding whitespace
- CJK character count (including the Extension A block) and English word count (a run of digits counts as one word)
- Line count and paragraph count (paragraphs split on blank lines)
- UTF-8 byte count
- Estimated reading time
All counting runs locally in your browser; no text is uploaded, which matters when counting long internal documents or customer material.
FAQ
How is reading time calculated for Chinese vs English?
Estimated by experience: roughly 300 Chinese characters/minute and 200 English words/minute, summed for the total duration.
Why do UTF-8 bytes differ from the character count?
A Chinese character takes 3 bytes in UTF-8, an emoji takes 4 bytes, while the character count is just 1, so bytes are usually larger than the character count.