How to fix keyword cannibalization
You fix keyword cannibalization by consolidating. Merge the competing pages into 1 URL with a 301 redirect, differentiate the intent of each page, or canonical one into the other. No Google doc names cannibalization, and we will not pretend one does. The grounded mechanic is consolidation: Google's documentation on duplicate URLs explains that picking one URL “helps search engines to be able to consolidate the signals they have for the individual URLs (such as links to them) into a single, preferred URL.”
The symptom: two of your URLs trade places for one query
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
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. 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 Brimm 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.