Fixing Keyword Cannibalisation Between Your Own Pages
Keyword cannibalisation happens when two or more pages on your own site chase the same search, so Google keeps switching between them and neither settles into a strong position. Site owners usually notice it as a ranking that jumps about for no obvious reason, or a blog post outranking the service page that actually takes bookings.
This guide shows how to prove the overlap with real data rather than guesswork, decide which page should own the search, and then merge, split or retire the others without throwing away links, traffic or conversions you already have.
- What cannibalisation looks like from the outside
- Why sites end up competing with themselves
- Reading the evidence properly
- Choosing which page keeps the search
- The fix, step by step
- Platform-specific causes and settings
- Edge cases where the usual advice is wrong
- Stopping new clashes from appearing
- Questions and answers
What cannibalisation looks like from the outside
Most people meet cannibalisation as a mystery rather than a finding. Typical signs in a small business site:
- A search you care about sits on page two for months, even though you have written about it several times.
- The page Google shows for your main service is an old blog post, a tag archive or a news item instead of the service page.
- Position for a search swings by several places from week to week, and when you check, a different URL is showing each time.
- You publish a new, better page on a subject and the old one keeps ranking instead.
- Clicks for a topic are spread thinly across four or five URLs, each with a poor click-through rate.
The Keyword Analysis & Gap Tool flags cannibalisation when it maps your ranking keywords and finds more than one of your URLs attached to the same search. That flag is a lead to investigate, not a verdict. Some overlaps are healthy, and some apparent overlaps are really technical duplicates (the same page reachable at two addresses), which need a different fix entirely.
Cannibalisation versus duplicate URLs
If the two URLs show the same content, for example /boiler-servicing and /boiler-servicing?ref=footer,
or the http and https versions, that is a duplicate URL problem. It is solved
with canonical tags and redirects, and the duplicate
content guide covers it. This guide is about two different pages, written separately, that
end up aiming at the same search.
Why sites end up competing with themselves
Cannibalisation is almost never one bad decision. It builds up over years of reasonable-sounding publishing. The usual routes in:
| How it starts | Example | What it tells you about the fix |
|---|---|---|
| Blogging on the same theme every year | "Garden design ideas 2023", "2024" and "2025" posts on a landscaper site | One evergreen page, updated yearly, with the older posts merged in |
| A blog post written to support a service page that ended up copying it | A post called "Why choose professional boiler servicing" next to the boiler servicing page | Give the post a different question to answer, or fold it into the service page |
| Archive pages built by the CMS | A WordPress tag called "boiler servicing" whose archive page lists every related post | Stop the archive from being indexed rather than rewriting posts |
| Near-identical location or product variants | Eight town pages with the same text and a swapped place name | This overlaps with doorway-page risk; see the local keywords guide |
| Several people writing without a shared list | Two staff members each writing a "how to choose a wedding photographer" article | A keyword-to-page register so every search has one owner |
| A site redesign that kept old pages alive | The old /services.html and the
new /services/ both live | Redirect the legacy page; this is a migration clean-up |
Knowing which route caused a pair of competing pages matters, because the same route will produce the next pair unless you close it. The prevention section at the end returns to this.
Reading the evidence properly
Search Console is the only source of real query data for your own site, and it is where the decision should rest. Third-party rank trackers, including keyword tools, sample results at one moment from one location; Search Console records what actually happened across all impressions.
Look at pages per query, then queries per page
Filtering the Performance report to one query and opening the Pages tab shows which URLs earned impressions. Do it the other way round too: filter to each competing page and open the Queries tab. If page A gets most of its impressions from the target search while page B only touches it occasionally, B is not really a competitor. If both pages draw heavily on the same handful of searches, they are.
Use a regular expression for families of searches
Searches rarely arrive in one exact form. The query filter accepts Custom (regex), which lets you group variants together. For a boiler servicing business, a filter such as this catches the whole family:
boiler (service|servicing)|service (my|a) boiler|annual boiler check
Search Console uses the RE2 flavour of regular expressions, and a pattern matches anywhere in the
query unless you anchor it with ^ and $. Queries appear in lower case in the
report, so write the pattern in lower case too.
Compare periods, not a single snapshot
The clearest sign of harmful cannibalisation is URL flipping: page A takes the impressions one month, page B the next. Use the date comparison (for example the last three months against the previous three) and look at whether the leading URL changes. A stable split where each page keeps its own share for months is much less worrying than a see-saw.
Check what the results actually show
Search the phrase in a private window. If both of your pages appear on page one, you may be getting two listings, which is not a problem at all. If neither appears on page one while weaker competitors do, and Search Console shows both of yours hovering on page two, the overlap is probably holding both back.
Choosing which page keeps the search
The page that should own a search is not always the one that currently ranks best. Score each competing page on the same handful of questions before you touch anything. A simple spreadsheet row per page works well:
| Question | Where to find the answer | Why it matters |
|---|---|---|
| Which page matches what searchers want? | The current first page of results for the search | A sales page cannot win a search where Google shows guides, however strong it is |
| Which page has links from other sites? | Search Console Links report, or a backlink tool | External links are the hardest thing to replace; keep the URL that has them, or redirect it carefully |
| Which page converts? | Analytics goals, enquiry form sources, sales by landing page | A page that brings in enquiries is worth protecting even if it ranks slightly lower |
| Which URL is cleaner and more permanent? | The address itself | /boiler-servicing/
ages better than /blog/2023/05/boiler-tips-v2 |
| Which page is the better piece of work? | Read both as a customer would | The kept page should be the one you would be proud to send a customer to |
When the answers conflict, intent and links usually decide it. If the best content sits on a weak URL and the strong URL has poor content, keep the strong URL and move the good content onto it. Content is easy to move; links and history are not.
The fix, step by step
Step 1
Pull the query and page pairs from Search Console
Open the Performance report for the last three months and export it, or use the Search Console API or the Looker Studio connector for bigger sites so you get query and page together in one table. Keep rows where two or more of your URLs share the same search. Add the Keyword Analysis & Gap Tool cannibalisation findings as a second list, then merge the two so each suspected clash appears once, with clicks, impressions and average position for every URL involved.
Step 2
Confirm the overlap is harmful
For each clash, compare two date ranges and note whether the leading URL changes between them. Then search the phrase in a private window. Two of your pages on page one together is a good outcome, so leave it alone. Mark a clash as harmful only when the URLs take turns, when both are stuck below the first page, or when the wrong page type is showing for a search that should lead to an enquiry or sale.
Step 3
Choose the page that will own the search
Score each competing URL on intent match, external links, conversions, URL quality and
content quality. Pick one owner per search and write it in a keyword register, a sheet with one row per
target search and exactly one URL beside it. Where the best content lives on the weaker URL, record that
too, because you will move the content rather than the address. Check the owner returns a 200
status and is indexable before going further.
Step 4
Decide between merging and splitting
Merge when a customer could not explain how the two pages differ, or when both answer the same question for the same reader. Split when each page has a real, separate job, such as a service page for booking and a guide explaining costs, but the wording has drifted together. Splitting means giving the secondary page a new target search that it can own outright, with its own title, heading and angle, and never repeating the owner page wording.
Step 5
Move the useful content across
For a merge, copy anything valuable from the losing page into the owner: unique facts, worked examples, photos, customer questions and any section that earns its own impressions in Search Console. Rewrite rather than paste, so the owner reads as one coherent page and not two glued together. Drop outdated or repeated passages. Keep the owner page title and main heading focused on the chosen search, and update the visible last-updated date only if the changes are substantial.
Step 6
Redirect or re-aim the losing page
For
a merge, add a permanent 301 redirect from the losing URL straight to the owner, not via
any other redirect, and remove the losing page from your XML sitemap. For a split, keep the page live
but rewrite its title, main heading, introduction and meta description around its new search. Avoid a
noindex tag as the main fix on a page with links, and do not point a canonical at a page
whose content differs.
Step 7
Repoint internal links and anchor text
Crawl the site or search your CMS for every link to the losing URL and change it to point directly at the owner. Then look at the words used in links: if menus, footers and blog posts all link to the secondary page with the target phrase as anchor text, they are telling Google that page is about the search. Use the target phrase for links to the owner and descriptive, different wording for links to the secondary page.
Step 8
Measure the result over six to eight weeks
Request indexing for the owner page with URL Inspection in Search Console and note the date of the change in your register. Then leave it alone. Rankings often wobble for a few weeks after a merge while Google processes the redirect and recrawls linked pages. After six to eight weeks, compare clicks, impressions and position for the query family against the same period before, looking at the owner URL only.
Platform-specific causes and settings
WordPress
- Tag and category archives. A tag with the same name as a service creates an archive
page that competes with it. In Yoast SEO, Rank Math or All in One SEO you can set tag archives to
noindexsite-wide. That is appropriate here because archives are listings, not content you wrote for a search, and nothing of value is lost. - Redirects. The Redirection plugin, or the redirect managers in Rank Math and Yoast Premium, handle 301s without editing server files. Check that a plugin is not also creating an automatic redirect when you change a slug, or you may end up with a chain.
- Focus keyword warnings. Some SEO plugins warn you when a focus keyword has been used before. It is a useful prompt, but it checks a text field, not real ranking data, so treat it as a reminder rather than a diagnosis.
Shopify
- Collection versus product. A product named "Oak Dining Table" and a collection named "Oak Dining Tables" often compete. Usually the collection should own the plural, browsing search and the product the specific model search.
- Blog posts versus collections. A buying guide that repeats the collection title will clash with it. Give the guide a question to answer, for example how to choose a table size, and link it to the collection.
- URL redirects. Shopify admin has a URL Redirects section under Navigation settings, and deleting or renaming a product offers to create one. Redirects there are 301s.
Custom and static sites
Add redirects at the server. On Apache, one line per URL in .htaccess is enough:
Redirect 301 /blog/boiler-service-tips /boiler-servicing/
On Nginx, use an exact-match location:
location = /blog/boiler-service-tips { return 301 /boiler-servicing/; }
Remove the old file from the build so it cannot be reached by another route, and regenerate the sitemap.
Edge cases where the usual advice is wrong
- Two listings on page one. If Google shows both of your pages near the top, you are taking more of the page than a competitor. Do not merge them just because a tool flagged the overlap.
- Mixed-intent searches. Some searches show guides and shops together. A guide and a product page from the same site can both deserve to be there. Split and differentiate rather than merge.
- Pages with different audiences. A trade page and a consumer page about the same product may share words but serve different buyers. Make the difference obvious in titles and headings rather than removing either.
- Seasonal and news pages. An event page for this year and last year will overlap. Keep one evergreen URL and update it each year, or redirect the old edition to the new one once the event has passed.
- Canonical tags between different pages. A canonical is a hint that two pages are the same. If the content clearly differs, Google often ignores it, so it is not a reliable way to make one of two different pages disappear.
- Deleting without redirecting. Returning
404or410for a page that has external links throws those links away. Only delete outright when the page has no links, no traffic and no sensible place to redirect to.
Stopping new clashes from appearing
The keyword register from step 3 is the single most useful prevention tool. Before anyone writes a new page, they look up the target search. If it already has an owner, the new piece either improves that page or picks a different search.
- Add a "target search" and "owner URL" field to your content brief template, and check it at sign-off.
- Refresh evergreen pages instead of publishing a new dated version of the same topic each year.
- Keep tag archives out of the index unless you have deliberately written them as landing pages with their own content.
- Re-run the Keyword Analysis & Gap Tool after large publishing pushes, redesigns and migrations, when new clashes are most likely.
- Review Search Console for URL flipping on your top twenty searches every quarter.
Once the right page owns each search, the next question is whether it is the right kind of page for that search at all. The search intent guide covers that check, and fixing anchor text goes further into internal link wording.
1. Is keyword cannibalisation a Google penalty?
No. There is no penalty for having several pages about similar subjects. The problem is practical rather than punitive: when two of your pages look equally relevant, Google has to choose between them, the choice can change from week to week, and links and engagement are split rather than concentrated on one strong page. The outcome is often that neither page ranks as well as a single, clearly focused page would. Fixing it is about clarity, not about avoiding punishment.
2. Should I use a canonical tag or a 301 redirect to fix cannibalisation?
Use a 301 redirect when you merge two pages, because the losing page no longer needs to exist and the redirect passes visitors and most link signals to the page you kept. A canonical tag is meant for pages that are the same or nearly the same, such as a product reachable at two addresses. When two pages clearly differ, Google often ignores a canonical between them, so it is not a dependable way to hide one of two separate pages.
3. Can I just noindex the weaker page?
You can, but it is rarely the best answer. A noindexed page drops out of search, yet it still collects links, and over time Google tends to treat long-term noindex pages as though their links are not followed either, so the value of those links is lost. If the page still helps visitors, keep it and give it a different target search. If it adds nothing, merge it into the stronger page and redirect it instead.
4. How long does it take for rankings to recover after merging pages?
Expect a few weeks of movement before things settle. Google needs to recrawl the old URL, see the redirect, recrawl the page you kept and reprocess the internal links pointing at both. On small sites with few changes this can happen within a couple of weeks; on larger sites it can take longer. Compare six to eight weeks after the change with the same period before it, and avoid making further changes to the same pages while you wait.
5. Two of my pages rank on page one for the same search. Is that a problem?
Usually not. Holding two positions on the first page takes space from competitors and gives searchers two routes to your site. It only becomes a problem if the wrong page is on top, for example a blog post above the page that actually takes bookings, or if the two keep swapping places. In that case adjust titles and internal links to make clear which page should lead, rather than removing one of them.
6. Does cannibalisation affect small sites with only a few pages?
Yes, and it can be more noticeable there. A small site might have a homepage, a services page and a blog post all describing the same main service in almost the same words. With so few pages, each one needs a distinct job: the homepage introduces the business, each service page targets its own service search, and blog posts answer questions around those services. Giving each page a separate target search usually fixes it without deleting anything.
7. What should I do with an old blog post that competes with my service page?
First check whether it earns links or traffic for searches the service page does not cover. If it does, rewrite it to answer a specific question, such as costs or how to prepare, change its title and main heading to match, and link from it to the service page. If it only repeats what the service page says, move anything useful into the service page, redirect the post there with a 301 and update internal links.
The Keyword Analysis & Gap tool maps your ranking keywords against your competitors and finds cannibalisation, where more than one of your pages is chasing the same search, alongside intent mismatches and gap opportunities.
Open Keyword Fixes โ