Methodology
Every counting rule on the site, written out so you can check our arithmetic.
Different tools count differently, which is why a word processor, a CMS and a text tool can disagree about the same paragraph. This page documents exactly what TextTidyTools does, so you can reconcile any difference you see.
What counts as a word
Text is split on runs of whitespace — spaces, tabs and line breaks. A resulting token counts as a word when it contains at least one letter or digit in any script. That means:
don't,e-mail,3.5andcaféare each one word.- A standalone
—or&is not a word, because it has no letter or digit. New Yorkis two words; there is no dictionary lookup for compound names.- A URL such as
https://example.com/pageis one word, since it contains no spaces.
Languages that do not put spaces between words — Chinese, Japanese, Thai — will produce a low word count. Character counts remain accurate for those scripts.
What counts as a character
The character count is the number of UTF-16 code units in the text, which is what almost every platform limit is measured in. For text made of ordinary letters, digits and punctuation, this matches what you see.
Characters outside the Basic Multilingual Plane — most emoji, some rare scripts — take two code units each. A single 👍 therefore adds 2 to the character count, and a family emoji built from several joined symbols can add many more. Tools that need to treat a visible symbol as one unit (Reverse Text, for example) use grapheme segmentation instead, so emoji are never split in half.
Characters without spaces
Every whitespace character is removed before counting: regular spaces, tabs, line breaks, and Unicode spaces such as the non-breaking space (U+00A0). Punctuation is kept.
Byte counts
Bytes are measured after encoding the text as UTF-8. An ASCII letter is 1 byte, most accented Latin and Greek letters are 2, Korean and Chinese characters are 3, and most emoji are 4. Byte size is what matters for database column limits and some API payload caps.
How sentences are detected
A sentence ends at ., !, ? or … when the next non-space character starts something new — a capital letter, a digit, an opening quote or bracket — and the text before the mark is not a known abbreviation.
The abbreviation list covers common titles (Mr., Dr., Prof.), business suffixes (Inc., Ltd.), month and day shortenings, single initials such as J. in a name, and Latin abbreviations including e.g. and i.e. Decimal numbers are protected as well, so 3.5 million stays inside one sentence.
This is a heuristic, not a parser. Unusual abbreviations, ellipses used mid-sentence, and quoted dialogue that ends in a question mark can all shift the count by one or two. Blank lines always close a sentence.
How paragraphs are counted
A paragraph is a block of text separated from its neighbors by at least one blank line. Consecutive single line breaks — the kind produced by pressing Enter once, or by a PDF export — stay inside the same paragraph. Blank lines at the start and end of the text are ignored, and a paragraph made only of whitespace is not counted.
Lines
A line is a run of text between line breaks. Windows line endings (\r\n) and old Mac endings (\r) are normalized to \n before counting, so a file exported from Notepad and one exported from a Mac editor produce the same number. Empty text is 0 lines; text with no line break at all is 1 line.
Reading time
Reading time is the word count divided by a words-per-minute rate, expressed in minutes and seconds. The default rate is 238 words per minute, which reflects published research averages for silent reading of English prose on screen. Reading speed varies widely between individuals and with the difficulty of the material, so the estimate is a planning aid, not a measurement of you.
The calculator does not add time for images, tables, code blocks or footnotes, and it does not slow down for technical vocabulary. If your content is dense, budget more time than the estimate suggests.
Speaking time
Speaking time uses the same arithmetic with slower rates, because speech is slower than reading. The presets are 100 words per minute for a deliberate, slow delivery, 130 for conversational speech, 150 for an average presentation pace and 180 for a fast delivery. Pauses, audience laughter, questions and slide transitions are not included — for a live talk, budget roughly 10 to 20 percent on top.
Keyword density
Density is the number of times a term appears divided by the number of term slots of the same length in the text, shown as a percentage. For single words, the denominator is the total word count. For a two-word phrase, it is the number of overlapping two-word windows, which is one less than the word count. Using the matching denominator keeps phrase percentages comparable to single-word percentages.
Words are lowercased and stripped of leading and trailing punctuation before counting, so Writing, and writing are the same term. There is no stemming: write, writes and writing are counted separately. The optional stop word filter uses a standard English list of function words, shown in full on the tool page.
Unicode limitations
Case conversion uses the browser's own Unicode case mapping, which handles most languages correctly but cannot resolve context-dependent cases such as the Turkish dotless i without knowing the language of the text. Sorting uses your browser's locale-aware collator with numeric ordering enabled, so item2 sorts before item10.
Where a tool must treat a visible character as a single unit, it uses Intl.Segmenter when the browser provides it and falls back to code point splitting otherwise. The fallback keeps surrogate pairs intact but can separate a base emoji from its modifier.
Rounding
Averages are shown to one or two decimal places. Durations are rounded to the nearest second, and the short "x min read" label rounds to the nearest minute with a minimum of one. Percentages in the keyword tools are shown to two decimals.