Counting

How Word Counters Count, and Why They Disagree

Hyphens, dashes, numbers, URLs, emoji and Chinese text: the decisions behind every word and character count, and how Word, Google Docs and Textkiln handle them.

Paste the same essay into three word counters and you can get three different numbers. None of them is broken. They have made different decisions about what a “word” and a “character” are, and those decisions matter when a submission portal rejects your 651-word essay.

The basic rule: spaces separate words

Almost every word processor uses the same starting point: a word is a run of characters between whitespace. Microsoft Word, Google Docs, Apple Pages and Textkiln all agree that:

  • “well-known” is one word (no space inside it);
  • “don’t” and “O’Brien” are one word each;
  • “3.14”, “2025” and “10%” are one word each.

Where counters part ways

Dashes. “Yes—no” has no spaces, so a purely space-based counter (Microsoft Word’s approach) sees one word, while counters that treat dashes as separators see two. Textkiln splits on em dashes, en dashes and ellipses, because those marks replace a space in normal typography.

Symbols standing alone. “Salt & pepper”, is “&” a word? Word says yes. Textkiln and most web counters say no: a token needs at least one letter or digit.

URLs and email addresses. Each is usually one word, since there are no spaces inside. A paragraph full of links can therefore look shorter by word count than it is to read.

Footnotes, text boxes and headers. Word processors often let you include or exclude them. Online counters only see what you paste.

Languages without spaces

Chinese, Japanese, Thai, Lao, Khmer and Myanmar don’t put spaces between words. A space-based counter sees an entire Chinese paragraph as one “word”. There are two common fixes:

  1. Count characters instead. Microsoft Word counts each Chinese or Japanese character as one “word”, which is why Chinese assignments usually specify a character count.
  2. Segment with a dictionary. The Unicode word segmentation used by modern browsers (via the ICU library) splits 我爱你 into 我 / 爱 / 你 using dictionaries. Textkiln uses this for spaceless scripts, so a mixed English–Chinese document gets a sensible word count.

Characters are harder than words

“How many characters” has at least four honest answers:

Unit 👍🏽 counts as Who uses it
Grapheme clusters (what you see) 1 Bluesky, Textkiln’s main count, most humans
Code points 2 Python len()
UTF-16 code units 4 JavaScript .length, many web form limits
UTF-8 bytes 8 databases, APIs, file sizes

Family emoji are worse: 👨‍👩‍👧 is five code points joined by zero-width joiners. That’s why a 280-character limit on one platform is not the same as 280 characters on another. X, for instance, counts emoji as two characters and every link as 23.

Sentences

Splitting on full stops miscounts constantly: “Dr. Smith arrived at 9.30 a.m.” is one sentence, not four. Good sentence detection needs a list of abbreviations, rules for initials (“J. K. Rowling”), decimals, ellipses followed by lowercase words, and closing quotation marks. Even then, “I work in the U.S. Army” versus “I live in the U.S. The weather…” needs a guess based on the next word.

Practical advice

  • If a limit matters, use the counter the institution uses. Most universities and publishers mean Microsoft Word’s count.
  • Leave a margin. Aim 1–2% under a hard limit.
  • For social posts, use a platform-aware counter, not a generic one.
  • For databases and APIs, count bytes.

Sources

  • Unicode Standard Annex #29, Unicode Text Segmentation (word, sentence and grapheme boundaries).
  • twitter-text configuration (weighted character counting), published by X on GitHub.
  • Brysbaert, M. (2019). How many words do we read per minute? Journal of Memory and Language, 109.