Bhinish Dhiman
How to count words and characters, and why two counters give different numbers
Paste the text into a counter that states its rules. A sound count treats “well-known”, “don’t”, “3.14” and a link as one word each, splits Chinese and Japanese into real words rather than whole lines, and counts 👍🏽 as one character, not four. For reading time, 238 words a minute is the measured average for adults reading English non-fiction; reading aloud averages 183.
Two word counters can disagree by ten per cent on the same paragraph, and neither is broken. Each has a rule for what a word is, and most of them never say what it is.
The four places counters split apart
A word, for counting purposes, is whatever the counter’s boundary rule leaves between two boundaries. Three rules are in common use:
- Runs between spaces. Word processors and the
wc -wcommand count this way. “Word—word” with an em dash is 1, and a line of Chinese, which has no spaces, is 1. - Runs of letters and digits. Many web counters split on anything that is not a letter, which makes “don’t” 2 and a web address 5 or 6.
- Unicode word boundaries (UAX #29), which browsers expose as
Intl.Segmenter. Apostrophes inside a word and points inside a number do not split, and scripts written without spaces are divided with a dictionary.
The word counter uses the third rule, then makes two repairs a reader would expect: a single hyphen with no spaces joins its halves, and a link or email address is one word.
| Text | Spaces rule | Letters rule | Unicode rule, as used here |
|---|---|---|---|
| don’t | 1 | 2 | 1 |
| well-known | 1 | 2 | 1 |
| 3.14 | 1 | 2 | 1 |
| https://dsyn.studio/word-counter | 1 | 5 | 1 |
| 我喜欢学习中文 | 1 | 1 | 4 |
| word—word | 1 | 2 | 2 |
None of the columns is wrong. What matters for a submission limit is which rule the person setting the limit uses, and that is nearly always a word processor’s. For long English prose the three rules land within a few words of each other; the gaps open up with hyphenated jargon, links and non-Latin scripts.
Characters are a separate argument
A grapheme is what a reader sees as one character. 👍🏽 is one grapheme but two code points (a thumb and a skin-tone modifier) and four UTF-16 code units, and 🇬🇧 is one grapheme made of two regional-indicator letters. JavaScript’s length reports UTF-16 units, so a counter built on it says 4 for each of those. The word counter counts graphemes and leaves out line breaks.
Platforms then count in their own units, which is why one paragraph has several character counts at once:
| Platform | Limit | How it counts |
|---|---|---|
| X | 280, or 25,000 with Premium | Weighted: Chinese, Japanese, Korean and emoji count 2; any link counts 23 |
| Bluesky | 300 | Graphemes, so an emoji counts 1 |
| Threads | 500 | Characters, with each emoji counted as its UTF-8 bytes |
| SMS | 160 per message | Drops to 70 when any character is outside the GSM 7-bit alphabet |
| Google Ads headline | 30 | Chinese, Japanese and Korean characters count 2 |
| YouTube title | 100 | Characters |
Every figure in that table comes from the platform’s own documentation, and the tool links each one. The often-quoted 160-character meta description is missing because Google sets no limit; it cuts the snippet to fit the screen width.
The SMS trap
GSM 7-bit is the default alphabet for text messages, defined in 3GPP TS 23.038: 128 characters, plus an extension table for a few symbols such as € and square brackets that cost two places each. A message holds 140 octets, which is 160 of those 7-bit characters.
One character outside that alphabet switches the whole message to UCS-2, two bytes per character, and the capacity falls to 70. The usual culprit is a curly apostrophe, which phones insert automatically. A 120-character message containing “we’ll” therefore goes as 2 parts (a long UCS-2 message carries 67 characters per part), and the same message with a straight apostrophe goes as 1. The tool’s SMS row names the character that forced the switch.
Reading and speaking time
Reading time is words divided by a rate. The rate is the part most tools never cite. Marc Brysbaert’s 2019 meta-analysis in the Journal of Memory and Language pooled 190 studies and 18,573 participants and found adults read English non-fiction silently at 238 words a minute, and fiction at 260. Reading aloud, across 77 studies and 5,965 participants, averaged 183.
| Text | Words | Reading at 238 wpm | Speaking at 183 wpm |
|---|---|---|---|
| A 300-word email | 300 | 1 min 16 sec | 1 min 38 sec |
| A 1,200-word article | 1,200 | 5 min 3 sec | 6 min 33 sec |
| A 915-word talk | 915 | 3 min 51 sec | 5 min |
People speaking to a room usually go slower than 183, because they pause. Time yourself reading one page aloud and type your rate into Speaking, wpm.
Count a text with the tool
- Open the word counter and paste into Your text. On a phone, words, characters and reading time stay pinned above the box while you scroll.
- Adjust Reading, wpm and Speaking, wpm if your readers or your pace are not the average.
- Find your platform under Character limits. Each bar says how many are left or over, in that platform’s unit.
- Read Longest sentence, shown beside the average sentence length. It is usually the quickest edit in long prose.
- Tick Include “the”, “and”, “of”… to see function words in Most-used words; leave it off to see the words you lean on.
The text stays in the browser’s own storage so a reload keeps it, and Clear empties the box, with Undo clear beside it until you type again.
Other ways to count
Google Docs shows a count under Tools → Word count, and Microsoft Word shows one in the status bar; both count runs between spaces. On macOS or Linux, wc -w file.txt does the same from a terminal, and wc -m counts characters (code points, so 👍🏽 is 2). For a limit set by a journal or a course, use the count from whatever tool its organisers use.
Checking that nothing is uploaded
Open the browser’s developer tools on the Network tab and type into the box: no request is made. Or disconnect from the network after the page loads; counting carries on.
For changing the capitals in a heading rather than counting it, the case converter shares the same editor, and the guide to title case in APA, Chicago and AP covers its rules.