TEXT TOOL

Word Frequency Counter

Count how often each word appears in your text and analyze word frequency, unique words, percentages, and more directly in your browser.

πŸ”’ Your text is analyzed locally in your browser. Nothing is uploaded.
0 characters
Start typing or paste text to begin.

Reuse these words in a regex

Filter or extract specific patterns with the Regex Tester & Debugger.

Convert extracted data

Turn a word list or metadata into JSON, CSV, YAML, or SQL with the Universal Data Transformer.

Compare two word lists

Diff two exports field-by-field with JSON Diff.

Encode for transport

Convert a report to Base64 with the Base64 Encoder & Decoder.

What is a word frequency counter?

A word frequency counter is a text-analysis tool that counts how many times each distinct word appears in a piece of text. Given a paragraph, an article, a chat log, or a whole book, it produces a sorted list of every word with its occurrence count. Words that appear more often rank higher; words that appear rarely (or only once) sit near the bottom.

Example β€” analyze the sentence:

The cat is happy. The cat is sleeping.

Frequency table:

the       β†’ 2
cat       β†’ 2
is        β†’ 2
happy     β†’ 1
sleeping  β†’ 1

That's the entire concept. Everything else β€” case handling, stop words, punctuation, percentage calculations β€” is a refinement on top of that core idea, and this tool exposes those refinements as options rather than hiding them.

Why word frequency matters

Frequency analysis is one of the oldest and most useful techniques in text processing. It's simple enough to run in a browser tab and rich enough to reveal patterns you'd otherwise miss:

  • Writing and editing β€” spot overused words, filler phrases, and unintended repetition.
  • Content review β€” see which topics dominate a draft, and which are barely mentioned.
  • SEO content audits β€” check that your topic is covered (not that a keyword hits some "ideal" percentage β€” it shouldn't).
  • Research β€” pull dominant themes out of interview transcripts, survey responses, and open-ended feedback.
  • Language learning β€” see which vocabulary items are actually frequent in a text.
  • Document comparison β€” analyze two versions of a document to see vocabulary drift.
  • Data cleaning β€” find spelling variants, casing inconsistencies, and stray tokens before downstream processing.
  • Preprocessing for NLP β€” build a vocabulary list before training a classifier or building an index.

Frequency alone does not measure quality. A text can be repetitive and still excellent; a text can be varied and still unclear. Frequency is a diagnostic, not a verdict.

Word frequency vs word count

These two are related but distinct:

  • Word count β€” the total number of word tokens in the text. The sentence "the cat sat on the mat" has 6 words.
  • Word frequency β€” how many times each distinct word appears. In the same sentence, "the" has frequency 2 and every other word has frequency 1.

The sum of all frequencies equals the total word count. If your totals don't match, something is off β€” usually that some tokens were filtered out (numbers, stop words), which this tool handles by keeping the raw totals separate from the filtered frequency view.

What are unique words?

Unique words are the distinct normalized tokens in the text. Given:

The cat. The dog.

With case-insensitive analysis (the default), there are 4 total words and 3 unique words (the, cat, dog). With case-sensitive analysis, "The" and "the" are counted separately, so you'd see 4 unique words instead of 3.

The unique word ratio is unique words divided by total words. It's a rough vocabulary-diversity indicator β€” high values suggest lots of distinct vocabulary, low values suggest repetition. It is not the same thing as formal lexical-diversity measures used in linguistics (like type-token ratio computed over fixed windows), but it's a useful at-a-glance number for editing and content review.

Frequency percentage explained

The percentage shown for each word is:

percentage = (word count / total analyzed words) Γ— 100

Example β€” if a word appears 20 times in a text of 200 analyzed words, the percentage is 20 Γ· 200 Γ— 100 = 10%. The denominator is the number of words that were actually analyzed, not the raw token count before stop-word filtering β€” this keeps percentages summing to 100% across the filtered table.

Percentages are formatted to two decimal places for small values and to one decimal place for larger values, avoiding the common error of showing long floats like "10.000000000000002%".

Stop words β€” what they are and when to remove them

Stop words are extremely common function words β€” the, a, an, and, of, to, in, is β€” that carry little topical meaning on their own. In almost any English text, stop words dominate the frequency table simply because they're used so often, and they can drown out the interesting vocabulary.

When you enable stop-word filtering, those words are excluded from the frequency table so that content words rank higher. The tool keeps the raw totals intact:

  • Total words reflects every recognized token.
  • Unique words reflects every distinct token.
  • Filtered frequency table excludes stop words from ranking.

Stop-word lists are language-specific. This tool ships with an English list, and the setting is off by default so that the basic analysis remains language-neutral.

Case sensitivity

By default, the tool ignores case, so the, The, and THE are counted as the same word. For most frequency analysis this is what you want β€” capitalization in English is often just sentence position, not a semantic difference.

Switch to case-sensitive mode if you need to distinguish proper nouns from common nouns, or analyze casing patterns in a codebase or dataset. In that mode, The and the become separate entries with their own counts.

Case folding is Unicode-aware β€” accented Latin, Greek, Cyrillic, and other scripts are folded using the browser's own locale handling.

Punctuation, apostrophes, and hyphens

Words and punctuation are usually separated for frequency analysis. "Hello, world!" contains the two words Hello and world β€” the comma and exclamation mark are not words. This tool's tokenizer uses Unicode letter and number properties, so punctuation never becomes a separate token and trailing punctuation is stripped from words.

Two special cases need care:

  • Apostrophes. Contractions like don't, can't, and I'm stay as single tokens. Splitting them into don + t would produce garbage. Both straight (') and curly (') apostrophes are supported.
  • Hyphens. Compound words like well-known and state-of-the-art are treated as single tokens by default, matching how they're usually perceived as one unit.

If your use case requires a different convention β€” for example, splitting hyphens for compound-word analysis β€” the tokenizer can be adapted, but the defaults here reflect the most common expectations.

Handling numbers

Numbers can be included or excluded from the frequency count. When included, a token like 25 or 3.14 counts as a word. When excluded, purely numeric tokens are dropped from the frequency table (but remain part of the character count, which always reflects the raw input).

Decimals are preserved as single tokens β€” 3.14 is one token, not 3 and 14. This avoids the common tokenizer bug where decimal numbers get split by the period.

Unicode and non-English text

The tokenizer uses the browser's Intl.Segmenter API where available, which is Unicode-aware and language-aware. It correctly segments:

  • Latin text with accents β€” cafΓ©, naΓ―ve, MΓΌller.
  • Cyrillic, Greek, and Arabic scripts.
  • Indic scripts β€” Devanagari, Bengali, Tamil β€” where word boundaries are well-defined.
  • Mixed-script text.
  • Emoji, which are not classified as words and are skipped.

For CJK text (Chinese, Japanese, Korean), the browser's segmenter does word segmentation where possible, but this is a hard problem in general and results can vary by script and locale. A regex-based fallback is provided for browsers without Intl.Segmenter; it handles most Latin, Cyrillic, and Greek text well, but CJK segmentation in the fallback is character-based rather than word-based.

Text statistics included

Alongside the frequency table, the tool reports:

  • Total words β€” number of tokens recognized.
  • Unique words β€” number of distinct normalized tokens.
  • Characters β€” every character in the text, including spaces and newlines.
  • Characters without spaces β€” the text length minus whitespace.
  • Sentences β€” estimated by counting terminal punctuation (., !, ?) after neutralizing URLs, email addresses, and decimal numbers so their periods don't inflate the count.
  • Paragraphs β€” blocks separated by blank lines.
  • Average word length β€” mean character length of analyzed tokens, computed in characters (not bytes).
  • Reading time β€” estimated at 200 words per minute, a widely used approximation for adult English prose. Actual reading speed varies by content, format, and reader.

Word frequency for SEO

Frequency analysis is useful for SEO content audits, but the metric is descriptive β€” not prescriptive. There is no "correct" keyword density. Search engines rank based on relevance, usefulness, and quality, not on the percentage of a page occupied by a particular word.

What frequency analysis can help with:

  • Confirming a topic is covered β€” if you intended to write about "database indexing" but "index" doesn't appear, something is off.
  • Spotting keyword overuse β€” unnatural repetition is a warning sign, not a ranking factor.
  • Comparing competitors β€” frequency patterns can hint at topical emphasis, but they're a starting point for manual review, not a signal by themselves.

Write for the reader, use frequency analysis as one diagnostic among many, and don't chase percentages.

Word frequency for writing and editing

One of the most practical uses of frequency analysis is finding your own tics as a writer. Running a draft through a frequency counter surfaces:

  • Filler words β€” "just", "really", "basically", "actually" tend to appear more often than you'd expect.
  • Overused verbs and adjectives β€” "important", "various", "significant" often repeat unnecessarily.
  • Repetition of names and nouns β€” sometimes intentional for clarity, sometimes a sign to restructure with pronouns.
  • Unintended technical repetitions β€” the same phrase appearing three times in one paragraph.

Repetition isn't inherently bad β€” deliberate repetition is a legitimate rhetorical tool. The point of frequency analysis is to make repetition visible, so any repetition is a choice rather than an accident.

Word frequency for research

When working with qualitative data β€” interview transcripts, survey free-text responses, meeting notes β€” frequency analysis is a fast way to get an overview. It won't replace careful reading, but it tells you which themes recur most, which participants used specific vocabulary, and which topics deserve a closer look. Combined with a stop-word filter, it exposes topical vocabulary rather than the structural glue of English.

For quantitative work, frequency counts can feed into downstream analysis: building a bag-of-words matrix, identifying candidate features for a classifier, or deduplicating near-identical documents.

Privacy and processing

Everything on this page runs locally in your browser. Your text is read from the textarea, tokenized in memory, and discarded when you clear or close the page. Nothing is uploaded, nothing is logged, and no analytics event contains your input or your results. The tool works offline after the page loads.

Because processing is entirely client-side, there's no server-side word limit β€” you can analyze very large documents, up to the practical memory limits of your browser tab.

Related developer tools

Frequently asked questions

What is a word frequency counter?

A tool that counts how many times each distinct word appears in a body of text, then ranks them from most frequent to least frequent.

How is word frequency calculated?

The text is tokenized into words, each token is normalized (case-folded, punctuation-stripped), and a counter increments for each occurrence of the normalized key. The resulting map is the frequency table.

Does punctuation affect word frequency?

By default, no β€” punctuation is stripped. "Hello, world!" contains the words Hello and world, not Hello, and world!. Apostrophes inside contractions and hyphens inside compounds are preserved as part of the word.

Does the tool distinguish uppercase and lowercase words?

By default, no β€” case is ignored, so "The", "the", and "THE" are all counted as the same word. Switch to case-sensitive mode in the settings if you need them separated.

Can I analyze a long document?

Yes. The tool handles large inputs, up to the practical memory limits of your browser. For very large texts (hundreds of thousands of words), analysis may take a moment but the interface stays responsive thanks to debounced processing and limited table rendering.

Does the tool upload my text?

No. Everything runs locally in your browser. Your text is never sent anywhere, never logged, and never stored.

Can I ignore common words?

Yes. Enable stop-word filtering to exclude common English words like "the", "a", "and", and "of" from the frequency table. Total word counts remain unchanged β€” only the displayed frequency ranking is filtered.

Can I download the frequency results?

Yes. Use the download buttons to export as TXT, CSV, or JSON. The CSV export is formula-injection-safe, and the JSON export includes both settings and statistics.

What's the difference between word count and unique word count?

Word count is the total number of word tokens in the text. Unique word count is the number of distinct words. "The cat. The dog." has 4 words and 3 unique words.

Can word frequency help with SEO?

It can help you audit whether a topic is covered and spot unnatural repetition. It does not define ideal keyword usage β€” there's no correct keyword density, and search engines don't reward percentages.

Does it handle Unicode text?

Yes. Where available, the tool uses Intl.Segmenter for Unicode-aware word segmentation. Accented Latin, Cyrillic, Greek, Arabic, and Indic scripts all work. CJK segmentation depends on the browser's segmenter support.

How is reading time calculated?

Word count divided by 200 words per minute. This is an estimate β€” actual reading speed varies by content type and reader.

Why doesn't the sum of the percentages equal exactly 100%?

Percentages are rounded for display. Summing rounded percentages can produce totals slightly above or below 100%. The underlying counts and calculations are exact.

Count word frequencies now

Paste text and see the frequency table instantly β€” no signup, no upload, all in your browser.