Keyword Density

See which terms and phrases a piece of writing actually leans on, and how often.

Runs on your deviceTextWorkingNo account needed

What this tool does

Keyword Density splits your text into words and then counts every one-, two- and three-word run inside it. A word here is letters and digits with internal apostrophes and hyphens, so don't and search-engine each stay in one piece. Runs are collected inside segments that end at a full stop, question or exclamation mark, semicolon, colon, line break, quotation mark or bracket, which is why no phrase is ever stitched together from the end of one sentence and the start of the next.

Density is the share of the phrases of that length, not the share of the whole document. A single word's figure is its count divided by every word in the text; a two-word phrase is divided by every two-word window, of which there are fewer. Those denominators keep counting the common words even when you have hidden them, so turning Ignore common words on changes which rows you are shown without inflating the percentage beside them.

Rows are ranked by raw count, and all three phrase lengths share one table. Single words nearly always out-count phrases, so the default twenty-five rows can fill before a useful three-word phrase gets in — raise Rows to show, which goes to 500, or set Phrase length to two or three words to read those on their own. Minimum occurrences starts at two, which quietly removes the long tail of terms that appear once.

Three limits are worth knowing before you trust the table. Nothing is stemmed, so keyword, keywords and keyword's are three separate rows you have to add up yourself. The common-word list is English only, so on French or German copy that filter has almost nothing to remove and the top of the table fills with articles and prepositions. And there is no correct percentage to aim at: search engines stopped rewarding a density target a long time ago, and the useful reading of this table is repetition you did not intend, not a number to hit. The counting happens in this browser tab, so the draft you paste is not sent anywhere.

How to use it

  1. Paste the copy. Drop in the page text, article or draft you want measured. Load sample fills the box with deliberately repetitive local-SEO copy if you would rather see the shape of the output first.
  2. Choose the phrase length. One, two and three words together, or a single length on its own when you want phrases ranked without single words crowding them out of the table.
  3. Decide what counts as a term. Leave Ignore common words on to drop the, and, of and any phrase that starts or ends with one. Case sensitive keeps Apple and apple apart; with it off, terms are listed in lower case.
  4. Set the thresholds and read the table. Minimum occurrences hides one-off terms, and Rows to show caps the list. Each row gives the term, its length in words, how many times it occurred and its density.

Processing & privacy

Runs on your device. Your file is processed directly in this browser.

Common use cases

Editing repetition out of a draft

A word used eleven times in nine hundred rises straight to the top of the table, which is quicker than rereading the whole thing to find what grates.

Checking a page against its brief

If the phrase the page is supposed to be about never reaches the ranked list, the copy is about something else and no amount of tweaking the title will fix that.

Reading a page that already ranks

Paste its visible text and the term frequency table shows which phrases it genuinely repeats, rather than the ones you assumed from skimming it.

Spotting boilerplate in bulk copy

Product and listing descriptions written from a template repeat the same stock wording, and the two- and three-word rows put that on show immediately.

Questions

Is the copy I paste uploaded anywhere?
No. The tokenising, counting and ranking all happen in this browser tab, so an unpublished article, a client's copy or an internal document stays on your machine. Nothing is transmitted or stored, and the tool still works with the network disconnected.
What keyword density should I be aiming for?
There is no figure worth chasing. The old advice about hitting a percentage describes search engines as they behaved two decades ago, and repeating a phrase to reach a figure now reads badly to people and buys nothing. Treat a term sitting far above the rest as a prompt to check whether the repetition was deliberate.
Can I compare a two-word density with a single word's?
No, because the two are measured against different totals. A single word is divided by the whole word count; a two-word phrase is divided by the number of two-word windows, which is smaller by one for every segment. The same count therefore scores slightly higher as a phrase than as a word — in the sample copy, local seo reads 10.00% against seo's 9.09% on four occurrences each. Phrase rows usually sit below word rows only because phrases repeat less often, not because of the arithmetic. Compare rows of the same length.
Does it treat plurals and word forms as the same term?
No. There is no stemming or lemmatising, so run, runs and running are counted separately, as are British and American spellings of the same word. Add the rows together yourself when you want the combined figure.
Why is a phrase I can see in my text missing from the table?
Usually one of four reasons: it occurs fewer times than Minimum occurrences allows; it starts or ends with a common word while that filter is on; it straddles a sentence, colon, line break or bracket, which the segmenting will not let a phrase cross; or it was counted but fell below the Rows to show cutoff, because higher-count single words take the places above it.
Is there a limit on phrase length or text size?
Phrases stop at three words — there is no four-word option. Text size is limited only by your device, since everything is held in memory; a long report is fine, and something book-length will make the tab work for it.

Related tools