These two problems get treated as one thing. They are not, and the confusion wastes a lot of time, because the way you detect them and the way you fix them are completely different.
Duplicate content is the same or near-identical text appearing at more than one URL. It is a technical problem with a technical fix.
Keyword cannibalisation is several of your pages competing for the same query, even when the pages are entirely different. It is a strategy problem with an editorial fix.
A site can have one without the other. Most sites with a few hundred pages have cannibalisation and almost no duplicate content, and spend their effort on the wrong one.
There is no duplicate content penalty
Worth clearing up first, because it drives a lot of unnecessary anxiety.
Google does not penalise sites for duplicate content. There is no filter that demotes you for having the same text twice. What actually happens is simpler and still costs you:
- Google picks one version to index and ignores the others
- The version it picks may not be the one you want
- Link signals get split across versions instead of consolidating
- On large sites, crawl budget is spent fetching copies
So the cost is real, but it is dilution rather than punishment. That distinction matters because it changes the urgency and the fix.
Finding duplicate content
Three common sources, in order of frequency.
URL variants of the same page. The classic set: with and without www, http and https, trailing slash and not, uppercase and lowercase, with and without tracking parameters. Each is a distinct URL to Google.
Check by requesting each variant and confirming it either redirects to one canonical form or carries a canonical tag pointing there.
Template-generated near-duplicates. Location pages that differ only in the city name. Product variants on separate URLs. Printer-friendly versions. Tag and category archives that list the same posts.
Syndicated and supplier content. Manufacturer product descriptions used verbatim by every retailer. If you sell the same products as fifty other stores using the same copy, none of you has a differentiation signal.
Fixing duplicate content
|
Situation |
Fix |
|
URL variants of one page |
301 redirect to one canonical form, and enforce it in the server config |
|
Near-identical pages that must both exist |
Canonical tag on the weaker pointing at the stronger |
|
Pages that should not be indexed at all |
noindex, and do not also block them in robots.txt |
|
Pages generating no value |
Delete, and 301 to the closest relevant page |
|
Supplier product copy |
Rewrite. Add the information the supplier did not: local stock, local pricing, real photography, honest limitations |
One rule that catches people: do not combine noindex with a robots.txt block. Google has to crawl the page to read the noindex. Block it and the directive is never seen.
Finding keyword cannibalisation
This is the harder one, because nothing looks broken. Your average position report stays stable. Traffic is flat rather than falling. There is no error in Search Console.
What is actually happening is that Google rotates between two or three of your URLs for the same query, and each gets a fraction of the clicks a single consolidated page would earn.
The Search Console method
Export your Performance report with Query and Page dimensions over 90 days. Then:
- Group rows by query.
- Flag any query where more than one URL appears with meaningful impressions.
- Sort those by total impressions.
- For each, check whether the URLs are genuinely answering different intents or the same one.
That last step is the judgement call and it cannot be automated. Two pages ranking for one query is fine when they serve different intents, for example a definition page and a service page both appearing for a broad term. It is a problem when both are trying to be the same answer.
The signals that confirm it
|
Signal |
What it suggests |
|
The ranking URL for a query changes week to week |
Google cannot decide which page is the answer |
|
Average position is stable but clicks are flat or falling |
Impressions are spread across your own URLs |
|
Several pages rank at positions 8 to 20 for the same term |
None is strong enough to consolidate |
|
A newer page displaces an older, better-performing one |
The new page absorbed the relevance without the authority |
That third row is the most common pattern on content-heavy sites. Five pages at position 12 earn almost nothing. One page at position 4 earns more than all five combined.
Fixing cannibalisation
Four options. Pick by what the pages are actually worth.
Consolidate. Merge the pages into the strongest URL, take the best material from each, and 301 the others into it. This is the right answer most of the time and the one people avoid because it feels like losing pages.
Differentiate. Keep both, rewrite so each targets a clearly distinct intent, and make the titles, headings and internal links reflect the split. Use this when both pages genuinely deserve to exist.
Demote. Keep a page for users but remove it from competing: noindex it, or de-emphasise the term in its title and headings.
Delete and redirect. For pages with no traffic, no links and no purpose. 301 to the closest relevant page.
The redirect rule most people get wrong
When you consolidate, the destination must match the search intent of the source. Redirecting a comparison page into a service page usually loses the ranking rather than transferring it, because the destination does not answer the query the source ranked for.
If you are merging a “best X agencies” listicle into a service page, expect to lose those rankings. If you want to keep them, keep a listicle, even a shorter one.
Internal links decide the winner
After consolidating, update the internal links. If ten pages still link to the URL you demoted, you are telling Google that page is the important one while your canonical says otherwise.
This is the step that gets skipped, and it is why consolidations often fail to produce the expected lift.
A worked sequence
For a site with a suspected cannibalisation problem:
- Export 90 days of Query and Page data from Search Console.
- Group by query, flag multi-URL queries, sort by impressions.
- Pick the top ten by impressions. Ignore the long tail for now.
- For each, decide: consolidate, differentiate, demote or delete.
- Execute one cluster at a time, not all ten at once.
- Fix the internal links pointing at anything you demoted or merged.
- Wait six to eight weeks, then re-export and compare the same queries.
One cluster at a time matters. If you consolidate ten clusters simultaneously and traffic moves, you will not know which change did it.
What this costs if you leave it
The arithmetic is worth doing. Take a query with 2,000 monthly impressions where three of your pages rotate between positions 10, 14 and 18. Combined CTR at those positions is low, perhaps 1%, so about 20 clicks.
Consolidate into one page that reaches position 5 and CTR is several times higher. Same content, same site, same query. The difference is that Google now has one clear answer instead of three partial ones.
That is why cannibalisation is usually a bigger opportunity than it looks. It needs no new content.
Frequently asked questions
Is there a duplicate content penalty?
No. Google does not penalise sites for duplicate content. What happens is that Google selects one version to index and ignores the others, which splits link signals and can mean the wrong version ranks. The cost is dilution rather than a penalty.
What is the difference between duplicate content and cannibalisation?
Duplicate content is the same or near-identical text at more than one URL, which is a technical problem fixed with redirects and canonical tags. Cannibalisation is several of your pages competing for the same query, even when their content is entirely different, which is a strategy problem fixed by consolidating or differentiating pages.
How do I find keyword cannibalisation?
Export the Search Console Performance report with both Query and Page dimensions over 90 days, group by query, and flag queries where more than one of your URLs appears with meaningful impressions. Then judge whether those URLs serve different intents or the same one.
Should I use canonical tags or 301 redirects?
Use a 301 when the duplicate does not need to exist for users. Use a canonical when both pages must stay accessible but only one should rank, such as product variants or filtered views. A canonical is a signal Google can ignore; a 301 is far stronger.
Will consolidating pages lose my rankings?
It can, if the destination does not match the intent of the page you redirect. Redirecting a comparison page into a service page typically loses the ranking rather than transferring it. Consolidate into a destination that answers the same query.
How long before I see results from fixing cannibalisation?
Six to eight weeks for Google to re-evaluate and consolidate signals. Work on one cluster at a time so you can attribute the result.
Does duplicate content waste crawl budget?
On large sites, yes. Google fetches each duplicate URL before determining it is a duplicate. For sites with a few thousand URLs this is irrelevant; for template-driven sites it is one of the main sources of waste. See our guide to crawl budget.
Is it duplicate content if I use the manufacturer’s product description?
Technically yes, and practically it means you have no differentiation against every other retailer using the same text. The fix is adding what the supplier cannot: local stock and pricing, your own photography, real usage detail and honest limitations.
Where to start
If you have more than fifty content pages and have never checked, run the Search Console export described above. Most sites find at least one cluster worth consolidating in the first hour, and the fix needs no new content.
For larger sites where the duplication is generated by templates rather than written by people, the fix lives in the template rather than in individual pages. That work is covered in our enterprise SEO service and enterprise SEO strategy. For a general health check first, see the complete SEO audit checklist and technical SEO explained.