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.
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
| 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.
| 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.
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? ▾
How long does Google take to consolidate after the 301? ▾
Should I use a 301 redirect or a canonical tag? ▾
Can I detect cannibalization without Search Console? ▾
What do I do if the position got worse after four weeks? ▾
Is the Rankiamos Free plan enough to verify a cannibalization fix? ▾
Should I delete the losing page or noindex it? ▾
Read also
Connect Google Search Console to a rank tracker
What each tool tells you, where they contradict each other, and how to read both reports together without losing your mind.
Tactical guideFrom positions 11-20 to page one
The other scenario: one URL stalled on the edge of the top 10. Different cause, different levers.