Free keyword cannibalization checker
- No signup
- Free
- 5 AI runs a day
Keyword cannibalization is when two or more of your own pages compete for the same search. This checker reads a Search Console query and page export, finds the overlaps, and tells you which pairs are worth fixing. Not every overlap is a problem. Ranking number one and number two can be a win.
How to use the keyword cannibalization checker
Export a report that includes Query and Page columns. Search Console’s UI export alone is not enough. Use the Search Analytics API, Looker Studio, or another combined export. Upload the CSV or paste it. Add your domain so brand terms can be excluded. Raise the impression floor if the file is noisy.
Run the local check first. It stays in the browser. Turn on AI explanations when you want clearer intent labels and fix steps for the higher severity pairs. AI runs are limited to five a day. The CSV path does not keep a Search Console archive in the CMS.
Read the verdict, then the pairs marked worth fixing. Export the table when you need a content brief. Use the redirect mapper when a merge needs a 301.
What keyword cannibalization is (and when it is not a problem)
Cannibalization hurts when pages split clicks or swap positions for the same intent. Two pages that both appear for a brand query are often fine. A blog and a service page both chasing “hire X near me” is usually not fine.
I care about commercial or problem-solving queries where one clear page should win. Informational overlap can wait. Brand queries are filtered when you add the domain or extra brand terms, because they inflate the report without telling you what to rewrite.
How this tool decides severity
Queries need enough impressions to matter. Pages need a meaningful share of those impressions. Pairs are scored from the top two pages on each conflicted query. Same intent with a close split is high severity. A blog fighting a service page on a commercial query is high. Parameter or tag URLs lean toward a canonical fix. Different intent or a healthy double listing stays low.
The AI option can re-label intent when URLs alone are unclear. It does not invent Search Console numbers. It only comments on the pairs already found in your file.
| Signal | Typical action | Why |
|---|---|---|
| Same intent, close split | Merge | One page should own the query |
| Same intent, clear leader | Differentiate | Retarget the weaker page |
| Blog vs commercial page | Service primary | Money page should win |
| Parameter or tag URL | Canonical | Thin variant should not compete |
| Different intent or double top listing | Leave | Not every overlap is harm |
How to fix cannibalization
Merge when both pages say the same thing. Keep the stronger URL, move unique points across, then 301 the weaker URL. Differentiate when both pages deserve to live: change the weaker title, H1, and internal links so each page has one job. Make a service page primary when a blog is stealing a commercial query. Use canonical or noindex on parameter junk.
Do not delete a ranked URL without a redirect. Deleting without a home turns a fix into a 404. After you ship, watch the query in Search Console for a few weeks. Recrawl takes time.
Example: blog post outranking a service page
A common pattern is a long guide ranking for a hire or near-me style query while the service page sits behind it. The checker marks that as service-primary when the URLs look like blog versus service and the query looks commercial.
The fix is rarely “delete the guide.” Soften the guide title so it is not a second sales page, link clearly to the service URL, and strengthen the service page with proof and a clear offer. Keep the guide for the informational angle if it still earns visits.
How to prevent it
One primary page per intent. A topical map beats a pile of near-duplicate posts. Before you brief a new article, search your own site and Search Console for the target query. If a page already owns it, update that page or pick a narrower angle.
Internal links should reinforce the winner. Title tags should not all start with the same commercial phrase. Category and tag templates should not compete with real guides. Prevention is cheaper than a merge project after six months of overlap.
- Assign one primary URL before you write
- Exclude brand noise when you review overlaps
- Merge or retarget before you publish a third near-duplicate
- Use redirects when two URLs become one
How I run this on a real content site
I ask for sixteen months of query and page data when the site is large, or three months when it is small and active. Short windows miss seasonal swaps. Very long windows bury the current conflict under old experiments. Pick a window that matches how often you publish.
I exclude brand terms first. Then I sort by impressions on the conflicted pairs. I ignore low severity double listings in the top three unless a client is rewriting those URLs anyway. Attention goes to high severity merges and blog-versus-service fights.
For each high pair I open both URLs. The CSV cannot see thin sections or outdated offers. If the “weaker” page has a unique calculator or case study, I move that block before I redirect. Merges that throw away unique proof waste the redirect.
I write the primary query on a sticky note for the keeper URL. The other page gets a new primary query or a redirect. Without that sentence, editors keep “optimizing” both pages toward the same phrase next sprint.
Internal link reports matter next. If twenty posts still point at the URL you plan to retire, update those links in the same release as the 301. Leaving them for later means the site keeps voting for the wrong page.
I do not use AI explanations as a substitute for reading the pages. I use them when the paths are ambiguous and I want a second phrasing of the fix for a non-SEO stakeholder. Five AI runs a day is enough for that.
After shipping, I watch the shared queries weekly. If the keeper gains impressions and the redirected URL disappears cleanly, the job worked. If both keep swapping, the titles still collide or a third URL entered the set.
Prevention sits in the briefing doc. Every new outline names the page it must not duplicate. If the target query already has a URL with clicks, we update that URL or we narrow the angle until the intent is different.
Ecommerce variants and filtered URLs need the canonical path more than a content merge. This tool will surface parameter junk when it steals share. Fix the template rules so those URLs stop appearing as indexable peers.
When leadership wants every overlap marked as a crisis, I show them a healthy double listing and leave it alone. Credibility comes from refusing fake problems. The verdict line is written that way on purpose.
If you lack a query plus page export, stop and get one. Ranking scrapes without impressions are a poor substitute. This checker is built around Search Console reality, not a guessed keyword list.
Share the exported pair list with whoever owns the CMS so the merge is scheduled, not left in a slide deck.
