There is no single universal word-count rule
Plain-text counters must decide where words begin and end. ToolBullet uses Unicode-aware word segmentation where Intl.Segmenter is available, with a Unicode regular-expression fallback. It counts word-like letter and number segments. Other editors may treat URLs, hyphens, apostrophes, footnotes, headers or hidden text differently.
Characters are not the same as JavaScript string length
The ToolBullet Word Counter and Character Counter count extended grapheme clusters where supported. This better matches visible characters such as many emoji and letter-plus-combining-mark sequences. A fallback counts Unicode code points, so rare sequences may differ in older browsers.
Sentences, paragraphs and reading time
Sentences use Unicode sentence segmentation with a punctuation fallback. Paragraphs are non-empty blocks separated by one or more blank lines. Reading time divides the word count by 238 words per minute and rounds up; it does not include images, code, audio, video or interaction time.
When a limit is strict
Use the counter specified by the school, publisher, platform or client. Paste only the text that should be counted, then verify the final document in the destination application.
Sources and further reading
Unicode Standard Annex #29 defines default grapheme, word and sentence boundaries. The 238 WPM reference comes from Brysbaert’s 2019 meta-analysis of adult English reading rates. Sources reviewed 23 June 2026.