Keyword Density Calculator

Keyword density calculator: measure keyword frequency and density percentages in any text to keep your SEO copy natural. Free, private, in-browser, no signup.

Client-side only Nothing stored No account needed
Last verified July 2026

This tool runs locally in your browser.

Output will appear here.
Ask an AI to explain this result
Share this result

Results are estimates based on your input only; entered values and result contents are not stored by BoringToolsKit.

Your inputs and results stay in this browser. This page may send privacy-bounded aggregate interaction events described in Privacy; it does not send your entered values or result contents.

Use this result

Share the current inputs or ask ChatGPT to explain the calculation in context.

More options
Report a calculation issue
Direct answer

What does this tool show?

Keyword density calculator: measure keyword frequency and density percentages in any text to keep your SEO copy natural. Free, private, in-browser, no signup.

  • Density is a diagnostic, not a target: a page written for readers lands naturally between 0.5% and 2% for its main term.
  • The tool counts exact phrase matches; variants and synonyms do not register, so read the number alongside the page itself.

When this tool earns its keep

Use it when you need checking term frequency as a share of page copy before publishing — and you need it repeatedly or once, with the result ready to copy. Pair it with its related tools below when the output feeds the next step.

Formula & evidence

How this calculator works

Reviewed 2026-09-20 · BoringToolsKit Editorial Team

Formula

Density % = matching words / total words x 100, where both sides are lowercased and non-alphanumeric characters stripped before comparing.

Site methodology

This page does not cite an external source yet. The link above documents how we build and check calculators; it is our own process, not third-party validation. Treat the inputs and results as editable estimates.

Assumptions to verify

  • Input format is assumed clean; malformed input is reported rather than guessed at.
  • Output is computed client-side and stays in your browser.

Frequently asked questions

Is anything sent to a server?

No. The transform runs in your browser; nothing you paste leaves the page.

What is the honest limitation?

It is mechanical, not judgmental: the tool guarantees format correctness, not fitness for your context — skim the output before shipping it.

Cite this tool

BoringToolsKit. “Keyword Density Calculator.” boringtoolskit.com/keyword-density-calculator/ (reviewed 2026-09-20). Free to reference in articles, syllabi, and answer posts with a link.

Privacy: Inputs and results stay in this browser. Results are estimates based on your input only; nothing you enter is stored by BoringToolsKit.

A worked example: 2% density, step by step

Suppose you paste a 250-word product description for a coffee grinder and set the keyword to espresso. The calculator splits the text on whitespace, giving exactly 250 tokens. It then normalizes every token to lowercase and strips punctuation, so Espresso, espresso, and espresso: (with a trailing colon) all match, but Espresso's becomes espresso (possessive marks are stripped too) and still counts. Say the word espresso appears 5 times across those 250 tokens.

The arithmetic is: count divided by total words, times 100. That is 5 / 250 = 0.02, and 0.02 x 100 = 2.0%, which the tool displays to one decimal place. If you edited two mentions out, the denominator stays 250 only if you remove nothing else; removing 10 words as well gives 3 / 240 = 0.0125, or 1.3% after rounding. Notice the trap: cutting words you wrote around the keyword can raise density even when you delete a mention. Cutting from 250 to 200 words while keeping all 5 mentions moves you from 2.0% to 5 / 200 x 100 = 2.5% without adding a single keyword. Rerun the number after every trim, not just after every addition.

Boundary cases the percentage cannot tell you about

A result of 0.0% is not always a mistake. If your text uses variants the tool does not conflate, they will not count: grinders will never match the keyword grinder because the s survives normalization, and UK spellings like optimise will not match optimise typed as optimize. If you need variants grouped, search for the shortest shared stem or run the tool once per variant and add the counts yourself. Note the tool counts whole-token matches only, so the keyword inside a longer word (e.g. espresso inside espressoshot) does not count.

There is no negative or fractional input to worry about, since density is a count ratio, but the cap side matters. At 3% and above you are in territory most style guides call stuffing: in a 200-word paragraph that is just 6 mentions. A 5% result means 1 in every 20 words is the keyword, which reads badly to humans before it trips anything algorithmic. Below about 0.5% in a short text, a single mention can swing the number by a full point, so treat sub-1% figures on passages under 300 words as noisy. The tool refuses to run with an empty keyword or empty text field, and a text made only of whitespace yields zero words, so it will not divide by zero.