Aller au contenu
SearchLens · Blog Essayer

SEO Methods

SEO Cannibalization: How to Identify It Without False Alarms (and Fix It Without Breaking Everything)

Not all duplicates are cannibalization. A pragmatic method to spot real cases, measure the true cost, and fix them without breaking what's already working.

Romain · SearchLens 6 min read
SEO cannibalization — SearchLens detection method

“We have 30 cases of cannibalization” — that sentence is one of the most poorly calibrated in SEO auditing. In 80% of cases, half the reported cases aren’t real ones, and half the real cases are invisible because they’re hiding in long-tail terms nobody has looked at.

This article lays out a useful definition, a detection method that generates few false positives, and a decision framework for fixing issues without degrading what’s already working.

A definition that eliminates 50% of false positives

Cannibalization is not “two URLs ranking on the same query.” It is:

Two or more URLs ranking on the same query with comparable intent, where the average position or CTR of at least one is degraded by the presence of the other.

Both criteria are required:

  • Comparable intent: “seo cannibalization” and “seo cannibalization tools” are close but not identical. A methodology page and a comparison page can coexist just fine.
  • Measurable degradation: if two URLs rank on the same query but one is stable at position 3 and the other at position 50, there’s no cannibalization — just two indexed URLs.

The 3 cannibalization profiles

Profile 1 — The true editorial duplicate

Two pages that answer the same question from the same angle. Typically: an article “What is SEO” from 2021 and another “SEO Definition” from 2024. Google constantly wavers and displays one or the other depending on the query, average position plateaus at 8-12, CTR stays low.

Signal: the two URLs alternate on the same query week after week. Combined impressions are high, combined clicks are low.

Profile 2 — The landing page / article conflict

A commercial page (product landing, category) and a content page (blog article, guide) targeting the same term. The intent isn’t exactly the same, but Google can’t decide, and the displayed result depends on the query context.

Signal: one URL has a better CTR but a worse position, the other the reverse. You’re losing on both fronts.

Profile 3 — The unintentional long tail

Filtered pages (e-commerce facets, tag pages) that accidentally rank on queries targeted by the main page. Often the most common profile, and the least visible because each individual case drives very few clicks.

Signal: a “parent” query has dozens of URLs at positions 20-80, each capturing a handful of impressions. Individually negligible, cumulatively problematic.

The detection method

1. Query your full GSC dataset

The GSC UI isn’t enough: you’re capped at 1,000 rows per page, and the “page” column is filterable but not aggregatable at the query level. You need the Search Analytics API or a BigQuery export. The goal: for each (query, URL) pair, retrieve impressions, clicks, average position.

💡 Extraire tous vos doublons requête × URL : Détecter la cannibalisation →

2. Group by query

For each query, calculate:

  • Number of URLs appearing
  • Average position of the top URL
  • Average position of the 2nd URL
  • Position gap between the two

3. Apply the degradation filter

Keep only cases where:

  • At least 2 URLs appear.
  • The top 2 are within 15 positions of each other (beyond that, there’s no real competition).
  • The query has at least 50 impressions / 28 days (otherwise it’s statistical noise).
  • Combined average position > 5 (if you hold the top spot on page 1, there’s no problem regardless of the 2nd URL).

With these filters, on a 10k-URL site, you’ll typically go from 300 raw cases down to 20-40 real cases to address.

4. Rank by cost

For each retained case, estimate the loss:

  • Expected CTR at the simulated average position (if you resolved the conflict)
  • Potential click gain = impressions × (expected CTR − current CTR)
  • If you have revenue per click (via GA4 or CRM), multiply accordingly.

Sort by descending cost. The top 5 cases will account for 70% of the recoverable gain.

The decision framework for fixing issues

Three options, in descending order of safety:

Option 1 — Differentiate the intent

If the two pages genuinely cover different topics, rewrite the title/H1/intro to clarify. Add an internal link from one to the other with an explicit anchor (“to learn more about [other topic]”). Google relearns to display them on distinct queries.

Zero risk, but requires editorial work. Preferred for Profile 2.

Option 2 — Merge

Delete the weaker page, 301-redirect it to the stronger one, and pull the best passages into the page you’re keeping. Minimal SEO equity loss, improved coherence.

Important: check external backlinks on both URLs before deciding which to merge into which. A lower-ranking page with 30 solid editorial backlinks may be the right redirect target.

Preferred for Profile 1.

Option 3 — Deindex

For filtered/facet URLs in Profile 3, noindex + consolidation toward the parent page. It takes 2-4 weeks for Google to drop the URLs, but the gain on primary queries is generally clear-cut.

Never deindex without verifying that the page doesn’t generate direct revenue (paid landing page, specific product page). A hasty noindex can cost more than the problem it solves.

Measuring impact

After fixing, set a baseline and measure over 8 weeks:

  • Average position of the retained URL on the affected queries
  • Cumulative clicks on the affected queries
  • Total clicks on the retained URL

If after 8 weeks the position hasn’t moved more than 2 ranks and clicks are flat, your initial diagnosis was probably wrong. Go back to Option 1 rather than stacking more merges.

Three mistakes found in 80% of audits

Having a tool doesn’t replace reasoning. Here are three recurring traps observed across sites of all sizes, regardless of the analytics stack being used.

Confusing cannibalization with poor keyword targeting

A page ranks at position 30 on a query with 50,000 impressions/month and nobody else on the site is positioned on it. This is not cannibalization: it’s an under-covered topic. The fix isn’t to merge — it’s to produce better content, longer, better structured, that genuinely addresses the intent. Merging two weak pages doesn’t create a strong one.

Deciding based solely on the “two URLs on one query” signal

The “Performance → Pages” report in Google Search Console lists URLs by query, but it aggregates over the selected time window. If a URL ranked briefly 3 months ago following a social share, then disappeared, it will still appear in the table with a few residual impressions — with no current conflict whatsoever. Always filter to the last 4 weeks when making a merge or deindex decision.

Deindexing too quickly “to clean things up”

noindex is tempting because it’s fast to deploy. But on an e-commerce site with 5,000 facet pages, mass deindexing often causes a few percentage points of long-tail traffic loss — recoverable afterward through proper canonicalization work. Always measure before deindexing: if a facet page has 0 clicks but 800 impressions over 90 days, there’s an intent signal to exploit, not eliminate.

A pattern that keeps coming up

Across the audits we run (mid-market e-commerce, SaaS, media), one case recurs with almost comical regularity: cannibalization between a category page and its associated editorial guide.

A typical example. An e-commerce site sells running shoes. The category page /running/ is optimized for “running shoes.” The content team, working in parallel, publishes a blog guide “How to choose running shoes” that ranks on the same query on page 1.

This is neither a true duplicate (transactional vs. informational intent) nor a case to merge (Google is right to display one or the other depending on context). But the observed result is almost always the same: the category page loses impressions on the short query, because Google regularly tests the guide in its place for top-of-funnel searches.

The right answer, in 9 out of 10 cases, is Option 1 — differentiate the intent: sharpen the category page title toward the commercial angle (“Buy Running Shoes — Free 24h Shipping”), sharpen the guide title toward the decision-making angle (“How to Choose Running Shoes in 2026 — Expert Guide”). And add an internal link from the guide to the category with a clear anchor (”→ See our running shoe selection”).

Four weeks later, you’ll typically see both URLs reappear in reports with noticeably more distinct query distributions. No merge, no redirect, no noindex — just a clearer editorial signal sent to Google.

Going further

Cannibalization is a case where tooling dramatically changes the quality of the diagnosis. Three concrete reasons: it surfaces Profile 3 cases (long tail) that manual analysis never catches, it quantifies the real cost of each case in potential clicks and dollars, and it secures irreversible fixes by establishing a measurable before/after.

SearchLens does exactly this analysis across all your queries — without the 1,000-row cap of Google Search Console, with your revenue per click integrated to prioritize what actually drives results, and an alert system that notifies you as soon as a new case appears rather than waiting for the next quarterly audit.

Essayez sur ce cas d'usage

Repérez les cas de cannibalisation avant qu'ils plombent vos positions

Plusieurs URLs qui rankent sur la même requête, c'est des clics perdus. SearchLens liste les doublons avec impressions, CTR et position par URL.

Détecter la cannibalisation →

Essai 7 jours · pas de carte bancaire · annulation en 1 clic.

À lire également