How to fix keyword cannibalisation
Keyword cannibalisation is two or more of your pages splitting one search. How to confirm it in Search Console, pick the page to keep, and merge safely.
- Goal
- Confirm or rule out cannibalisation on your most important searches, and fix the clearest case.
- You need
- Search Console data, and the ability to edit pages and set up redirects.
Keyword cannibalisation happens when two or more of your pages answer the same search, so Google splits its impressions between them and often alternates which one it shows. To fix it, confirm in Search Console that the pages really compete for the same need, choose the page to keep, then merge the others into it with a permanent redirect, mark true duplicates with a canonical, or rewrite the pages so each serves its own search.
Is it really cannibalisation?
Several of your URLs appearing for one search is common and often harmless. These are usually fine:
- Brand searches that show your home page, an about page and a login page.
- A broad search where a category page and a product page each serve part of the audience.
- Pages that serve different needs, such as a guide and a pricing page that both mention a feature.
- Translations of a page, each served to its own language.
It becomes a problem when the pages answer the same question for the same person. The tell-tale signs are pages that take turns in the results from week to week, and a search where neither page reaches the positions its content deserves.
Step 1: find candidate searches
In Search Console, open Performance → Search results → Queries, set three months, and click a search you care about. The report now filters to that query; open the Pages tab to see every URL of yours that appeared for it.
Flag the search when a second URL collects a meaningful share of the impressions of the top URL. AutoPSEO uses at least 10% of the top URL's impressions as its default, adjustable from 5% to 25%. That cut-off is a judgement call: lower it to catch early overlap, raise it to see only the serious cases.
Checking queries one at a time is slow, so start with the 20 to 50 non-branded searches that matter most to the business. For a full sweep you need query and page data together, which means an export through the API or a tool that does the grouping.
Step 2: check whether the pages take turns
For a flagged search, add a second filter so the report shows that query and one of the pages, and read the clicks and impressions chart by day. Then swap in the other page. If one page's impressions rise as the other's fall, Google is switching between them, which is the clearest sign of competition. If both lines run steadily side by side, the pages may simply serve different parts of the audience.
Also note each page's average position for the query. Two pages that both sit between 8 and 15 for a search that one strong page could rank higher for are the typical case worth fixing.
Step 3: choose the page to keep
Pick one page to be the answer to the search. Weigh, roughly in this order:
- Which one matches what the searcher wants? Look at the results page: if the top results are step-by-step guides, the guide beats the product page.
- Which one performs better? More clicks and a better position over three months.
- Which one has more links? The Links report shows external links to your pages; your own navigation and articles count too.
- Which one serves the business? A page that converts may be worth keeping even if it ranks slightly worse.
- Which address will last? Prefer a clean, permanent URL over a dated one such as
/blog/2023/....
Step 4: choose the fix
| Situation | Fix | Why |
|---|---|---|
| Two pages answer the same question | Merge the weaker into the stronger and redirect it permanently (301 or 308) | Google treats a permanent redirect as a strong signal that the target is the canonical |
| Variants of the same content that must exist, such as parameter or print versions | Add rel="canonical" on the variants pointing to the main URL | Also a strong canonical signal, and the variants stay reachable for visitors |
| Pages with different jobs that drifted into the same topic | Differentiate: rewrite titles, headings and sections so each targets its own search, and link between them | Each page becomes the clear answer to something different |
| An old page nobody needs | Redirect it to the closest relevant page, or remove it | Its signals move to the page that stays |
Google's guidance on consolidating duplicate URLs adds two warnings. Do not use robots.txt to choose a canonical, because blocked URLs can still be indexed without their content. And do not use noindex for it either, because noindex removes the page from Search entirely. Avoid temporary redirects (302 or 307) for a merge as well: Google does not treat them as a canonical signal (Redirects and Google Search).
Step 5: merge without losing what worked
- Move what is unique. Copy the sections, examples and data that only the weaker page has into the page you keep, rewritten so the result reads as one article.
- Redirect the old address to the kept page with a 301 or 308, and leave the redirect in place for good.
- Update your internal links so they point straight at the kept page. Google says internal links help it understand which URL you prefer.
- Clean the sitemap. List only the kept URL; drop the redirected one.
- Check the canonical. After the next crawl, URL Inspection should show the kept URL as the Google-selected canonical.
Step 6: watch the result
Annotate the date on the Performance chart. After four to eight weeks, open the query again and check its Pages tab: one URL should now take nearly all the impressions, and its position should be at least as good as the better of the two pages before. If the redirected page still appears, Google has not finished recrawling it; give it time rather than adding more changes.
A worked example
A small accounting software company finds three of its pages appearing for "how to write an invoice" over three months:
| Page | Impressions | Clicks | Position |
|---|---|---|---|
| /blog/how-to-write-an-invoice | 5,200 | 104 | 8.7 |
| /guides/invoice-basics | 3,900 | 39 | 11.3 |
| /templates/invoice-template | 700 | 7 | 18.0 |
The guide collects 75% of the blog post's impressions and the template page 13%, so both clear the 10% line. The daily chart shows the blog post and the guide trading places every few days. Both explain how to write an invoice, step by step: that is cannibalisation. The template page offers a downloadable template, a different need that happens to share the search.
The fix: merge the guide into the blog post, which ranks better and has more links, and redirect the guide's address to it. Keep the template page, make its title and heading clearly about templates, and link to it from the merged article with the anchor text "free invoice template". The search now has one clear answer, and the template page has a job of its own.
How AutoPSEO prevents it before writing
The cheapest cannibalisation to fix is the kind that never happens. AutoPSEO's content engine checks every topic against your site before anything is written (how topics are chosen):
- Coverage gate. Each topic is compared with an index of your site built from page titles, main headings, addresses and the searches each page already gets. If every meaningful word of the topic already belongs to one of your pages, the topic is refused as covered. Misspellings are forgiven ("parakit" is read as "parakeet") and word forms are folded together ("detectable" and "detected" count as one word), so a reworded search does not slip through.
- Ranking gate. A search your site already ranks for in the top three with an existing page is refused.
- Model review. Topics that pass are reviewed by a model that sees your five closest pages with their section headings and gives one verdict: write, covered, extend, duplicate or skip. "Extend" means one of the engine's own articles is about the subject but does not answer this question, so the question is added to that article as a new section instead of becoming a second page.
When two articles end up competing anyway, they can be merged through the MCP tool content_merge (your own AI). The weaker article is taken down, your site is told to answer its old address with a 301 to the page that stays, its open tasks are cancelled, and its topics count as the remaining page's from then on, so the engine never writes them again. A merge is permanent: the article cannot be put back live afterwards. The maintenance page explains how merges fit with refreshes.
For the rest of your site, the Cannibalization report runs steps 1 and 2 across all your searches for the last 7, 14 or 31 days, with a folder filter and your brand terms excluded, and Cannibalization Entropy measures how evenly each search is spread across your URLs. The free Cannibalization Checker runs the same test on an exported CSV.
Keep reading
SEO basics in 10 minutes: how Google finds, stores and ranks pages
The three stages of Google Search, the four Search Console numbers, and how to tell which stage a problem belongs to.
What is Google Search Console? A plain guide for site owners
What Search Console reports, how its data is limited, which property type to add, and the first checks to make.
Clicks vs impressions in Google Search Console
How Google counts impressions and clicks, why totals disagree between views, and how to read the gap between the two.