How to Count Words and Characters: Why Counters Disagree, SMS Limits and Reading Time
The same sentence can have 8, 10 or 12 words, depending on who counts. We tested how browsers split words, counted our own guides in four languages and worked out when an SMS shrinks from 160 to 70 characters.
Limits are everywhere: an essay with at most 1,500 words, a meta description of about 155 characters, an SMS reminder that must fit into one message, a translation quote per word or per line. But counting is less obvious than it seems. We tested how browsers split text into words, counted the ten guides on this website in English, German, Spanish and Persian, and calculated SMS lengths with the rules of the GSM standard. You can check any text with our word counter, which now also shows how many SMS it needs.
What counts as a word?
The simplest rule is the one most people expect: everything between two spaces is a word. Browsers also have a built-in word segmenter (Intl.Segmenter), which follows the Unicode rules for word boundaries and splits text at many punctuation marks. We counted the same sentences both ways:
| Text | Between spaces | Chrome 141 segmenter | Node.js 22 segmenter |
|---|---|---|---|
Don't e-mail the U.S. office before 9:30 a.m. | 8 | 12 | 10 |
Visit https://omid57.eu/en-US/guides today. | 3 | 8 | 8 |
Das E-Mail-Postfach ist voll. | 4 | 6 | 6 |
Die Donaudampfschifffahrtsgesellschaft hat z. B. 1.234,5 Tonnen geladen. | 8 | 8 | 8 |
The segmenters split "e-mail" into two words, a time like 9:30 into two numbers and a web address into up to eight parts. Chrome and Node.js, which both use the V8 engine, did not even agree with each other on the first sentence: Node.js kept "U.S" and "a.m" together, Chrome did not. For a word limit, that is not helpful. Our word counter therefore uses the rule "between spaces, at least one letter or digit", which is also the basic rule of word processors. Only for languages written without spaces between words, such as Chinese, Japanese and Thai, does it ask the browser's segmenter.
German compounds show the other side of the rule: "Donaudampfschifffahrtsgesellschaft" is one word with 34 letters. That is why German texts have fewer but longer words, as our four-language comparison below shows.
Persian: the half-space decides
In Persian, prefixes and plural endings are attached with a half-space, the zero-width non-joiner (ZWNJ, U+200C). The letters stay apart visually, but the word is not broken. If a normal space is typed instead, every counter sees two words:
| Text | Words | Characters (visible) |
|---|---|---|
| «میخواهم کتابها را بخوانم.» (with half-spaces) | 4 | 25 |
| «می خواهم کتاب ها را بخوانم.» (with spaces) | 6 | 27 |
The same sentence therefore has 50% more words when it is typed with spaces instead of half-spaces. If a Persian text has to meet a word limit, check its half-spaces first.
Characters: what you see is not what is stored
Counting characters is just as tricky. What looks like one character on screen can consist of several code points, and JavaScript's simple length counts something different again:
| Character | Visible | JavaScript length | Unicode code points | Counted by X |
|---|---|---|---|---|
| 👍 | 1 | 2 | 1 | 2 |
| 🇩🇪 (flag) | 1 | 4 | 2 | 2 |
| 👨👩👧 (family) | 1 | 8 | 5 | 2 |
Simple counters that use length count the family emoji as eight characters. Our counter counts the characters you actually see (graphemes), so each emoji is one. Platforms have their own rules on top: on X, every emoji counts as two and every link as 23 characters, regardless of its real length.
Many forms and translation agencies also distinguish between characters with and without spaces. Our counter shows both. If a limit does not say which one it means, assume spaces are included.
The same content in four languages
How much longer does a text become when it is translated? We counted the running text and FAQs of the first ten guides on this website in all four languages, using the same rules as our word counter:
| Language | Words | Characters without spaces | Characters per word | Words compared with English | Characters compared with English |
|---|---|---|---|---|---|
| English | 13,736 | 64,748 | 4.71 | – | – |
| German | 13,109 | 74,914 | 5.71 | −4.6% | +15.7% |
| Spanish | 15,031 | 71,834 | 4.78 | +9.4% | +10.9% |
| Persian | 14,512 | 61,148 | 4.21 | +5.6% | −5.6% |
German needed slightly fewer words but almost 16% more characters, because of its long compounds. Spanish needed more of both. Persian needed more words but fewer characters: its words are short, and short vowels are usually not written. In practice, this means: if an English text just fits into a button, a heading or a form field, the German version will often not. Plan about 15 to 20% extra space for German and Spanish.
SMS: 160 or 70 characters?
An SMS has room for 140 bytes. With the 7-bit GSM alphabet defined in 3GPP TS 23.038, that is 160 characters. This alphabet contains the Latin letters, digits and common punctuation, and also ä, ö, ü, ß, é, è, ñ and ç. Some characters, such as the euro sign € and square or curly brackets, are in an extension table and count twice.
If the text contains even one character outside this alphabet, the whole message is sent in Unicode (UCS-2) with two bytes per character: then only 70 characters fit into one SMS. That applies to Persian and Arabic letters, to every emoji and, in the basic alphabet, to the Spanish á, í, ó and ú. Longer messages are split into parts and joined again on the phone; the joining header takes some room, so each part holds 153 GSM characters or 67 Unicode characters. An emoji outside the basic Unicode range takes two of those places.
We calculated the same appointment reminder in all four languages:
| Message | Characters | Encoding | SMS needed |
|---|---|---|---|
| English reminder | 94 | GSM | 1 |
| German version (with "ä" in "Bestätigung") | 107 | GSM | 1 |
| Spanish version with "SÍ" and "llámanos" | 98 | Unicode, because of "Í" | 2 |
| The same Spanish text without accents | 98 | GSM | 1 |
| Persian version | 104 | Unicode | 2 |
| English reminder plus one 🙂 | 96 | Unicode, because of the emoji | 2 |
A single smiley doubled the cost of the English message. The standard also defines a Spanish extension table that contains á, í, ó and ú; whether it is used depends on the phone and the network. Without it, the message falls back to Unicode.
How long does it take to read?
A meta-analysis by Marc Brysbaert (2019) evaluated 190 studies on reading speed with more than 18,000 participants. Adults read English non-fiction silently at an average of 238 words per minute and fiction at 260; most readers are between 175 and 300 words per minute for non-fiction. Reading aloud averaged 183 words per minute.
Our word counter estimates reading time with 220 words per minute, a little below the average, so that slower readers and people reading in a second language are not left behind. For speaking it uses 140 words per minute, a calm pace for a presentation. A ten-minute talk therefore needs about 1,400 words. According to Brysbaert, rates in other languages depend on how many words a language needs to say the same thing, which our comparison above shows can differ by around 10% in either direction.
Common limits at a glance
| What | Limit | Counted in |
|---|---|---|
| SMS, GSM alphabet | 160 per message, 153 per part | characters (€ and brackets count twice) |
| SMS, Unicode (Persian, emoji, á) | 70 per message, 67 per part | UTF-16 units (an emoji counts twice) |
| Post on X | 280 | characters; emoji count as 2, every link as 23 |
| Title tag in Google results | about 50–60 characters before it is cut off | pixels, not characters |
| Meta description in Google results | about 120–155 characters | pixels, not characters |
How titles and descriptions are cut off in search results is explained in our guide how to write a title tag and meta description.
Checklist before you submit a text
- Find out what the limit counts: words, characters with spaces, characters without spaces or SMS.
- Paste the final text into a counter, not a draft with comments or tracked changes.
- For Persian texts, check that prefixes and plural endings are joined with half-spaces.
- For SMS, check the encoding: one emoji or one Persian letter reduces the limit from 160 to 70 characters.
- When a text is translated, plan 15 to 20% extra space for German and Spanish.
- For talks and videos, use the speaking time rather than the reading time.
Tools used in this guide
Frequently asked questions
Why do word counters show different numbers for the same text?
Because they use different rules. Some count everything between spaces, others use the Unicode word boundary rules and split hyphenated words, abbreviations, times and web addresses. In our test the same sentence had 8, 10 or 12 words. Our counter counts everything between spaces that contains a letter or digit as one word.
Does a hyphenated word like "e-mail" count as one word?
In our word counter, yes. Counters that rely on the browser's word segmenter count it as two words.
How many characters fit into one SMS?
160 characters if the text only uses the GSM alphabet, which includes German umlauts. As soon as one character is outside it, for example an emoji, a Persian letter or a Spanish á, only 70 fit. Longer messages are split into parts of 153 or 67 characters.
How are emoji counted?
Our word counter counts each emoji as one character, as you see it. JavaScript's length counts some emoji as up to eight, X counts each emoji as two, and in an SMS an emoji switches the whole message to Unicode.
Does the Persian half-space count as a space?
No. A half-space (ZWNJ) keeps a word together, so «میخواهم» is one word. If it is typed with a normal space, it becomes two words.
Is the text I paste into the word counter uploaded?
No. The word counter runs entirely in your browser. Your text is counted on your device and is not sent anywhere.
Sources and further reading
- ETSI TS 123 038 / 3GPP TS 23.038 – Alphabets and language-specific information (GSM 7-bit alphabet) (www.etsi.org)
- Unicode Standard Annex #29 – Unicode Text Segmentation (word boundaries) (www.unicode.org)
- X Developer Platform: Counting characters (docs.x.com)
- Brysbaert, M. (2019): How many words do we read per minute? A review and meta-analysis of reading rate. Journal of Memory and Language 109 (doi.org)