How to measure the density of a keyword on a live page

Enter a page address and a keyword or phrase. The server fetches that page once, extracts its visible text and reports how often the keyword appears and what share of the text it covers.

The text is read the way a browser shows it: tags, scripts and styles are removed and HTML entities are decoded, so phrases with spaces and accented or non-Latin words are counted as written. A failed fetch says why instead of showing zeros.

  1. Paste a page address; a bare domain such as example.com/page is accepted and https:// is assumed.
  2. Type the keyword or phrase to count; matching ignores letter case.
  3. Press Check density. The server fetches the page and the table fills with five rows.
  4. Read the rows: visible text length, keyword length, occurrences, characters covered by the keyword, and the resulting percentage.
  5. If the address cannot be fetched, the page explains the reason: invalid address, private or internal address, timeout, HTTP error, or a page without readable text.

What the numbers count, how matching works, and what the result cannot tell you

What the numbers count

Text length is the number of visible characters after tags are removed, HTML entities are decoded and runs of whitespace are collapsed to a single space; the whitespace itself is not counted, so indentation and markup never inflate the total. Script, style, noscript, template and head content is excluded.

Density is the share of that text the keyword occupies: keyword length x occurrences / visible text length x 100, rounded to one decimal. A seven-character keyword found four times in 12,000 visible characters is 0.2%.

How matching works

Matching is case-insensitive and counts non-overlapping occurrences of the exact string, so "SEO" and "seo" are the same keyword and a phrase keeps working whether it sits on one line or is split across lines. It is substring matching: "art" is also found inside "start". There is no stemming, no synonym list and no word-boundary rule, and Chinese, Japanese or Korean text needs no spaces to match.

The whole visible page is searched, navigation and footer included, because that is the text a crawler reads at that URL. Only the single page you entered is counted; the same phrase on other pages of the site is not aggregated here.

What the result cannot tell you

Keyword density is a descriptive statistic, not a ranking factor. Google has never published a recommended percentage, no threshold makes a page optimised on its own, and a high number is not automatically harmful. Compare your own pages with each other instead of chasing a range.

Only that one HTML response is measured: images, alt attributes, video, PDF files, content behind a login and content rendered later by client-side JavaScript are not included. Each check makes the server fetch the page again, checks are rate limited per connection, and the result describes the page as it was at that moment.

Recent tools: