CONTENT STRATEGY

Content cannibalization: how to find it and what to do

Four symptoms, one Search Console report that confirms it, and the choice between merging, differentiating and deleting the pages that compete.

13 May 2026 · 11 min read

Content cannibalization is when several of your own pages compete for one search intent. Each looks fine on its own, which is why it survives so long, and why the fix has to start with the corpus rather than the page.

What it is, and what it is not

Cannibalization happens when two or more pages target the same intent closely enough that a search engine cannot tell which one to rank. It picks one, sometimes a different one each week, and both perform worse than a single strong page would.

It is not simply keyword overlap. Two pages can share a phrase and serve different intents: a page about what a canonical tag is and a page about how to implement one target readers at different moments. That is topical coverage and it is healthy.

The test is intent. If a searcher would be satisfied by either page, you have one page too many.

The symptoms, before you go looking

Cannibalization announces itself in reporting well before anyone names the cause. Rankings oscillate between your own URLs for a single query, publishing more stops lifting traffic, several pages sit between positions 8 and 25 without breaking through, and a tangential post outranks the commercial page it was meant to support.

The last one is the most commonly misread, because the tangential page looks like a success.

Finding it with Search Console

You do not need a tool. Search Console has enough.

  1. Open Performance, set the range to the last three months.
  2. Add a Query filter for a term you care about.
  3. Switch to the Pages tab.
  4. If more than one URL appears with meaningful impressions, those pages are sharing the query.

Repeat for your top 20 commercial queries. Twenty minutes gets you a real list.

For a wider sweep, export the query and page data, then group by query and count distinct pages with more than about 50 impressions. Any query with two or more is a candidate.

A worked example

A software company selling scheduling tools finds this for the query “team scheduling software”:

URLImpressionsAvg positionClicks
/blog/team-scheduling-guide4,20014.261
/features/scheduling3,80017.638
/blog/how-to-schedule-shifts1,10022.97

Three pages, one intent, none on page one. The reader searching that term wants to evaluate a product, so the commercial page should own it.

The resolution:

  • /features/scheduling becomes the target. It gets the direct answer near the top, and internal links from both blog posts using descriptive anchors.
  • /blog/team-scheduling-guide is re-angled toward a genuinely different intent, “how to build a shift rota”, and stops competing.
  • /blog/how-to-schedule-shifts is thin and overlaps the guide. It is merged into it and 301 redirected.

Two months later the commercial page holds position 6 and the combined clicks are higher than the three pages managed separately.

Choosing between merge, differentiate and delete

Merge when two pages say the same thing and neither is clearly better. Combine the strongest sections into one URL, redirect the other, and keep the URL with more inbound links.

Differentiate when both pages have a real reason to exist but drifted together. Change the angle, the title and the opening so each serves a distinct question. This is usually the right call for a commercial page and a genuinely educational one.

Delete and redirect when a page is thin, dated and earns nothing. Redirect it to the closest relevant page rather than letting it 404, and resist redirecting everything to the homepage.

Whichever you pick, update the internal links pointing at the loser. A redirect that still receives dozens of internal links is a signal you did not finish the job.

Why it is invisible from inside a CMS

Every page in your editor looks reasonable, because it was written to be. The failure only exists in the relationship between pages, and no page-level view can show a relationship.

This is why cannibalization survives content audits that grade pages individually and score well. The audit was asking the wrong unit of analysis.

Stopping it before it starts

The cheapest fix is at commissioning, not after publishing.

  • Keep a list of the intents you already cover, with the URL that owns each one.
  • Before commissioning, search your own site for the target query and read what comes back.
  • Give every new brief a named intent and an explicit note on how it differs from the nearest existing page.
  • Watch for converging titles. Titles drift together before content does.

What good looks like

One page per intent, each with a clear owner, and internal links pointing at the page you want to rank rather than scattered across near-duplicates. Fewer pages, doing more work.

Detecting this needs the whole crawled site, which is why 14 of the 129 checks in the Crawld rubric sit in a content-health category rather than a page-level one. The audit page explains how overlap is computed, the editor flags it before you publish, and the free scan reports it alongside everything else, with the coverage figure that says how much of your site it actually read.

Scan your site free All posts