How do I find and fix keyword cannibalization?

Filter the Search Console Performance report to one query and open the Pages tab. If two or more of your URLs each get a meaningful share of the impressions, they are competing. Fix it by merging with a 301 redirect, differentiating each page's purpose, or making one page the clear primary with consistent internal links. Leave brand queries alone.

By SEOBolt. Published , updated .

Why this happens

Keyword cannibalization means two or more pages on your own site target and rank for the same query, so neither earns the position a single stronger page might. It tends to appear on sites that publish a lot: a product page, a comparison page and a blog post can all answer "best X for Y". Google then alternates between them or ranks both lower than one consolidated page would rank.

It is easy to over-diagnose. Two URLs appearing for the same query is not automatically a problem; they may serve different intents, or one may rank well on page one while the other sits at position 80 and barely shows. What matters is whether the split is hurting the page you want to win.

Our own data shows how often the answer is "do nothing drastic". In seobolt.app's Search Console data (90 days, pulled 13 November 2026), 50 of 1,422 queries were split across two or more URLs with at least 10 percent of impressions each. Of those 50, only 4 called for a redirect, 41 for differentiating the pages, and 5 were brand queries where several pages showing is normal. Redirects were the exception, not the rule.

How to find and fix it, step by step

  1. 1. Find candidate queries

    In Search Console Performance, open the Queries tab, sort by impressions and click a query to add it as a filter. Then open the Pages tab. If two or more URLs each hold a meaningful share of the impressions (we use 10 percent or more as a threshold), the query is a candidate.

  2. 2. Skip brand queries

    Queries containing your own brand name will often show several pages (homepage, login, pricing). That is expected sitelink behavior, not a problem to fix.

  3. 3. Decide which page should win

    Pick the page whose purpose best matches the query's intent. Usually it is the page with the most impressions, the best position or the most useful content.

  4. 4. Choose the right action

    If the weaker page adds nothing, merge it into the winner and 301 redirect the old URL. If both serve a different intent, differentiate: change the title, H1 and opening of each so each targets its own query, and link the weaker page to the winner with the target query as anchor text. If one page is a near-duplicate, use a rel=canonical to the preferred URL.

  5. 5. Make every signal agree

    Google says redirects and rel=canonical are strong canonicalization signals, and a sitemap is a weaker one. Do not give conflicting signals: the canonical, the sitemap entry and internal links should all point at the same URL.

  6. 6. Update internal links

    Link to the winning URL, not to the one you redirected or demoted. Google recommends linking to the canonical URL consistently when linking within your site.

  7. 7. Re-check after a month

    Return to the same query and confirm one URL now holds most of the impressions and that its position improved or stayed stable.

Which fix to use

Cannibalization actions and when each applies (Google Search Central canonicalization guidance, read 13 November 2026)
SituationActionHow
Weaker page adds nothing the winner lacksConsolidateMerge the useful parts into the winner, then 301 redirect the old URL
Pages are near-duplicates and both must existCanonicalAdd rel=canonical on the duplicate pointing to the preferred URL
Pages serve different intentsDifferentiateRetarget title, H1 and intro of each; link the weaker page to the winner
Query names your brandDo nothingSeveral of your pages appearing is normal

When to use SEOBolt for this

seo_gsc_cannibalization reads your connected Search Console property and lists queries where two or more URLs each get at least 10 percent of the query's impressions. For each query it shows the competing URLs with impressions, clicks and position, a recommended primary URL and an action (consolidate, redirect or differentiate). Brand queries are marked brand_ok with no redirect proposed, and utility, legal and non-HTML URLs are never proposed as redirect candidates. It returns suggestions only.

If your competitors' names appear in queries, seo_set_competitors stores a list so those queries are not mistaken for brand queries. It needs your Search Console connected and a plan that includes the integration; /pricing shows which.

MCP tools involved: seo_gsc_cannibalization, seo_gsc_secondary_keywords, seo_set_competitors.

When SEOBolt is not the right tool

A report cannot know your business intent. Treat the recommended primary URL as a proposal and check that it really is the best page for the query before redirecting anything.

Prompt to give your AI assistant

With the SEOBolt MCP server connected (setup), copy this into Claude, ChatGPT, Cursor or Gemini CLI:

Assign to SEOBolt: for sc-domain:example.com run seo_gsc_cannibalization and list only queries where the proposed action is redirect or consolidate, with the winning URL and why. Do not change anything. Show me what you did so I can approve each redirect before it is made.

Frequently asked questions

Is keyword cannibalization a Google penalty?

No penalty is involved. It is a signal-splitting problem: your own pages compete, so none of them may rank as well as one consolidated page.

Should I redirect every pair of competing pages?

No. Redirect only when the weaker page adds nothing. In our own data, 4 of 50 split queries called for a redirect; 41 needed differentiation.

How do I choose the primary page?

Choose the page whose purpose best matches the query, usually the one with the most impressions and best position, then make internal links, canonical and sitemap all point to it.

Does a sitemap fix cannibalization?

Not by itself. Google describes sitemap inclusion as a weaker canonical signal than redirects or rel=canonical.

Sources

Related