WorkspaceBag of words
Analysis tools

KEYWORD FREQUENCY & ZIPF ANALYSIS

Free Bag of Words SEO analyzer
Compare two texts

Analyze text or a webpage for free: keyword density, word and bigram frequency, editable stop words, and deviations from Zipf’s law.

data is not stored on the server
01

Analyze text or a webpage

0 characters
Expect a compact vocabulary report, tracked-phrase coverage, and a Zipf distribution.
03

Run an analysis to see a short explanation here.

READ THE RESULTS

What the Bag of Words analyzer shows

Paste a draft to see which words dominate it and check specific phrases. Save the result as A, run a revision as B, and compare their vocabulary. Alongside word and bigram counts, you get a fitted Zipf frequency curve.

A Bag of Words model represents a document through its vocabulary and counts. The word table loses sentence order, so two passages can use the same words while making different claims. Read the source before treating a repeated term as a problem.

TRY A SMALL EXAMPLE

See how stop words change the count

Paste Text and data text data, select English, and leave Keep stop words off. The default list removes “and,” leaving four words. “Text” and “data” each occur twice, so each accounts for 50% of the analyzed words.

[text, data, text, data]

The bigrams here come from the filtered tokens. “Text data” appears twice among three two-word windows, a share of 66.67%. One pair came from “text and data,” with “and” removed. Enable Keep stop words to retain the original sequence. The N-gram Analyzer also preserves original word adjacency, even when you filter stop-word rows from its display.

Now add text and data as a tracked phrase. It has one exact occurrence in the original five-word input, or 20% and 200 occurrences per 1,000 words. Unlike the filtered word table, tracked phrases use the tokens before stop-word removal for both the count and denominator.

ZIPF DISTRIBUTION

Use the fitted curve to investigate repetition

Words are ranked by frequency, and the chart fits a curve to this document's vocabulary. Each observed count is compared with the fitted count at that rank. At sensitivity ×2, a word is marked above the model when it occurs more than twice as often as the curve predicts.

Read the passages containing a flagged word. A product name, a technical term, or a repeated navigation label can all stand above the curve for different reasons. When the model expects fewer than one occurrence, the row goes into the sparse tail: there is too little evidence for that comparison.

The exponent describes the fitted distribution. Getting close to 1 does not certify natural writing or search quality, and short texts can produce unstable patterns. Changing the detailed-table setting shows 5–100 terms without changing the curve fit or zone totals, which use the full analyzed vocabulary.

COMPARE A AND B

Check a revision with the same settings

Analyze the original, choose Save as result A, then replace it with the revision and analyze again. A stays in this browser, along with its locked language, stop words, tracked phrases, and other settings. B uses those same rules. To change them, remove A first.

Start with the changes in percentages or occurrences per 1,000 words when A and B differ in length. A raw count can rise while its share falls. Check a changed phrase in the source and decide whether the revision still says what you intended.

Pasted text is calculated in your browser. URL mode sends the public URL to the server for fetching and analysis without retaining the submitted content. A fetched page can include menus and footer text; paste the article body when you need a comparison limited to that material.