How to Fix Keyword Cannibalization

On this page

Cannibalization is something you confirm with evidence before you touch anything: two or more of your own URLs drawing impressions for the same query in Search Console, with their positions alternating inversely over time as Google swaps which one it surfaces. Once confirmed, the fix is one of three, chosen by the relationship between the pages: 301-merge true duplicates, differentiate pages that serve genuinely different intents by reading what Google already rewards for each query, or fix internal-linking and architecture when the wrong page type keeps surfacing. The honest caveat up front: consolidating your own signals removes self-competition, but it does not by itself beat external competitors. You are fixing a self-inflicted handicap, not buying a ranking.

This is the general cannibalization method: confirm, classify, choose the fix, stabilize. It is not the old-versus-new temporal case where a legacy URL keeps beating its replacement, which has its own keeper decision, and it is not the duplicate-canonical status mechanics in Search Console reporting. Here, two of your pages are fighting over one query and you need a repeatable way to settle it.

Confirm it first, do not fix a suspicion

Open the Performance report in Search Console, filter to the specific query, and switch to the Pages tab. What you are looking for is more than one URL accumulating impressions for that query, and ideally a position history where the two pages trade places over time: one rises as the other falls, then they swap back. That inverse swap is the signature of true cannibalization, Google uncertain which of your pages deserves the result and rotating between them, which costs you the stability that a single confident page would hold.

What is not cannibalization: two pages that happen to share a word but rank for different queries, or a page that simply ranks poorly. If only one of your URLs draws meaningful impressions for the query, you do not have cannibalization, you have a normal ranking problem. Do not restructure your site over a suspicion the data does not support.

Classify the relationship

Three relationships, three different fixes:

Relationship What it looks like The fix
Identical intent Two pages genuinely answer the same query the same way Merge: 301 the weaker into the stronger
Different intent Two pages serve genuinely different needs that share a term Differentiate: align each page to its distinct intent
Wrong page type surfacing Google ranks the category page when the product page should win, or vice versa Architecture and internal linking

Classifying correctly is the whole game, because applying the merge fix to a different-intent pair destroys a page that should have existed, and applying differentiation to true duplicates leaves two thin pages where one strong one belonged.

Read the live SERP to assign intent

When two pages serve arguably different intents, do not argue about it internally. Search the query yourself and read what Google already rewards. Search the head term and look at which page type dominates the results: a commercial grid of products, or editorial comparison and explainer content. Then search the modifier or longer-tail variant and do the same. Whichever page type Google surfaces for each query tells you which of your pages should own which query. This converts an internal opinion into an external observation: Google has already decided what each query wants, and you are aligning your pages to that decision rather than to your preference.

If the SERP for the head term is all product grids and your editorial guide is trying to rank there, the guide is in the wrong fight. Point your commercial page at that query and let the guide own the comparison query where editorial content dominates.

Differentiate with aligned signals

Once you know which page should own which query, make the on-page signals stop contradicting that. The title, the H1, and the on-page focus must stop sending mixed terms. Strip commercial modifiers like “best” and “top” from a page you have decided should be the editorial resource, and strip editorial framing from the page you want ranking for the commercial query. If both pages still say “best” in the title, you have told Google they are competing for the same commercial intent, and it will keep rotating them.

The work here is subtraction as much as addition: remove the overlapping signals that made the pages look interchangeable, so each one points unambiguously at its assigned query.

Architecture and internal linking

When the wrong page type keeps surfacing, the lever is internal linking, and specifically contextual internal links: editorially placed links inside body content, not just the site-wide navigation. The page you want to own a query should be reinforced by relevant links from related content, because contextual links carry more weight than the same link repeated in a global menu. The page that is winning by accident is often winning only because it sits in the nav and gets linked from every page; counter that by building genuine contextual support for the page that should win.

Two specifics that resolve common cases: product pages should target product queries, not the category term, so a product trying to rank for the broad category query is misaligned by design. And filtered or parameter variants of a page should carry a canonical pointing to the clean URL, so Google consolidates them rather than treating each variant as a separate competitor.

Set honest expectations

This is recrawl-based, so it takes weeks, not days. Google has to recrawl the changed pages, re-evaluate the consolidated or differentiated signals, and settle on a stable choice, and that settling happens over multiple crawls. Watch the same Performance report you used to confirm the problem, and look for the position history to stabilize on one page per query instead of swapping.

Two mechanics worth stating plainly so you do not over-claim. A 301 redirect is a strong signal that consolidates the merged page’s value onto the target, stronger than a canonical, which Google treats as a hint it can override. And consolidation removes a self-handicap, but the resulting single page still has to win on depth, relevance, and competition like any other page. If a competitor simply has a better resource, fixing cannibalization gets you to a fair fight; it does not win it for you.

A note on sequence: differentiate first, merge last. Merging deletes a page, so reserve it for genuine duplicates. When two pages serve different intents, differentiation keeps both assets working, and deleting one would forfeit traffic you could have kept.

Frequently Asked Questions

How do I know it is cannibalization and not just a low ranking?

In the Search Console Performance report, filter to the query and check the Pages tab. Cannibalization shows multiple of your URLs drawing impressions for that query, usually with positions swapping inversely over time. A single URL ranking poorly is a normal ranking issue, not cannibalization.

Should I just delete one of the pages?

Not as a first move. Delete (via 301 merge) only true duplicates that serve the same intent. When the pages serve different intents, differentiate them so both keep working; deleting one forfeits traffic it could have earned on its own query.

Will fixing cannibalization make me rank higher?

It removes self-competition and stabilizes which page Google surfaces, which often recovers lost ground, but it is not a guaranteed jump. The consolidated or differentiated page still competes on content depth and against external rivals; cannibalization fixes a handicap, it does not defeat competitors for you.

Sources

Google Search Central, Redirects and Google Search: https://developers.google.com/search/docs/crawling-indexing/301-redirects
Google Search Central, How to specify a canonical URL with rel canonical and other methods: https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls