Blog · July 25, 2026
Keyword cannibalization: how to find it in your rank data and fix it
Keyword cannibalization happens when two or more of your own pages compete for the same query and the same intent, so Google keeps swapping which one it shows. The fastest way to find it is daily rank data: if the URL ranking for a keyword changes from one day to the next, you have it. The usual fix is to pick one page, merge the rest into it, and redirect.
See which of your URLs ranks today
Google rank checker
Live · checked today
Querying Google results…
Type any keyword and see today's top Google results (up to 10). Add your domain and we highlight where you rank. This is a live check of the positions the full product tracks for you daily.
- You
Track daily and get an alert the day it drops.
Live Google top 10 for any keyword, your domain highlighted. If two of your URLs show up, or a different one shows up than you expected, that is the signal this article is about.
Cannibalization is one of those SEO problems that gets diagnosed far more often than it exists. Two pages mentioning the same phrase is not cannibalization. Two pages that answer the same question, for the same kind of searcher, competing for the same query, is. The distinction matters because the standard fix is a merge and a redirect, and merging pages that were never really competing throws away rankings for no reason.
What is keyword cannibalization?
Keyword cannibalization is when several pages on one site target the same keyword and search intent, so they compete with each other in the results instead of one page accumulating all the relevance signals. Google picks whichever page it judges best for that query on that day, and the choice can change. Links, internal anchors, and engagement end up split across URLs rather than concentrated on one.
Two things it is not. It is not a penalty. Google does not have a cannibalization filter that demotes sites for owning several relevant pages. And it is not the same as covering a topic thoroughly across several articles, which is normal and good. The problem is duplicate intent, not duplicate vocabulary.
Is keyword cannibalization actually bad for SEO?
Sometimes, and less often than the average blog post claims. Google generally shows at most two results from one domain in the top 10 for a query, so having two relevant pages is not automatically wasteful. The cost shows up in three specific situations, and outside them the overlap is usually harmless.
- The wrong page ranks. Your blog post about a topic outranks the page that actually sells the thing. The query still converts, just at a much lower rate, and the position report looks fine.
- The ranking URL keeps changing. Neither page holds the spot long enough to build a stable history, and every reshuffle costs a little traffic while Google re-evaluates.
- Both pages are thin because you split one good page in half. Two 600 word posts that each half-answer the query rarely beat one 1,400 word page that answers it properly.
If none of those apply, leave it alone. Plenty of sites rank two pages in the top 10 for a head term and take both clicks. That is a good outcome, not a problem to fix.
How do you find keyword cannibalization?
Three signals, in the order of how quickly they give you an answer. The first two are free. The third is where rank tracking earns its keep, because it is the only one that shows the problem happening in real time rather than after the traffic is gone.
| Signal | Where to look | What it tells you |
|---|---|---|
| A site search for the query | Google: site:yourdomain.com "your keyword" | Which of your pages Google considers candidates. Fast, rough, free. |
| Pages per query in Search Console | Performance report, filter to one query, switch to the Pages tab | How many URLs have taken impressions for that query, and how the clicks split. |
| A changing ranking URL | Your rank tracker, if it stores the URL with each daily check | The live version of the problem: Google switching between your pages day to day. |
Search Console is the workhorse here, with one caveat worth knowing: its average position for a query blends every URL that ranked, so two pages trading places show up as one mushy average that looks stable. We unpack that gap in Search Console average position versus a rank tracker. Use the Pages tab, not the average, when you are hunting for this.
What does cannibalization look like in daily rank data?
It looks like a position that barely moves while the URL underneath it keeps changing. Here is an illustrative example, made up to show the pattern, for a store tracking one commercial query.
| Day | Position | Ranking URL |
|---|---|---|
| Monday | 7 | /guides/how-to-choose-x |
| Tuesday | 9 | /products/x |
| Wednesday | 8 | /products/x |
| Thursday | 11 | /guides/how-to-choose-x |
| Friday | 7 | /products/x |
Read the position column alone and nothing is wrong: a keyword drifting between 7 and 11 is an ordinary week. Read the URL column and the diagnosis is obvious. Google cannot decide which page answers the query, and on two of the five days it served the guide to a searcher who was ready to buy. This is why keyword position tracking that records the ranking URL with each check is worth more than one that stores a number, and why a weekly sample tends to miss the pattern entirely: with five readings a month, a flip-flop looks like noise.
How do you fix keyword cannibalization?
Decide which page you want to rank first, then pick the lightest fix that gets you there. Merging is the strongest option and also the least reversible, so it is not always the right first move.
| Situation | Fix | Watch out for |
|---|---|---|
| Two thin pages saying the same thing | Merge the useful parts into one page, 301 the loser to it | Keep the surviving URL if it has the links. Redirect to the closest match, never to the homepage. |
| Both pages are good but serve one intent | Keep both, 301 or canonical the weaker one, or reangle it at a genuinely different query | A canonical is a hint, not an order. If Google ignores it, you need the redirect. |
| A blog post outranks the money page | Retitle and reoptimize the post around the informational angle, link from it to the money page with the commercial anchor | Do not gut the post. It earned the ranking, and you want to keep the traffic and pass it on. |
| One page, many near-duplicate location or feature variants | Consolidate into one page with sections, or make each variant substantively different | Thin templated variants are the version of this problem that also trips the helpful content guidance. |
Whichever you choose, fix your internal links in the same pass. Internal anchor text is one of the clearest signals you control about which page owns a query, and sites with this problem usually have a dozen old posts pointing the target phrase at the wrong URL. Change those anchors to point at the page you picked.
How long does it take to recover after fixing it?
Expect a few weeks, not a few days. Google has to recrawl both URLs, process the redirect, and reassign the signals, and the ranking usually wobbles before it settles. Two to six weeks is the normal range for a merge on a site that gets crawled regularly. Large sites and rarely crawled pages take longer.
This is the part where daily tracking pays for itself, because a merge is a change you made on a known date, and you want to see exactly what happened afterward. Track the query before you touch anything, note the date of the merge, then watch both the position and the ranking URL. If the surviving page climbs past where either page used to sit, the merge worked. If it lands below both, the redirect went to the wrong target, and you will want to know that in week two rather than in next quarter's report. A daily rank tracker with drop alerts turns that from a hunch into a dated record.
How do you prevent keyword cannibalization?
With a keyword map: a single document that assigns one primary keyword and one intent to every URL, checked before anyone writes a new page. Most cannibalization is created by a content calendar that treats keywords as article titles rather than as page assignments, so the same intent gets commissioned twice a year apart by two different writers.
Building that map is mostly a clustering job: group the queries that would be satisfied by the same page, pick the highest-volume term in each group as the primary, and give the group one URL. If you are starting from a raw keyword export, clustering the list into topic groups before writing will prevent more cannibalization than any audit fixes after the fact. Then track the primary keyword for each URL so the map stays honest, which is what SERP tracking across a full keyword set is for.
One last check worth building into your routine. When traffic to a page falls and its position looks unchanged, cannibalization is one of the three usual suspects, alongside an AI Overview taking the click and a SERP layout change pushing you below the fold. We walk through separating those in traffic dropped but rankings stayed the same, and the broader diagnostic order is in why did my Google rankings drop.