Free · No sign-up · Works without any API key

See what the top 3 cover — and your page doesn't

Score your page's semantic relevance for a keyword against the three pages that outrank you, then get the exact entities, terms and subtopics you're missing.

0 of 3
1
2
3
SERP auto-fill off — paste the top 3 yourself
AI action plan off — scoring and gaps still run

Ctrl+Enter to analyze · Alt+R to reset

Stop guessing why the top 3 outrank you

A real relevance score

Every page becomes a TF-IDF vector of its unigrams, bigrams and trigrams. Your similarity to the ranking pages is then measured against their similarity to each other, so 100 means you sit as close to the top set as they sit to one another — a yardstick a raw cosine number can't give you. Deterministic and repeatable, with the underlying figures shown.

Keyword coverage, weighted

Your keyword is scored where it actually counts: title, H1, H2s, meta description, the first 100 words, URL slug and body density — each weighted separately, and every one compared against the top 3 median so you can see which placement you're short on.

Gaps by consensus, not noise

A term is only reported as a gap when at least two of the three ranking pages use it and your page barely does. That consensus test filters out one competitor's brand names and pet phrases, leaving the vocabulary the topic genuinely demands.

Subtopic gaps from headings

Competitor H2s and H3s are pulled out and matched against your own heading set. What's left is a plain list of the sections they wrote and you didn't — the fastest outline for the next revision of your page.

Structural comparison

Word count, subheading depth, schema.org types, external links, keyword density and images with alt text all sit side by side with the top 3 in one table. Anything meaningfully behind — plus title, meta description and keyword-placement problems — becomes a severity-ranked entry in What to fix first.

Optional AI, never required

Everything above runs with no key. Add your own free Gemini or Mistral key and the tool also types each missing entity with Google's NLP categories and writes a prioritised action plan in plain English. Add a Serper or ScaleSERP key and the top 3 fill themselves in.

How it works

  1. 1

    Enter the keyword and your page

    Type the keyword you're trying to rank for and paste the URL of the page you want to fix. Both are required — the keyword decides what "relevant" means for this run.

  2. 2

    Add the top 3 that outrank you

    Search the keyword in incognito and paste the first three organic results, or connect a SERP key and hit Auto-fill top 3. Results on your own domain are skipped automatically.

  3. 3

    Read the gap report

    You get a relevance score, a metric-by-metric comparison table, the missing entities ranked by priority, the subtopics they cover, and a checklist of what to fix first. Copy it or export CSV.

Tips & detailed help

Target keyword

One keyword per run — the head term the page is built around. It drives keyword coverage scoring and the priority weighting of every gap, so a vague keyword gives vague results. If a page targets a cluster, run the head term first, then re-run for the most valuable secondary term and compare the two reports.

Your page URL

Use the live, indexable URL — not a staging or preview link, which usually blocks the fetch. If your page isn't published yet, put any placeholder URL in, let the fetch fail, and paste the draft HTML or plain text into the box that appears. The analysis is identical either way.

Open in Google

Opens your keyword in a Google search in a new tab so you can copy the top 3 organic URLs without retyping. It does not read the results — your browser does the searching, which is why the SERP you copy is the real one, personalisation and all. Use an incognito window for a cleaner read.

Add a page

Adds a fourth or fifth competitor row, up to five. The consensus threshold scales with the count — with 3 pages a term needs 2 of them, with 5 it needs 3. More pages means a steadier centroid but blurrier gaps, so stay at three unless the SERP is unusually mixed.

When a fetch fails

Some sites block server-side fetches outright. When that happens the tool doesn't fail the run — it lists the URLs it couldn't read and gives each one a paste box. Open the page, copy the article text (or view-source and copy the HTML), paste it in, and press Analyze with pasted content. HTML is preferred because headings and schema survive.

Reading the priority column

Priority multiplies four things: how many ranking pages use the term, how heavily they use it, how far behind your own usage is, and a shape bonus — two-word noun phrases and capitalised proper nouns score above bare single words. So a phrase two competitors lean on beats a generic word all three mention once. Work top-down; the first ten rows are usually most of the win.

SERP auto-fill

Off by default. Connect Serper.dev or ScaleSERP with your own key and set country and language, then Auto-fill top 3 pulls the top organic URLs for your keyword. Only these two are offered because they permit browser-side calls; SerpApi and DataForSEO block them and would need a server.

AI action plan

Off by default, and the scoring never depends on it. Connect a free Gemini or Mistral key and Write the plan sends the keyword, your headings and the computed gap list to that provider, which types the entities and returns a ranked plan. My models lists exactly the models your key can call, which is the fix for a "model not found" error.

Key storage

Keys are stored per provider. Remember on this device checked puts the key in localStorage so it survives a restart; unchecked uses sessionStorage, wiped when the browser closes. Toggling it migrates any saved key immediately. Forget deletes it from both stores.

Copy report & Export CSV

Copy report puts the whole thing — both scores, the fix list, up to 60 gaps and every subtopic — on your clipboard as plain text for a doc or ticket. Export CSV writes one row per gap with its counts and priority, then the subtopic gaps below. Copy selected copies just the terms you've ticked, one per line, ready to hand to a writer.

Saved reports

After a run, name it and press Save to keep it in this browser (up to 20). Clicking a saved report puts its keyword and all its URLs back into the form and copies the full saved text to your clipboard — so you can re-run the same comparison weeks later and see whether the score moved. Nothing is uploaded and nothing syncs between devices.

What leaves your browser

Being exact: the URLs you analyse go to SerpHammer's fetch proxy, because a browser cannot read another domain's HTML. The proxy sets Cache-Control: no-store and keeps nothing. Your API keys go only to the provider you chose. There is no account, no analytics and no tracking, and all scoring happens on your own machine.

Frequently asked questions

Do I need an API key to use this tool?

No. The relevance scoring, entity and term gaps, subtopic gaps and structural comparison all run in your browser with no key at all — you just paste your URL and the three competitor URLs. Two optional extras do need a key you bring yourself: a SERP API key to auto-fill the top 3 URLs from the keyword, and a Gemini or Mistral key to write the AI action plan. Both are off by default and the tool works fully without them.

How is the semantic relevance score calculated?

Every page is split into unigrams, bigrams and trigrams, stopwords are dropped, and each page becomes a TF-IDF weighted vector. The tool then measures your average cosine similarity to the ranking pages, and divides it by their average cosine similarity to each other. That peer baseline is the point: raw cosine between two real pages on the same topic sits around 0.3 to 0.6, so printing it directly would tell everyone they are 40% relevant. A score of 100 means your page sits as close to the top set as they sit to one another. It is a deterministic measurement, not an AI guess, so the same inputs always produce the same score — and the raw numbers behind it are shown under the dial.

Why does the tool need to fetch the competitor pages?

To compare content it has to read the content. Browsers cannot read another domain's HTML directly because of CORS, so each URL is fetched through SerpHammer's own Cloudflare Worker proxy, which requests the page server-side with normal browser headers and returns the HTML. Nothing is stored — the proxy sends Cache-Control: no-store and keeps no logs of your URLs. If a page blocks the fetch, the tool shows a paste box so you can drop the HTML or text in by hand and still get a full analysis.

Where do the top 3 URLs come from?

By default you paste them — search your keyword in an incognito window and copy the first three organic results. That is the most accurate method because you see exactly the SERP your audience sees. If you have a Serper.dev or ScaleSERP key, connect it under SERP auto-fill and the tool will pull the top 3 organic URLs for your keyword, country and language automatically, skipping any result on your own domain.

What counts as an entity here, and how is that different from a keyword?

A keyword is a string you want to rank for. An entity is a thing the page is about — a brand, product, person, place or standard — that search engines recognise and connect to other things. The gap list contains every missing term, and a row is tagged entity when the ranking pages consistently write it capitalised away from the start of a sentence, which is the reliable signal for a proper noun. Untagged rows are ordinary topic vocabulary and matter just as much. If you connect an AI key, the tagged rows are also typed using Google's Natural Language categories such as ORGANIZATION, PERSON, LOCATION, CONSUMER_GOOD and EVENT.

Does my data or my API key ever reach SerpHammer?

Your API keys never leave your browser except to go straight to the provider you chose over HTTPS, and the page's Content-Security-Policy blocks them from being sent anywhere else. The URLs you analyse do pass through SerpHammer's fetch proxy, because that is the only way to read a cross-origin page — that is the one thing this tool sends out, and it is stated here rather than buried. There is no account, no analytics and no tracking, and your settings and saved reports stay in this browser's local storage.

Can I analyse more than three competitors?

The tool is built around the top 3 because that is where the ranking signal is clearest and the consensus test — a term counts as a gap when at least two of the three use it — stays meaningful. You can add up to five competitor URLs if you want a wider read; the consensus threshold scales with the number of pages you add. Beyond that the centroid starts averaging away the very differences you are looking for.