Keyword cannibalization: find it in Search Console and fix it
Keyword cannibalization is two of your pages competing for one query. Spot it in Search Console, then merge with a 301, differentiate, or re-point links.
LLaunchScaler·Published ·7 min read
Keyword cannibalization is when two or more of your own pages answer the same search intent and compete for the same query, so neither ranks as well as one page would. You find it in Google Search Console by filtering the Performance report to one query and opening the Pages tab: two URLs trading impressions for that query is the sign. The fix is one of three: merge the pages with a 301 redirect, differentiate them, or point your internal links at the one page you want to rank.
Not every overlap needs fixing, though. Pages with different purposes often appear for the same words, and that can be fine. This guide shows how to tell the two apart and apply the right fix.
What is keyword cannibalization?
Keyword cannibalization is a site competing with itself: two of your pages target the same searcher with the same answer, so Google has to choose between them, and its choice can change from week to week. Clicks, links and relevance that could have gone to one strong page are split between two weaker ones.
A typical example on a SaaS blog: a post titled "How to export Search Console data" from last year and a newer post, "Search Console export guide," both explaining the same steps. Both appear for "search console export," each sometimes in position 8 and sometimes in position 15, and neither reaches the top. One better page would serve the searcher and hold its place.
It usually happens gradually: a topic gets written about twice by different people, a product page and a blog post drift toward the same explanation, or a content plan targets keyword variants instead of intents. Turning Search Console queries into a content plan covers how to plan one page per intent so it does not happen in the first place.
How do you find keyword cannibalization in Search Console?
Find it by checking which of your pages appear for each important query. In the Performance report, click a query on the Queries tab to filter the report to it, then open the Pages tab. If more than one of your URLs has impressions for that query, compare them over time to see whether they are swapping places.
Open Performance, then Search results, and set the date range to the last 3 months.
Questions, answered
What people ask about this
01
What is keyword cannibalization in SEO?
It is when two or more pages on your own site answer the same search intent, so they compete for one query. In Search Console it shows as two URLs taking turns appearing for that query, with neither holding a steady position.
On the Queries tab, click the query you want to check. The whole report filters to it.
Open the Pages tab. Google's help describes this step as the way to see which pages from your site were shown for a given query.
If two or more URLs have impressions, note both.
Add a comparison on the Page dimension, URL A against URL B. Search Console lets you compare two values in any one dimension, including page, and adds a Difference column to the table.
Set the chart to Weekly and look at impressions and average position. Two lines that take turns rising and falling, with neither holding steady, is the cannibalization pattern.
Two data details matter here. With the Pages tab selected, data is aggregated by page, so each URL's position is its own topmost position for the query. And Search Console credits clicks on a duplicate URL to its canonical URL, so if you have already set a canonical, the duplicate's data rolls into it.
To check many queries at once, pull query and page pairs from the Search Analytics API with "dimensions": ["query", "page"], then count how many distinct pages each query has. Queries with two or more pages and meaningful impressions are your review list. Striking distance keywords shows the same export method for a different purpose.
Is every keyword overlap a problem?
No. Two pages appearing for the same query is only a problem when they answer the same question. Pages with different intents can share words and still each be the right answer for part of the searchers: someone typing your product name plus "pricing" might want your pricing page or a comparison, and showing both can help.
Use the intent test before you change anything:
Situation
Same intent?
Problem?
Two blog posts explaining the same steps
Yes
Yes: merge
An old post and its updated version, both live
Yes
Yes: redirect the old one
A how-to guide and a product feature page for the same task
No: learn vs buy
Usually no; make each page's purpose clear
A pricing page and a "pricing explained" post
Partly
Sometimes; differentiate the post's angle
A hub page and one of its spokes
No: overview vs detail
No, if the hub links to the spoke with the query's wording
If one of the pages ranks steadily in the top three and the other rarely appears, there is usually nothing to fix. Cannibalization costs you something when it keeps both pages stuck below where one would be.
How do you fix keyword cannibalization?
Fix it in one of three ways, chosen by how much the pages overlap. Merge them with a 301 redirect when they answer the same question. Differentiate their titles and angles when their intents are different but too close. And in every case, point internal links that use the query's wording at the page you want to rank.
Merge with a 301 when the pages answer the same thing
Merge when both pages answer the same question for the same reader. Choose the stronger page, usually the one with more impressions, more links and the better URL, and move anything useful from the weaker page into it. Then redirect the weaker URL to the stronger one with a permanent server-side redirect.
Google's documentation says a permanent redirect (HTTP 301 or 308) is a signal that the redirect target should be canonical, and that a server-side redirect has the highest chance of being interpreted correctly. Its canonical documentation ranks redirects and rel="canonical" as strong signals and sitemap inclusion as a weak one, and notes the signals stack. After the redirect:
Update internal links to point straight at the kept URL, not through the redirect.
Remove the old URL from your sitemap.
Keep the redirect in place permanently.
Use rel="canonical" instead of a redirect only when both pages must stay reachable, for example a printable version. Google warns against using robots.txt for canonicalization, since it may still index disallowed URLs without their content.
Differentiate when the intents differ
Differentiate when the pages serve different purposes but read too alike. Give each a title and first paragraph that state its own purpose, cut the sections that duplicate the other page, and link between them so each one covers its part and sends readers to the other for the rest.
For example, turn a feature page and a how-to post that both "explain exports" into a feature page about what exports include and who they are for, and a how-to post with the exact steps and settings. Each links to the other with anchor text that names what the reader will find there. The content refresh strategy covers how to rewrite a page's angle without losing the queries it already ranks for.
Point internal links at one page
Point every internal link that uses the query's wording at the page you want to rank. Google's link guidance says anchor text tells people and Google what the linked page is about and should be descriptive; if half your links say "search console export" and point at page A while the other half point at page B, you are telling Google both answer it.
Search your site for the query's main phrase (for example with site:yourdomain.com "search console export", or in your CMS).
For each link using that phrase as anchor text, change the target to the chosen page.
Where the other page is linked, give that link anchor text that describes its own angle instead.
Check in the same report four to eight weeks after the change. Filter to the query, open the Pages tab, and confirm that one URL now carries the impressions. Then compare that page's impressions, clicks and average position for the query against the period before the fix, using the Weekly view to smooth out day-of-week swings.
If both URLs still appear after a merge, inspect the old URL in URL Inspection to confirm the redirect is live and that Google has picked the kept page as canonical. If a differentiated pair still trades places, their titles or opening paragraphs are probably still too similar.
Plan one page per intent from the start
LaunchScaler's content engine plans a month of articles from your own Search Console queries, "the searches you already rank for just off page one," grouped into a handful of subjects your product owns, so each article has its own place on the calendar. It writes one article a day from your product, and by default every draft waits for your review before it publishes, which is the point to check a draft against pages you already have. Approved drafts go to WordPress, Webflow, Ghost, Shopify, Notion, Medium or a signed webhook. It is $99/mo per website, 3 days free. Start the engine and plan by intent instead of by keyword.
In Search Console's Performance report, click the query on the Queries tab to filter the report to it, then open the Pages tab. If two or more of your URLs have impressions, compare them over time; URLs that swap impressions week to week are the sign.
03
Is it always bad when two pages rank for the same keyword?
No. Pages with different intents can share words, such as a pricing page and a how-to guide that both mention the product, and both can be useful for the query. It is a problem only when the pages answer the same question.
04
How do you fix keyword cannibalization?
Merge the pages with a 301 redirect when they answer the same thing, differentiate their titles and angles when the intents differ, and point internal links that use the query's wording at the one page you want to rank.
05
Is there a keyword cannibalization checker?
Search Console is the free one: filter by query and read the Pages tab, or pull query and page pairs from its API and look for queries with more than one page. Some paid SEO suites include a cannibalization report, such as Surfer on its Pro plan.
Any Notion plan can make a Site indexable, but titles, descriptions and custom domains need a paid plan, and no schema or robots.txt setting is documented.
Programmatic SEO builds many pages from one dataset; editorial answers one question per page. Start editorial, and add programmatic where you own data.