Fix library

How to fix keyword cannibalization

Fix keyword cannibalization by consolidating: merge competing pages into one URL with a 301 redirect, differentiate each page's content so they answer genuinely different questions, or add rel="canonical" from the weaker page to the stronger. Per Google's duplicate-URL documentation, consolidating ranking signals onto one preferred URL produces stronger results than splitting them across near-identical pages.

The symptom: two of your URLs trade places for one query

Two or more of your URLs swap positions for the same query in Google Search Console: neither holds the slot steadily, position jitters week to week, and click-through suffers because the result keeps changing. To detect it: filter the Performance report to one query, then view the Pages tab. Multiple URLs sharing impressions for the same query is the signature of cannibalization.

Open Search Console, filter the performance report to a single query, and look at which pages received impressions for it. The healthy pattern is one page, consistently. The cannibalization pattern is two or three of your URLs swapping in and out over the weeks, each holding the query for a while and then yielding to a sibling. Neither ranks as well as one page would, the position graph is jittery, and the click-through suffers because the result keeps changing under the searcher.

The cause is usually easy to guess from the URLs themselves. A services page and a blog post that both explain roof repair. Two blog posts written 18 months apart on the same topic, because nobody checked what already existed. A category page and a guide with near-identical titles. Each page is reasonable alone. Together they are competitors you built against yourself.

The cause: near-duplicates split one query's signals

Google ranks pages, not sites. When two of your pages substantially answer the same query, the engine has to select one, and everything that would strengthen a single page is now divided across two. Internal links point at both, so neither accumulates the full weight. External links land on whichever version someone happened to find. The selection flips because neither candidate is clearly the answer.

The consolidation doc describes the crawl-side cost of duplication in plain terms: it is better for Googlebot “to spend time crawling new (or updated) pages on your site, rather than crawling duplicate versions of the same content.” The same logic applies to your ranking signals. Divided, they underperform. Consolidated onto one preferred URL, they add up. That is the entire mechanic behind every cannibalization fix, and it is why the fix is always some form of picking a winner.

The fix: merge, differentiate, or canonical

Three fixes address keyword cannibalization: (1) merge and 301: consolidate content into the stronger URL and permanently redirect the weaker one; (2) differentiate intent: rewrite titles and H1s so each page answers a different reader's question; (3) canonical: add rel="canonical" from the weaker page to the winner when both must stay live. Update all internal links to the surviving URL after any fix.

There are three honest fixes. Choose by asking what each page is actually for.

  • Merge and 301. If the pages say the same thing to the same reader, combine the best material into the stronger URL and permanently redirect the weaker one to it. This is the cleanest fix because it leaves one page holding every signal. The docs treat permanent redirects as a first-class consolidation method, noting that “all permanent redirection methods have the same effect on Google Search.”
  • Differentiate the intent. If the pages should serve different readers, make that true in the content. Point the services page at buyers who want a quote and the guide at researchers who want steps. Rewrite the titles, the H1s, and the openings until the two pages no longer answer the same question. Overlap in topic is fine. Overlap in job is the problem.
  • Canonical one into the other. If both pages must stay live for readers but only one should represent the content to engines, add a rel="canonical" element on the weaker page pointing at the winner. Before doing this, check which canonical is declared on each competing page to confirm neither URL is already pointing somewhere unexpected, and verify there are no canonicalization errors in the destination tag — Google discards canonical hints that point at redirects, dead URLs, or the wrong protocol. This is a hint rather than a directive, and it only fits when the pages are genuinely near-duplicates.
# Fix 1: merge, then permanently redirect the losing URL to the winner
/blog/roof-repair-guide/   301   /services/roof-repair/

<!-- Fix 3: both pages stay live; the loser declares the winner -->
<link rel="canonical" href="https://example.com/services/roof-repair/" />

Whichever fix you choose, finish the job in your internal links. Update navigation, related-post modules, and in-body links so they point at the winning URL, not the one you just retired or demoted. Internal links are the signal split you control completely, and leaving them divided undoes half the fix.

Be honest: when it is not cannibalization

Two things to keep straight. First, "keyword cannibalization" is an industry term, not a documented Google system. You will not find it in the official docs, and any tool quoting Google on it is inventing a citation. What the docs do establish is the consolidation mechanic above, and that is what we ground this fix in. Second, not every overlap is a problem. Different intents legitimately get different pages. A pricing page and a comparison guide can both surface for a product's name and be correct, because a searcher ready to buy and a searcher still deciding are different jobs. If each page wins its own distinct queries and holds them steadily, leave them alone. Merging pages that serve different intents destroys a page that was doing real work, and that is a worse outcome than the jitter you started with.

Verify: watch the query settle on one page

After the fix, go back to the Search Console performance report and filter to the affected query. You are looking for the swap pattern to stop: one URL holding the impressions, position steadying, the retired URL falling away as the redirect or canonical is processed. This takes time to show, because engines have to recrawl and reprocess the pages, so judge the trend over weeks rather than days.

Then check the pages themselves the way an engine would. Re-run an audit on both URLs and confirm the redirect returns a 301, the canonical points where you intended, and the surviving page carries the consolidated content. You can do this by hand, or paste your link into our GEO audit or the full AuditLamp audit and we will read the pages the way a crawler does and confirm what each URL actually declares. Duplication has a sibling failure with its own page, duplicate content, and the rest of the fix library walks through the other failures we find most.

See which of your pages are fighting each other.

Paste your link. We check your canonicals, your redirects, and whether the page an engine receives matches the page you meant to rank. The preview is free.