Skip to content
Technical guide · Published

Keyword cannibalization: detect it with Search Console and confirm the fix

Almost every guide stops at “merge them and add a 301”. Nobody shows you the after. This method covers the full cycle: detect, decide with numbers, redirect, and verify over four weeks.

By Alejandro Verjel · Founder of Rankiamos

TL;DR

  • Not every overlap is cannibalization. Three conditions have to hold: same intent, alternation over time, and neither URL consolidating.
  • The query filter plus the Pages tab is the whole diagnosis. Filter by the query, switch to Pages, and see how many of your URLs are splitting those impressions.
  • The surviving URL is chosen with numbers, not affection. Twelve-month clicks first, then intent match, then age. In that order.
  • Add the keyword to your tracker before you ship the 301. Tracking history starts the day you add it — with no baseline you cannot prove anything later.
  • Four weeks is the reading window. One URL, a stable position, and clicks equal to or above the previous combined total. Otherwise the fix failed and needs review.

What keyword cannibalization is, and when two pages really compete for the same keyword

Keyword cannibalization happens when two or more URLs on your own site compete for the same query and neither one wins. Google has to pick which to show, finds no clear signal, and keeps swapping: one week it shows the blog article, the next week the service page, and both end up halfway there. The outcome is not that you lose half your traffic — it is that neither page ever reaches where a single consolidated page would have landed.

Before going further, let us switch off the paranoia. Two pages competing for the same keyword in the index is not automatically a problem. Google frequently shows two results from the same domain when they answer different intents, and in plenty of cases that is exactly what you want: more real estate on page one. The problem appears when the competition is real, and for that three conditions have to hold at the same time.

1. The same search intent

Both pages are trying to answer the same thing. A guide on “how to choose a CRM” and a CRM comparison can coexist; two guides explaining the same thing under different titles cannot. The quick test: if you had to send a user making that search to one of them, would you hesitate? If you hesitate, it is cannibalization.

2. Alternation over time

Google switches URLs from one week to the next for the same query. This is the clearest fingerprint: it is not that both appear together, it is that they take turns. A daily tracker makes it obvious inside two weeks; with weekly data you need a long month to see it.

3. Neither one consolidates

Both hover in mid positions without settling. If one sits firmly at position 4 and the other shows up occasionally at 38, you do not have cannibalization: you have one page that ranks and one that barely exists for that query. Leave them alone.

It matters not to confuse this diagnosis with a stalled URL. If you have a single page bouncing between positions 11 and 20, the problem is strength, not internal competition, and the fix runs through different levers — we cover those in the guide on moving from positions 11-20 to page one. This post is about a different scenario: two URLs fighting each other. Different cause, different solution, and applying the wrong recipe costs you a month.

One last nuance that rarely gets mentioned: cannibalization is not always caused by duplicated content. It also comes from tag or category pages that mirror an article listing, old landing page versions nobody retired, badly configured pagination, and mislabeled translations. Before you rewrite anything, verify you are not fighting a technical URL you did not know existed. For the full map of what Search Console does and does not tell you, start with the guide to connecting Search Console to a rank tracker, and for an overview of what can be measured continuously, see the Rankiamos feature set.

How to detect keyword cannibalization with the Query filter in Search Console

Diagnosing keyword cannibalization in Search Console needs no external tool and no elaborate spreadsheet. It needs one move most people never make: filter by a specific query and then switch to the Pages tab. That tab switch with the filter still active is what shows you which of your URLs are splitting the impressions for that search.

Here is the complete procedure, step by step. It takes about ten minutes per query the first time and roughly two once the sequence lives in your head.

  1. Step 1 · Open Performance on Search results

    In Search Console, go to Performance and pick the Search results report. Turn on all four metrics — clicks, impressions, CTR and average position — because you will need every one of them. Set the range to the last 3 months so you have enough volume without dragging in content that no longer exists.

  2. Step 2 · Sort queries by impressions, not clicks

    On the Queries tab, sort by impressions. Cannibalization shows up as a query with plenty of impressions and few clicks, because Google is displaying you but in mid positions. Sorting by clicks puts what already works on top, which is exactly what you do not need to review.

  3. Step 3 · Click the suspicious query

    Clicking a query makes Search Console apply it as a filter across the whole report. Check that the filter chip with the query appears at the top. That detail is the one nearly everyone skips: without the active filter, the Pages tab shows your sitewide totals and tells you nothing.

  4. Step 4 · Switch to the Pages tab

    With the query filter in place, open Pages. You are now looking at exactly which of your URLs receive impressions for that specific search. If only one shows up, there is no case. If two or more appear with meaningful impressions — say the second one clears 15% of the first one's impressions — you have a real candidate.

  5. Step 5 · Compare two periods to see the alternation

    Without removing the filter, use the date comparison: last 28 days against the previous 28. If URL A held most impressions in the first period and URL B in the second, there is your alternation. It is the strongest confirmation Search Console can give you that Google does not know which one to pick.

  6. Step 6 · Record clicks, impressions and position for each URL

    Export or copy the figures for both URLs. You need them for the next step, when you decide which one survives, and above all you need them a month from now for comparison. Note the exact date of the measurement too: without that starting point, the later verification turns into a debate of opinions.

Two Search Console limits worth keeping in mind: data arrives with a two to three day delay, so do not go looking for the effect of yesterday's change; and very low-volume queries are omitted for privacy, which means thin long tail cannibalization may never surface in the report. That is what direct rank tracking is for, and we get to it below.

If you have fifty queries to review instead of five, this manual method will feel long. The way to scale it is regular expressions in the query filter, which isolate entire families of searches in one pass: we cover that separately in the guide to regex for Search Console queries. For one or two specific cases, the six-step flow above is faster than learning the syntax.

The numeric rule for picking the surviving URL: clicks, impressions and age

This is where most teams get it wrong, and not for lack of technical skill. They get it wrong because they pick the page they like: the newer one, the better designed one, the one the good writer produced. Google does not share your aesthetic preferences. The URL that should survive is the one that already has accumulated signals, even if it is the uglier of the two.

Rank the criteria by weight and apply them in cascade: if the first one decides, do not move to the second. This is the hierarchy we use and the one we recommend defending in front of a client who wants to save their favorite page.

Criteria ranked by weight for deciding which URL survives a merge
Order Criterion Where you check it Decision rule
1 12-month clicks GSC · Pages with query filter Wins with double or more
2 Intent match Manual SERP review The format dominating the top 10 wins
3 Impressions and average position GSC · same report Best sustained position wins
4 Age and inbound links Publication date · internal links Older and better linked wins
5 Business value Analytics · conversions Final tiebreaker, never the opening move

What it looks like in practice

A typical agency case, with rounded numbers so the reasoning is clear. A consultancy has two pages fighting over the query “seo audit”: a blog article published three years ago with 140 clicks and 6,200 impressions over the last twelve months at an average position of 14; and a service landing page published six months ago with 30 clicks and 2,100 impressions at position 19. The sales team wants to save the landing page because that is the one that converts.

Criterion 1 settles it on its own: the article has nearly five times the clicks. The article stays. What you do with the commercial argument is not change the winning URL — it is change the article: bring in the service block, the social proof and the form the landing page had, then redirect the landing page to the article. You end up with a single URL that keeps three years of signals and converts too. That is the outcome you are after, not an argument about which page looks nicer.

Criterion 2 only comes into play when the first one does not resolve. If both URLs have comparable clicks, look at which format dominates the top 10 for that query: if all ten results are long-form guides, your guide wins; if they are product pages, your landing page wins. You are aligning your survivor with what Google already decided answers that search, not with what you would like it to answer.

Criterion 5, business value, is a tiebreaker and not a starting point. Put it first and you will always save the commercial landing page while throwing away years of accumulated signals. It is tempting and it is expensive. The plans and the quota you need to watch several of these merges at once are detailed on the pricing page.

Merging and redirecting: the 301 and what to do with the content that leaves

You know which URL survives. Now comes the part that is documented everywhere, so I will keep it short and dwell only on the three mistakes I see most often. The goal when fixing keyword cannibalization is not to delete a page: it is to get every signal pointing at a single URL without losing anything on the way.

1. Salvage the content before touching anything

Open both pages side by side and mark what the loser has that the winner does not: a table, an example, a Q&A section, a paragraph answering a nuance of the query. That material goes into the winner before you redirect. The number one cause of a merge going wrong is deleting the exact block Google was surfacing that URL for.

2. Fix the internal links first

Find every internal link pointing at the URL you are retiring and repoint it straight at the winner. Skip this and your site is full of links routed through a redirect: it works, but you are telling Google that old page still matters to you. This step comes before the 301, not after.

3. Ship a 301, not a 302

The redirect must be permanent and must land directly on the winning URL, not on the homepage or a category. To Google, a redirect to the homepage reads as “this no longer exists”: you lose almost the entire signal. Also verify no chain forms, which is common when that URL was already redirected in a previous migration.

4. Update the sitemap and request indexing

Pull the redirected URL out of the sitemap and leave only the winner. Then, in Search Console, run URL inspection on the winner and request indexing. It performs no miracles, but it pulls discovery forward by a few days, and those days count when you have to report.

5. Do not change two things at once

The urge to also rewrite the title, change the winner's URL and redesign the template is strong. Resist it. If the position drops a month from now, you will not be able to tell whether it was the merge, the new title or the redesign. One variable at a time is the only way to learn anything from the experiment.

A note on the alternative: if the losing page has to stay alive for users — because it is linked in a campaign, an email or a PDF already in circulation — a canonical pointing to the winner is the reasonable route. Bearing in mind that a canonical is a hint Google can ignore and a 301 is an instruction it almost always honors. If your problem is closing the internal competition and the page has no business reason to exist, redirect it and move on.

Cannibalized URLs in Google: the four weeks after the fix

The part almost nobody documents, because it requires coming back a month later.

Shipping the 301 does not close the job, it starts it. Cannibalized URLs in Google do not resolve at the moment of the change: they resolve when the crawler comes back, processes the redirect, re-evaluates the winning URL and decides it now has a clear answer for that query. That process takes weeks and has a recognizable shape. Knowing it saves you two things: the panic of week one and the false comfort of week three.

This is the sequence observed in most cases. The timings are indicative and depend on how often your site is crawled: a publisher shipping daily moves faster than a corporate site untouched for months.

What to expect week by week after shipping the 301
Week What usually happens What to check
1 Google still shows the old URL on some searches. A temporary drop in position and impressions is common. That the 301 responds correctly and there is no redirect chain.
2 The redirected URL starts dropping out of the index for that query. The winner appears more consistently but still wobbles. That the two URLs no longer alternate within the same day.
3 The winner stabilizes. Impressions concentrate on a single URL and CTR begins to normalize. That total impressions have not fallen against the previous combined figure.
4 Read the result. Position should match or beat the better of the two original URLs. Total clicks equal to or above the sum of both URLs before the fix.

What a successful fix looks like

Three signals, and all three have to show up. First: only one of your URLs appears for that query in the Pages tab of Search Console with the filter applied. Second: that URL's position matches or beats the better of the two originals and, above all, it is stable — it stops jumping day to day. Third: total clicks match or exceed the combined clicks both URLs had before the change.

One expectation worth lowering: merging two pages sitting at positions 14 and 19 does not put you at 7. Consolidation removes the contradictory signal, it does not manufacture authority. The normal outcome is a gain of a few positions and, more importantly, a position that stops oscillating. If your real problem was page strength rather than internal competition, the merge will not solve it and the diagnosis was wrong from the start.

What a failed fix looks like

If after four weeks the winning URL sits below the better of the originals, or both still alternate, something did not work. The review order is always the same: mechanics first (redirect status code, chains, robots.txt, internal links still pointing at the old URL), then content (did a block from the deleted page get left out?), and finally context (did the whole SERP move during those weeks, or only you?). That third point is the one most people skip and the one that explains the result most often.

Monitoring both URLs in parallel: the step nobody writes down

Search Console is essential for the diagnosis, but three of its characteristics make it insufficient for verification. Data arrives two to three days late, the position it reports is an average across all impressions in the period — not the Google position at a given moment — and low-volume queries are omitted. For spotting a problem months in the making, none of that matters. For knowing the exact day Google stopped alternating between your two URLs, it matters a lot.

Hence the step almost nobody documents: set up the monitoring before you touch anything. The correct sequence has four moments and the order is not negotiable.

Moment 1 · Baseline, 7 to 14 days before the 301

Add the cannibalized keyword to your tracker and let it measure for at least a week before you ship the change. This is the critical part, and I will say it plainly because it affects this exact use case: in Rankiamos a keyword's history starts the day you add it — it is not retroactive. Ship the 301 first and add the keyword afterwards, and you have nothing to compare against; the whole verification becomes a personal impression.

Moment 2 · The day of the change

Write down the date and time of the deploy. On either plan you can re-measure a keyword by hand once 6 hours have passed since its last check (daily quota: 30 units on Pro, 13 on Free), so one check before the deploy and another at least 6 hours later gives you a clean cut. On the Free plan the automatic check is weekly, which is fine for seeing the month's trend but not for dating the change precisely.

Moment 3 · Daily watch for 4 weeks

The Pro plan's daily check gives you the full curve: the week-one dip, the moment it stops oscillating, and the level where it settles. With weekly data you would get four points in a month, and that resolution cannot tell “it stabilized” apart from “the measurement day got lucky”.

Moment 4 · Cross-check with Search Console

At the end of the four weeks, go back to the query-filtered report and confirm the two things the tracker cannot tell you: that only one URL appears in the Pages tab, and that total clicks match or exceed the previous combined figure. The tracker and Search Console answer different questions; a complete verification needs both.

One feature removes the manual work in this phase: cannibalization detection on the Pro plan, which flags a possible cannibalization when different URLs from your domain have ranked for the same tracked keyword in its last 10 measurements, lists each URL with its best position and tells you which one ranks today. It reads the position history of the keywords you track, not Search Console, so it only sees keywords you have added. Combined with the daily check, it gives you the entry signal (there is a case here) and the exit signal (there no longer is), which is exactly the cycle this post is trying to close.

And a limitation that also deserves saying out loud: Rankiamos runs on iPhone, iPad, Mac and Apple Watch, its interface is in Spanish only, there is no web or Android version, and it does not send reports to clients automatically. If your workflow requires the client to log into their own dashboard to see the result of the fix, that is not something we cover today; what you can do on Pro is export a PDF with your name and color, or a plain CSV, and share it yourself.

How Rankiamos handles it

The product is step 4 of the method, not a shortcut around the first three.

🔍 Cannibalization detection

A Pro plan feature: when different URLs from your site have ranked for the same tracked keyword in its last 10 measurements, it flags a possible cannibalization, lists each URL with its best position and suggests consolidating. It works from your position history, not from Search Console.

📆 Daily checks and manual refresh

The Pro plan measures every day, and on either plan you can re-measure a keyword by hand once 6 hours have passed since its last check. That is the resolution you need on 301 day and through the four weeks that follow.

🔗 Search Console connected, on Free too

The Google Search Console integration is included from the free plan, no card required: up to 250 queries from the last 28 days with clicks, impressions, CTR and average position. It reports by query, not by URL, so the per-page diagnosis in this guide still happens in the Search Console Pages tab.

📄 Custom PDF for the report

On Pro, export a PDF with your name and your color, or a plain CSV, once before the 301 and again after: each export shows current positions, not the history. No custom logo in the PDF, so you know exactly what to expect before subscribing.

An honest close: no tool decides which URL survives or writes the merge for you. What a rank tracker does solve is the memory problem — having day-1 data when you are standing on day 30 — and the resolution problem, which is what separates real verification from a hunch. For everything that gets measured continuously, see the full product feature breakdown, and each plan's quota limits on pricing.

Try Rankiamos free

Free plan: 2 projects, 5 keywords, weekly check · iPhone · iPad · Mac · Apple Watch

Frequently asked questions

How do I know it is real cannibalization and not just two pages ranking for the same thing?
Two of your URLs showing up for the same query is not a problem on its own. It becomes cannibalization when three things happen at once: both pages answer the same search intent, they alternate over time (one week Google shows one, the next week the other), and neither one consolidates in the top 10. If instead an informational page and a commercial page hold two distinct positions steadily and both earn clicks, that is SERP coverage and you should leave it alone. The practical test: if the combined clicks of both URLs are lower than what you would expect from a single well-positioned page, and the average position of both keeps oscillating without settling, you have a real case worth fixing.
How long does Google take to consolidate after the 301?
The honest answer is that it depends on how often your site is crawled, not on a fixed deadline. On mid-sized sites with regularly updated content, the redirected URL usually drops out of the index for that query somewhere between week one and week three, and the signal consolidates on the winning URL over the second month. On small sites with little crawl activity it can take considerably longer. What you can speed up is discovery: request indexing for the winning URL in Search Console, update the sitemap, and fix the internal links that pointed at the page you are retiring. Four weeks is a reasonable horizon for a first read, not a guaranteed timeline. If the old URL is still indexed after six weeks, check that the 301 is actually being served and that there is no redirect chain in the middle.
Should I use a 301 redirect or a canonical tag?
It depends on whether the losing page still needs to exist for users. If it offers nothing the winner does not already have, the 301 is the clean choice: it removes the URL from the index, consolidates the signals, and stops it from competing again. A canonical makes sense when the page must stay reachable — a product variant, a print version, a campaign landing page still live on another channel — and you only want to tell Google which version is primary. One important difference: a canonical is a hint Google can ignore, while a 301 is an instruction it almost always honors. If your goal is to close the problem for good and the page has no business reason to stay alive, redirect it.
Can I detect cannibalization without Search Console?
You can suspect it, but you cannot confirm it with the same confidence. Without Search Console you have two options: run a site: search on your domain plus the exact phrase, which shows which of your URLs are eligible for that query but not which one actually ranks or with how many impressions; or check the history in a rank tracker and notice that the URL appearing in the top results changes from one week to the next. That second method is genuinely solid for diagnosis, and it is the one that best complements Search Console. But for the numeric rule that decides which URL survives you need clicks and impressions per page, and only the Pages tab in Search Console gives you that. Rankiamos also connects to Search Console for free, even on the Free plan, but its integration reports by query, not by page.
What do I do if the position got worse after four weeks?
Rule out the mechanical causes first: confirm the redirect returns a 301 and not a 302, that there is no chain of two or three hops, that the winning URL is not blocked in robots.txt, and that internal links no longer point at the redirected page. Second, check whether you lost content in the merge — it is common for the deleted page to have held a block, a table or a Q&A section that was exactly what Google was rewarding. Third, look at whether the drop is yours or the market's: if your competitors also moved during those weeks, it may be an algorithm update rather than your merge. If after checking all three the winning URL is still worse than the better of the two originals, reverting the 301 is a legitimate option, though it is worth giving it at least six weeks before making that call.
Is the Rankiamos Free plan enough to verify a cannibalization fix?
It works for the simplest case, and that deserves to be said plainly. The Free plan includes 2 projects, 5 keywords and a weekly automatic check, plus the Google Search Console connection. With that you can watch one cannibalized keyword through the month after the 301 and see the general trend. What you will not have is daily granularity, and during the week Google reprocesses the redirect that difference matters: four weekly measurements versus thirty daily ones changes how well you can pinpoint the day something shifted. If you are fixing cannibalization across several keywords at once, or you have to report back to a client, Pro is the right fit: daily checks, a manual re-check quota of 30 units a day instead of 13, and the possible cannibalization flag.
Should I delete the losing page or noindex it?
Deleting it without redirecting is the worst option: you lose every accumulated signal and create a 404 that external links may still point to. Between redirecting and noindexing, the rule is simple. If the content is already merged into the winning page, use a 301: you consolidate signals and close the issue. Noindex makes sense when the page must stay reachable for users arriving from another channel — an email link, a PDF, a campaign — but adds nothing in search. Keep in mind that noindex does not pass authority to the winning URL; it only removes the loser from the competition. And if you choose noindex, also pull that page from your sitemap and your internal links, or you will keep asking Google to crawl it.

Try Rankiamos free for 7 days.

The Free plan needs no card. The Pro trial runs through your Apple account; cancel before day 7 and you pay nothing.

iPhone iOS 17.0+
iPad iPadOS 17.0+
Mac macOS 14.0+