SEO blog · On-page SEO

Keyword Cannibalization: How to Detect and Fix It

Key takeaways

  • Cannibalization happens when several pages on one site answer the same search intent and fight over the same positions instead of supporting each other.
  • Two pages in the same result is not automatically a problem: what matters is whether they swap positions, whether neither stabilizes, and whether the wrong page gets the clicks.
  • Practical detection: filter by query in Search Console, see which URLs appear for it, then confirm manually with the site: operator and the live results.
  • The fix depends on the case: merge with a 301 redirect, use a canonical, differentiate the intent, or rework internal links.

Keyword cannibalization happens when two or more pages on the same site answer the same search intent and compete for the same positions in Google. The typical result: rankings wobble, neither page settles in the top results, and clicks sometimes land on the less suitable page. It is not a penalty. It is a site organization problem.

This article gives you a method to detect it with real Search Console data, a decision tree for choosing the right fix, and a procedure for checking the result. Cannibalization is an on-page issue at site level, and our on-page SEO service covers exactly this discipline: one page with a clear role for each intent.

What cannibalization is and what it is not

Cannibalization is intent overlap between your own pages. It does not mean you have too many articles on one broad topic. A site can have ten pages about "underfloor heating" if each answers a different question (cost, installation, types, common problems).

Here is the difference between a real signal and a false alarm:

SituationCannibalization?Why
Two stable pages in the top 10 for the same queryUsually notYou occupy more of the results; still check CTR
The same query alternates between two URLs, week after weekProbably yesGoogle cannot tell which page is "the right one"
Category page and product page on the brand queryUsually notNavigational intent, both can be useful
Two articles with the same title worded differentlyYesIdentical intent, redundant content
Service page shows for "what is X", the article for "X price"Yes, invertedEach page answers the other's intent

A working definition: if a user would be equally satisfied with either page, they compete. If the user would need both, they do not.

Where cannibalization comes from

The causes repeat on almost every site:

  1. Articles written in different years on the same topic, without checking what already exists.
  2. Template-generated pages (for example, one page per variation of a service) that differ only cosmetically.
  3. Indexable categories and filters that produce pages nearly identical to the main category.
  4. Titles and H1s that are too close on different pages.
  5. Internal links with the same anchor pointing to different pages: you are telling Google that all of them are "the answer".
  6. Incomplete migrations and redirects that leave old variants live.
  7. The homepage trying to rank for a term better suited to an inner page.

Each cause already hints at a fix, but before applying one you must confirm the problem exists.

A 4-step detection method

You do not need a paid tool. You need Search Console data and the patience to read it.

  1. Choose the queries to check. Start with your important pages: their main queries and the ones you want to win. In the Performance report, select the last 3 months.
  2. See which URLs appear for each query. Filter by query ("Query" → "Exactly" or "Contains"), then open the Pages tab. If two or more URLs show meaningful impressions for the same query, you have a candidate. You can also use the custom (regex) filter, for example cost|price|pricing to group the variants of a topic.
  3. Check stability over time. Apply the query filter and each URL filter in turn, and compare the position charts. Two URLs that trade places (one rises while the other drops) are the classic sign.
  4. Confirm manually in the results. Search the query in Google and look at what appears. Then use the site: operator to see how much of the topic your site covers.

Control searches (replace example.com with your domain):

site:example.com "underfloor heating"
site:example.com intitle:"underfloor heating"
site:example.com inurl:underfloor

The first shows every page that mentions the phrase. The second shows only pages with the phrase in the title, meaning the ones that explicitly target it. The third picks up pages with the word in the URL. If you get several pages with the same declared purpose, you have found the source. The site: operator is not an exact measuring tool but an inventory tool: use it to find candidates, not to count them.

To avoid losing track, collect your findings in a table. The example below is illustrative:

QueryURL A (avg. position)URL B (avg. position)Note
installation cost/cost-article (7)/service-page (9)Alternates monthly
types of flooring/types-article (5)–No problem
installation warranty/service-page (12)/warranty-article (14)Merge candidate

For each row, write down who gets the clicks, who should get them, and what the real intent difference is. For general work in the Performance report, see our Google Search Console beginner's guide.

Decision tree: what to do with each pair

For each overlapping pair, answer these questions in order:

1. Do the pages answer the same intent?
   - NO  → differentiate (step 5)
   - YES → continue
2. Is one clearly better, older, or has external links?
   - YES, and the other adds no unique value → merge + 301 (step 3)
   - NO, both have value → continue
3. Must the other page stay accessible to users?
   - YES (product variant, filter, print version) → canonical to the main page (step 4)
   - NO → 301
4. Canonical: mark the preferred version; the page stays on the site
5. Differentiate: clarify intent, title, H1, structure and internal links

The table below summarizes the options:

FixWhen to use itEffectWatch out for
Merge + 301Two pages with the same intent, one is redundantSignals concentrate on one URLMove valuable content into the surviving page first
CanonicalVariants that must stay accessiblePoints to the preferred URLIt is a hint, not a command; Google can ignore it
DifferentiateDifferent intents presented the same wayEach page clarifies its roleRequires real content changes, not just titles
Internal linksWrong page receives the right anchorGuides Google to the priority pageSlow, partial effect
Remove (404/410)Page has no value and no trafficCleans up the siteCheck for external links first

The rules on canonicals and duplicates are explained in canonical tags and duplicate content, and redirect details are in 301 vs 302 redirects. If you have many addresses to move, the 301 redirect generator helps with the rules.

How to apply each fix, step by step

Merging: the most commonly needed fix

  1. Pick the page that stays: usually the one with the most links, the history and the intent closest to your target.
  2. Compare the content. What does page B have (examples, tables, questions) that A lacks?
  3. Integrate into A what deserves to be kept; do not just paste texts one under another.
  4. Update A's title and structure for the combined intent.
  5. Set the 301 from B to A and update the internal links that pointed to B.
  6. Request reindexing of A in Search Console and watch the results.

Differentiating: when the pages deserve to stay

Here you give each page a clear role. For example, an informational guide on "how to choose X" and a commercial page "X made to order" can coexist if:

  • titles and H1s clearly say two different things;
  • the guide no longer carries aggressive sales messages, and the commercial page no longer repeats the lesson;
  • the two pages link to each other with different, descriptive anchors;
  • informational queries are no longer targeted on the commercial page.

How to define each page's role properly is the subject of our article on search intent. Here we only care about the outcome: each page has its own purpose.

Check which anchors you use for each page. If two pages receive the same anchor, some of them must change. The priority page should get the exact query anchor, and the others variants that describe their role. The general structure is in internal linking and site architecture.

How to check that it worked

Avoid judging after a few days. A simple plan:

  1. Note the date of the change and the targeted queries.
  2. After 4–8 weeks, compare the same period (same length, same days of the week) with the period before.
  3. Track: the average position of the surviving page, total clicks for the group of queries, and stability (the chart stops oscillating).
  4. Check that the old URL no longer appears in results and the redirect works.
  5. Keep a change log, so you do not credit one change with another's effect.

Beware of seasonality and algorithm updates; they can distort comparisons. Note them in your monthly report, as we recommend in SEO KPIs and the monthly report.

Common mistakes

  • Treating every duplicate as a problem. Two stable pages in the top 10 need no intervention.
  • Deleting pages without a redirect, losing their links and history.
  • Redirecting pages with different intents. Google may treat the redirect as irrelevant, and the user lands on a page that does not answer the query.
  • Putting canonicals everywhere. A canonical is a hint for duplicate variants, not a fix for pages that compete on intent.
  • Rewriting only the title. If the text says the same thing, the problem stays.
  • Comparing different periods (a 30-day month with a 31-day one, holiday season with peak season).
  • Ignoring internal links, which often sustain the problem.

When it is not cannibalization, and limits of the method

Search Console shows average positions, and averages can hide fluctuation. A URL may appear once in the period and skew the average. Always verify manually.

On brand queries, owning several positions is often an advantage. Likewise, a category page and a guide on the same broad topic can work together if their roles are clear.

The site: operator is not exhaustive and does not reflect real rankings. Use it for inventory. On large sites with thousands of pages, manual analysis stops being practical: you need a Search Console export and a spreadsheet where you group queries.

Finally, fixing cannibalization does not guarantee better rankings. It removes an obstacle, but the outcome also depends on content quality, authority and competition.

Conclusion and next steps

Cannibalization is solved by careful diagnosis, not by rules like "one keyword, one page". Start with these steps:

  1. Export 3 months of Search Console data and group queries by topic.
  2. Identify queries with two or more relevant URLs.
  3. Apply the decision tree to each pair: merge, canonical, differentiate.
  4. Document the change and measure after 4–8 weeks.
  5. Prevent a recurrence: before writing a new piece, check your editorial calendar for what already exists, using keyword research.

If you want a specialist to walk through the site with you, see how we work in on-page SEO or reach us through the contact page.

Sources and further reading

Frequently asked questions

Frequently asked questions

Is cannibalization a Google penalty?

No. There is no penalty called cannibalization. It is an architecture problem: your pages overlap in intent, Google picks one, then another, and the signals (links, clicks, relevance) are split instead of concentrating on one strong page.

How many pages for the same query are too many?

There is no fixed number. If the pages serve different intents, they can coexist without trouble. The problem begins when they are interchangeable for the user and Google rotates them for the same query, so neither settles into a strong position.

Can I fix it just by changing titles?

Sometimes, if the pages truly have different intents and the titles made them look identical. If the pages say essentially the same thing, rewriting titles does not help: you need to merge the content or remove the overlap.

How long until a consolidation shows results?

It depends on how often Google revisits the pages and on site size. Usually you watch a few weeks, comparing the same periods and the same queries. Avoid changing other things in parallel so you can attribute the effect correctly.

Do a blog post and a service page on the same topic cannibalize each other?

Not necessarily. If the post answers an informational question and the page sells a service, the intents differ. It becomes a problem when the post starts receiving commercial queries or the service page shows up for what-is queries.

Related service

On-page SEO optimization

See the service →

Let’s grow your site’s organic traffic

Send us your website address and we’ll reply with a free initial analysis and a concrete SEO strategy — no strings attached.