Rankhop

Keyword cannibalization: how to find it and fix it with Google Search Console

Published on 9 October 2026

Keyword cannibalization happens when two or more pages of your site show up in Google for the same query and neither one reliably wins. They split impressions, clicks and links between them, and the page you wanted to rank is not always the one Google shows.

It is not a penalty. It is a symptom: your site sends mixed signals about which page answers a query. Sometimes that costs you nothing. Sometimes it holds back your best page. Search Console is free and has what you need to tell the two cases apart.

When overlap is harmless, and when it is not

Two situations look the same in a report but are not the same problem.

  • Harmless overlap. Your home page and a blog post both appear for your brand name, or two pages use the same word but serve different needs (a product page and a how-to). Each one earns its own clicks.
  • Real cannibalization. Two pages serve the same intent, and Google swaps them from one week to the next, or shows the weaker one (an old article instead of your product page) where the right page would do better.

A quick test: if you had to choose one page for this query, would you choose the same one every time? If you hesitate, Google probably does too.

Step 1: find the queries where several pages compete

  1. Open Search Console, then Performance and Search results. Set the period to the last 3 months: a short period hides pages that alternate.
  2. In the Queries tab, sort by impressions and click a query that matters to you. Start with the ones that bring the most impressions or the most business.
  3. Your click added a query filter. Open the Pages tab: you now see every page Google showed for that query, with impressions, clicks, CTR and average position.
  4. Two pages that each hold a real share of the impressions are a candidate. As a rule of thumb (not a Google threshold), ignore a page that has only a handful.

You can also start from a page: filter on it, open the Queries tab, and look at which of its queries other pages receive too. That is quicker when you already suspect a pair.

Two limits to keep in mind. Search Console hides rare queries for privacy, and positions are averages: a page that sits at 4 some days and 30 on others ends up with an unremarkable average. That is why the next step matters.

Step 2: check whether the pages alternate

  1. Keep the query filter on and add the first page as a second filter. Open the Dates tab: you see the days on which that page appeared for this query.
  2. Do the same for the second page.
  3. If one page’s impressions fall on the days the other’s rise, Google is swapping them. That is cannibalization in the strict sense.

If both appear on the same days at different positions, Google shows both at once. That can be fine, since two results from your site take more room. Just check that the better page is the higher one.

Step 3: decide which page should win

Choose the target page by intent, not by current rank: the page that best answers what the searcher wants, where you want visitors to land, and that has the links and history to carry it. Then you are in one of three cases.

  • Same intent, one page is redundant. Merge them.
  • Different intents mixed together. Separate them so that each page targets its own query.
  • A page with no search purpose (a tag listing, an internal filter page). Keep it out of the index or out of your internal links.

Step 4: apply the fix

  • To merge: move what is useful from the weaker page into the target, then 301-redirect the old URL to the target. Point your internal links straight at the target and remove the old URL from the sitemap.
  • To separate: rewrite the title, the H1 and the first paragraph of each page so that each one clearly targets its own query. Stop using the same anchor text for both pages in your internal links, and link from the secondary page to the target with a descriptive anchor.
  • About rel=canonical: it suits near-duplicate URLs (the same content under a filter or tracking parameter). It is a hint that Google can ignore, and it is not a way to combine two different articles: use a redirect for that.
  • Avoid: deleting a page that has backlinks without redirecting it, or merging two pages with different intents just because a report lists two URLs.

Step 5: measure, without rushing

Before changing anything, write down the date, the query and the target page’s clicks, impressions and average position. Google has to recrawl and reprocess the pages, which can take weeks; the URL Inspection tool shows the date of the last crawl. Then compare the same query over equal periods, and judge the change on the target page’s clicks, not on rank alone.

Nothing guarantees a gain. A fix removes a reason for Google to hesitate; it does not decide the ranking for it.

A worked example (fictional data)

The site shop.example sells candles. The query “soy candle” shows two of its pages over 3 months. These numbers are invented to illustrate the method; they do not come from a real site.

Query “soy candle”, last 3 months (fictional data)
PageImpressionsClicksAverage position
/blog/how-soy-candles-are-made4,200389.8
/collections/soy-candles3,1005211.4

Reading: the blog post is shown more often and ranks slightly better, but it earns fewer clicks and a click on it rarely turns into a sale. The collection page is the one that should win this query.

Decision: keep both, separated. The collection page becomes the target of “soy candle”. The article keeps its informational queries, drops “soy candles” from its title, and links to the collection page with the anchor “soy candles”. The numbers to watch afterwards are the collection page’s clicks for this query.

Related guides