Most sites with a cannibalisation problem don't know they have one. It shows up as ranking volatility, slow traffic decay, or pages that inexplicably underperform their content quality. Track it back and you usually find two or more URLs competing for the same query and the same user.
What cannibalisation actually is
Keyword cannibalisation happens when two or more pages on your site compete for the same query and the same search intent. The intent piece is what most definitions miss.
Two pages ranking for "best running shoes" isn't automatic cannibalisation if one targets commercial intent (a review roundup) and the other targets transactional (a product category page). Google is comfortable serving different result types for the same string. What you don't want is two pages trying to do the same job for the same searcher.
The clearest test: if a user would be equally satisfied landing on either page, and Google can't confidently tell them apart, you have cannibalisation.
Why it matters
Google's John Mueller has publicly downplayed cannibalisation, saying the algorithm handles it. In a narrow sense he's right. Google will pick a URL to serve. The problem is what happens around that pick.
Authority gets split. Backlinks that should point to one canonical resource get distributed across three or four similar pages. Each one ranks weaker than a single consolidated asset would.
Signals contradict. When two URLs target the same query, internal anchor text, external links, and user behaviour signals spread unevenly. Google has to pick a "winner" with less confidence, and the winner often flips.
URL flux kills CTR. If Google swaps the ranking URL between pages across weeks, you lose the trust effect of a stable listing. Click-through rate drops, dwell signals get noisy, and rankings stay volatile.
You waste crawl on duplicates. For large sites this is real. Near-duplicate pages eat crawl budget that should be going to priority URLs.
Commercial pages get outranked by informational ones. Classic pattern. A blog post ranks for the money keyword and the category page that actually converts sits on page two. Traffic without revenue.
Types of cannibalisation
Worth separating these because the fix is different for each.
True cannibalisation is two pages with effectively identical intent and targeting. A "content marketing agency" homepage hero section and a "content marketing services" service page saying the same thing.
Pseudo-cannibalisation is overlap without duplication. Two pages cover adjacent topics and bleed into each other's territory. A guide on "technical SEO" and a guide on "technical SEO audit" will fight unless the second is scoped tightly to the audit process alone.
SERP cannibalisation happens when Google alternates which of your URLs it serves, usually flipping daily or weekly. You can see this clearly in GSC when average position for a query is stable but the page serving it keeps changing.
Index bloat cannibalisation is the large-site version. Faceted navigation, tag pages, paginated archives, parameter URLs. None of them individually competes hard, but collectively they dilute the topical authority of your core pages.
How to identify it
The quickest method uses Google Search Console directly.
Open Performance and set the date range to the last 3 or 6 months.
Pick a query you care about.
With the query filter still active, switch to the Pages tab.
If more than one URL has significant impressions for that query, you're looking at potential cannibalisation.
The "potential" qualifier matters. A single impression on a secondary URL isn't a problem. What you're hunting for is queries where multiple pages have meaningful impression share, or where the ranking URL has changed over time.
Deeper diagnostic patterns to watch for:
Position fluctuation with stable query volume. If a query's average position is bouncing between 6 and 14 without any obvious algorithm or content change, check which URLs are serving it. A swap is usually the cause.
Impression share split. Two URLs each getting 30-40% of impressions for the same query means Google is undecided. One URL getting 95% and another getting 5% is fine.
Declining clicks on a rising URL. Sometimes a newer page cannibalises an older one. The old page drops, the new one rises, but the combined clicks are lower than the old one had alone. This is the worst outcome and the easiest to miss.
A site: search still has its uses. site:yourdomain.com "exact query phrase" surfaces every page with that phrase, which is a fast sanity check for content-level overlap.
For large sites, crawl data plus embedding similarity is the scalable method. Pull all indexable URLs, generate embeddings for their primary content blocks, cluster them, and look for clusters where multiple URLs sit under the same tight centroid. Anything clustered with cosine similarity above ~0.92 is worth reviewing.
How to fix it
Five options, ordered from most aggressive to least.
1. Consolidate. 301 the weaker URL into the stronger one and merge the content. This is the default move for true cannibalisation. Pick the page with the better backlinks, stronger rankings, or better URL structure, and fold everything into it.
2. Canonicalise. Where you need both URLs to exist (ecommerce filter pages are the classic case), use rel=canonical to point the weaker versions at the primary. Google treats canonicals as hints, not directives, so if other signals disagree with your canonical, Google will override it.
3. Rewrite to differentiate intent. If the pages target genuinely different intents but currently look too similar, fix the content. Sharpen the H1, rewrite the intro, restructure the sections so the commercial page is unmistakably commercial and the guide is unmistakably educational.
4. De-optimise on-page. Sometimes you just need to pull one page off a keyword. Remove the phrase from title, H1, and H2s on the page you don't want ranking. Internally link out to the preferred page using the exact match anchor. Useful when you can't merge and can't noindex.
5. Noindex. Nuclear option for pages that have user utility but shouldn't compete in search. Thin category pages, user-generated tags, duplicate location pages. If the page has valuable backlinks, use noindex, follow at minimum, or better, 301 to preserve the equity.
Internal linking is the underrated lever
Once you've picked your preferred page for a query, internal linking has to back that decision. Exact-match internal anchor text pointing at the canonical URL sends a strong signal. Scattered anchors across multiple URLs for the same phrase does the opposite.
Run through the top 20 pages on your site that link internally to cannibalising URLs and make sure their anchor text points to the page you want to rank. This alone often resolves SERP flux within a few weeks, with no content changes needed.
Common mistakes when fixing it
Merging pages without redirecting. Deleted URLs with backlinks lose everything overnight.
Canonicalising pages with materially different content. Google ignores the canonical and you've achieved nothing.
Noindexing a page that still has valuable backlinks. Use noindex, follow at minimum, or 301 to preserve the equity.
Treating every overlap as cannibalisation. Two pages ranking for different intents of the same query is often fine.
Branded and multi-intent queries
Not all overlap is cannibalisation. For branded queries it's normal for your homepage, an about page, and a few deep pages to all rank. For queries where Google serves a mixed SERP (some informational, some commercial, some local) you can legitimately own more than one result. Don't try to "fix" these. You'll lose coverage.
The test remains the same. If each URL is doing a distinct job for a distinct user intent, leave them alone. If they're fighting over the same job, pick one.
Monitoring after the fix
After consolidation or de-optimisation, give it 4-6 weeks before drawing conclusions. Track:
Combined clicks on the affected query. Should go up or stay flat, not drop.
Position of the preferred URL. Should stabilise.
Impression share consolidating onto the preferred URL. Should approach 100%.
If position is stable and clicks went up, you've done it right. If clicks dropped, something in the merge lost topical relevance and needs revisiting.
The bigger point
Cannibalisation is one of those problems that doesn't show up in a single report. It hides in slow CTR decay, ranking volatility, and the quiet mystery of why a site with strong content doesn't rank as well as it should.
Fix it systematically and the gains compound. Every page you consolidate makes the remaining ones stronger, because the authority, anchor text, and behavioural signals stop leaking across near-duplicates and start reinforcing a smaller number of canonical resources. That's usually where the step-change in rankings com

Daniel Carter