Keyword cannibalization is when two or more pages on your site rank for the same query and end up competing with each other. Google has to pick one, often serves the wrong one, and your aggregate CTR drops because neither page becomes the unambiguous best answer.
How to spot it
Open your Search Console Pages-by-Query report (or export it and join in a spreadsheet). For each query, count how many distinct URLs from your site have at least 50 impressions in the last 28 days. Anything with two or more URLs is a cannibalization candidate.
Common patterns:
- Old + new blog posts: you wrote a 2021 piece on a topic and a 2024 piece on the same topic, never decided which is canonical.
- Category pages vs product pages:
/shoes/runningand/shoes/running/road-runningboth targeting "road running shoes." - Faceted navigation:
/shoes?type=runningand/shoes/runningas separate URLs. - Pagination: page 2-N of a paginated listing competing with page 1 for the same query.
How to resolve it
For each cannibalised query, decide which URL should rank — usually the one that:
- Has the most relevant content
- Already has the most clicks/backlinks
- Best matches the search intent of the query
Then pick the right fix for the situation:
| Situation | Fix |
|---|---|
| Two equally good pages on same topic | Merge into one; 301-redirect the loser |
| Different intents accidentally targeting same query | Rewrite titles + H1s to disambiguate |
| Paginated listings | Add canonical from page 2-N to page 1 |
| Filter/sort URLs | Canonical all variants to the clean URL |
Brand variants (/about vs /about-us) | 301 to the canonical version |
Impact
In my experience auditing client sites, resolving 5-10 cannibalization conflicts usually recovers 20-40% of organic traffic. It's one of the highest-leverage SEO activities and most sites never do it because the Search Console UI hides it (the dashboard shows the single best-performing page per query, not the conflict).
The Report Builder surfaces cannibalization candidates from your GSC export automatically.