Keyword cannibalization is when two or more pages on your site try to answer the same search, so Google keeps switching between them and neither ranks as well as one strong page would. You find it in Search Console by opening a query and checking how many of your URLs get impressions for it. You fix it by merging the pages with a 301 redirect, pointing duplicates at one version with a canonical, or rewriting one page so it serves a different intent.
The bigger risk is fixing something that is not broken. Plenty of sites have several pages that appear for the same query and are doing fine.
What it is, and what it is not
Cannibalization is a real problem when all of these are true:
- Two or more of your pages target the same query and the same intent.
- Google alternates between them over time, so the ranking URL changes from week to week.
- Neither page ranks as well as you would expect, or the "wrong" page ranks (an old blog post instead of the service page).
It is not cannibalization when:
- Two of your pages rank together in the top results. That is more space on the results page, not a problem.
- Pages share a word but not an intent. "Roof repair cost" and "roof repair contractor in Denver" sound alike but answer different questions.
- A page appears once in a while for a loosely related query. Search Console shows every page Google tested, including brief appearances.
Google's John Mueller made the same point in a reply about cannibalization that Search Engine Journal covered in September 2025: "Search Console shows data for when pages were actually shown, it's not a theoretical measurement," and "IMO it's not really 'cannibalization' if it's theoretical." His advice: "Reduce unnecessary duplication and spend your energy on a fantastic page" (Search Engine Journal on Mueller's answer).
So the test is practical: is the split costing you clicks? If not, leave it alone.
How to detect it in Search Console
The Performance report lets you go from a query to the pages that appeared for it (Search Console Help: Performance report).
- Open Performance > Search results and select clicks, impressions, CTR and position.
- Set the date range to the last 3 months.
- In the Queries tab, click a query that matters to your business. This filters the report to that query.
- Switch to the Pages tab. Every URL listed got impressions for that query.
- Note impressions, clicks and average position for each URL.
What the result tells you:
| What you see | What it means |
|---|---|
| One URL with nearly all impressions | No problem |
| Two URLs, both in the top 5 | Usually fine; you hold two spots |
| Two or more URLs with similar impressions and positions around 8 to 30 | Likely cannibalization |
| The wrong URL ranks (old post instead of product or service page) | Likely cannibalization; signals point at the wrong page |
To see whether the ranking URL keeps switching, compare two periods. Search Console supports date comparisons and RE2 regex filters on queries and URLs, which helps when you want to check a group of related queries at once, for example ^(crm|customer relationship).*(agency|agencies) (Search Console Help: advanced filtering and comparison).
Do this for your 20 most valuable queries rather than every query. Low-volume queries produce noisy page lists that look like problems and are not.
Four ways to fix it
Pick the fix based on whether both pages need to exist.
| Situation | Fix |
|---|---|
| Two pages say much the same thing; one is weaker | Merge the content, 301 the weaker URL |
| Near-identical pages that must both exist (variants, print versions, tracking URLs) | rel="canonical" to the main version |
| Pages overlap but could serve different intents | Rewrite one to a distinct intent |
| Right page exists but signals point at the wrong one | Fix internal links |
1. Merge and 301 redirect
This is the most common fix and usually the best one. Take the useful parts of the weaker page, add them to the stronger page, then redirect the weaker URL to the stronger one with a permanent (301 or 308) server-side redirect.
Google says permanent redirects tell it "a page has permanently moved to a new location", and the indexing pipeline uses the redirect as a signal that the target should be canonical. It recommends a permanent server-side redirect "whenever possible", and only falls back to meta refresh or JavaScript when the server cannot do it (Google: redirects and Google Search). Use permanent redirects only when you are sure you will not reverse them.
After the merge:
- Update internal links so they point straight at the new URL instead of going through the redirect.
- Remove the old URL from your sitemap.
- Keep the redirect in place. Links from other sites and bookmarks still use the old address.
2. Use a canonical for duplicates that must exist
Sometimes both URLs have a reason to exist: a product available at two paths, a filtered category page, a URL with tracking parameters. Here a canonical tag tells Google which version you prefer.
Google lists three main methods, strongest first: redirects ("a strong signal"), rel="canonical" link annotations ("a strong signal"), and sitemap inclusion ("a weak signal"). The methods stack and work better combined. Google also says not to use robots.txt for canonicalization (Google: consolidate duplicate URLs). The point of choosing a canonical is "to consolidate signals for similar or duplicate pages".
A canonical is the wrong tool for two different articles on the same topic. Google treats a canonical as one signal among several, so for genuinely different pages it is a weak fix; if the pages are the same, merge them.
3. Differentiate the intent
If both pages are useful but blur together, give each one a clear job. Common splits:
- Informational vs commercial: "what is a fractional CFO" vs "fractional CFO services for startups in Austin".
- Beginner vs advanced: "how to start cold email" vs "cold email deliverability checklist".
- Different audiences: "bookkeeping for restaurants" vs "bookkeeping for construction companies".
Then rewrite each page's title, <h1>, opening paragraph and examples to match its own intent, and link the two pages to each other with descriptive anchor text so readers (and Google) can see the difference.
4. Fix internal links
Your own links tell Google which page matters for a topic. Google uses link text to understand the target page and recommends descriptive, concise anchor text (Google: link best practices). In a 2019 hangout about URL signals, Mueller called internal linking "kind of a stronger signal, in that that's something that's under your control" (Search Engine Roundtable).
If your blog posts link to an old article with the anchor "pricing guide" while your real pricing page gets few internal links, Google gets a mixed message. Search your site for links using your target phrase as anchor text and point them at the page you want to rank.
How to avoid it: a keyword map
Cannibalization usually comes from publishing without a record of what each page targets. A keyword map is a simple sheet with one row per page:
| URL | Target keyword | Intent | Status |
|---|---|---|---|
| /services/bookkeeping | bookkeeping services for small business | Commercial | Live |
| /blog/bookkeeping-vs-accounting | bookkeeping vs accounting | Informational | Live |
| /blog/bookkeeping-checklist | monthly bookkeeping checklist | Informational | Draft |
The rules:
- One target keyword per page, one page per target keyword. Close variants ("bookkeeping service", "bookkeeping services") belong to the same page.
- Check the map before you write. If the keyword is taken, update the existing page instead of writing a new one.
- Record the intent. Two keywords with the same intent usually belong on one page.
- Review quarterly against Search Console, using the query-to-pages check above.
This is the same rule we follow on this blog: each article has one target query, and articles on nearby topics link to each other instead of competing. For example, this article targets cannibalization, while high impressions and low CTR covers the broader CTR problem it can cause, and our no-ads traffic plan covers where new topics come from.
A quick audit you can do this week
- List your 20 most valuable queries from Search Console.
- For each, open the Pages tab and note every URL with meaningful impressions.
- Mark the queries where two or more URLs split impressions at positions worse than about 8.
- For each marked query, choose merge, canonical, differentiate or internal links using the table above.
- Make the changes, write down the date, and compare 28 days before and after.
Outvori's SEO articles start from your brand profile and add internal links between related pieces, so you can keep one target keyword per article, and the published-page view shows Search Console clicks and positions once you connect Google. See pricing for plans, or scan your website free to see the topics Outvori would suggest for your site.
Frequently asked questions
Is keyword cannibalization a real problem?
Sometimes. It hurts when several of your pages compete for the same query and intent and none ranks well. When two of your pages rank together near the top, or pages only share a word, it is not a problem worth fixing.
How do I check for keyword cannibalization in Google Search Console?
In the Performance report, click a query in the Queries tab, then open the Pages tab. If several URLs get similar impressions at mediocre positions, or the ranking URL changes between periods, you likely have cannibalization.
Should I use a canonical tag or a 301 redirect?
Use a 301 when one page should replace the other and visitors no longer need the old URL. Use a canonical when both URLs must stay accessible, such as product variants or tracking URLs, and the content is essentially the same.
Can two pages rank for the same keyword?
Yes. Google can show two results from your site for one query, and Search Console counts them as a single impression in the chart total (Performance report help). That is a good outcome, not cannibalization.

