Word Counter & Text Analyzer

Count words, characters, and analyze text content

Words0
Characters0
Sentences0

Input Text

Advanced options

Text Statistics

Words0
Characters0
Characters (no spaces)0
Sentences0
Paragraphs0
Lines0
Unique Words0
Avg. Word Length0
Avg. Sentence Length (words)0
Reading Time
Speaking Time

Word Counter & Text Analyzer

Count words, characters, and analyze text content

Features

  • Words counted via Unicode-aware regex (\p{L}\p{M}\p{Pd}'\u2019) so accented characters and hyphenated words count correctly across English, Turkish, German, French, Russian, Ukrainian, etc.
  • Live character counts including and excluding whitespace, paragraph count by blank-line separation, line count, and sentence count via terminal-punctuation split
  • Unique word count with optional case-sensitivity toggle — useful for vocabulary analysis or detecting capitalization inconsistencies
  • Top-10 word frequency table with per-locale stop-word filtering — common articles, prepositions, and pronouns in EN, ES, FR, DE, TR, RU, UK, PT, NL, SV are suppressed when the toggle is on
  • Average word length (characters) and average sentence length (words) for prose-rhythm analysis — useful for matching tone to target audience
  • Reading time at 200 wpm (silent reading) and speaking time at 130 wpm (oral delivery) — heuristic constants from publishing-industry averages
  • Copy Stats button writes all metrics to the clipboard as labeled lines (translated per active locale) for sharing in reports or commit messages
  • Pure client-side: tokenization, counting, and frequency analysis run synchronously in the browser. No text leaves the page, works offline once cached

How to use

  1. Paste or type your text into the input area; counts update live as you type.
  2. Toggle Include numbers as words if numeric tokens (4096, 2024, etc.) should add to the word count.
  3. Toggle Exclude stop words to filter common pronouns/articles/prepositions out of the top-word frequency table.
  4. Toggle Case sensitive to control whether 'Word' and 'word' count as distinct unique words and frequency entries.
  5. Read the metrics: words, characters, characters-no-spaces, sentences, paragraphs, lines, unique words, average word length, average sentence length, reading time, speaking time.
  6. Click Copy Stats to grab the entire metrics block as plain text, ready to paste into a report or pull-request description.

Tips & Best Practices

  • For SEO and academic writing where reading time matters, use the 200-wpm number as a planning baseline; trim or expand to hit a target.
  • When writing for ESL audiences, target an average sentence length under 15 words and average word length under 5 characters for accessibility.
  • Use Top Words with stop words excluded to find unintended repetition — if "really" or "very" tops the list, your prose is being weakened.
  • Toggle case-sensitive on when checking design copy where "Login" vs "login" matters; off for prose analysis where it doesn't.
  • Pair with Lorem Ipsum Generator: generate placeholder text there, paste here to verify the exact word count before dropping into a strictly-bounded layout.

FAQ

How is a word counted?

A word is a Unicode letter sequence: starts with a letter (any script — Latin, Cyrillic, Greek, CJK, Arabic, etc.), continues with letters, combining marks, hyphens, apostrophes, or the curly apostrophe ’. With "include numbers" off, pure digit sequences like "2024" don't count; with it on, they do. The regex uses Unicode property escapes (\p{L}, \p{M}, \p{Pd}), so accented characters in any language are handled identically.

Why is my sentence count different from what I expected?

Sentences are split on terminal punctuation followed by whitespace and a starting letter or digit: . ! ? … followed by space + capital letter. Abbreviations like "Dr." or "U.S.A." can cause over-counting; embedded periods like "google.com" inside running text might too. For precise sentence-boundary detection (NLP-grade), use a dedicated tokenizer; this tool prioritises speed and reasonable accuracy for human reading.

Why are some short common words missing from Top Words?

When the "Exclude stop words" toggle is on, the most common articles, prepositions, conjunctions, and pronouns for the active interface language are filtered. The lists cover the top 30-40 words per language; less common closed-class words are not filtered. Toggle off if you want raw frequency including stop words.

How accurate is the reading time?

Reading time uses 200 words per minute (silent reading average for adults reading prose) and speaking time uses 130 wpm (conversational delivery). These are publishing-industry heuristics — fast readers do 300+ wpm, slow technical reading drops to 100. Treat the numbers as ballpark estimates, not commitments.

Does it count words in any language?

Yes. The tokenizer uses Unicode property escapes so any letter from any script counts — Latin (English, Spanish, French, German), Cyrillic (Russian, Ukrainian), Greek, CJK (Chinese, Japanese, Korean, but see caveat), Arabic, Hebrew, Devanagari (Hindi), etc. Caveat: Chinese and Japanese don't use whitespace word boundaries, so the "word count" for those languages is the character count of CJK characters — not the same as the linguistic word count.

Is anything sent to a server?

No. The text stays in your browser; tokenization, counting, top-word frequency, and stop-word filtering all run synchronously in the same JavaScript context as the page. DevTools Network shows no requests when you type.

Why doesn't paragraph count match my markdown source?

Paragraphs are detected by blank lines (two or more consecutive newlines). Markdown sometimes treats single-newline-separated lines as separate paragraphs; this tool follows the typographic convention. If you pasted markdown with single-newline separation, the count will be lower than the markdown rendering.

Can I save my settings between sessions?

Not yet. The three toggles (numbers-as-words, exclude-stop-words, case-sensitive) reset each visit. If persisting them across sessions is a regular need, paste your text into a draft (Notion, Obsidian, etc.) that supports the same metrics natively.