In short
- Cannibalization happens when several pages on the same site target the same intent and compete for the same queries.
- It is not a penalty but a signal problem: Google hesitates between your pages, alternates from one to the other and ranks none as high as it could.
- In e-commerce, the classic causes are near-duplicate categories and facets, tags generated from the same template, and blog posts targeting transactional queries.
- The fix starts with a simple decision: one query, one page. Then merge, differentiate or reorient.
On an e-commerce site, cannibalization sets in quietly. A subcategory created for a promotion, a facet opened up to indexing, a blog post about a flagship product: each page has its justification. Then, one day, none of them really ranks for the query they all target.
What is cannibalization?
We talk about cannibalization when several pages on the same site target the same search intent and compete for the same queries. Google then has to choose which one to display. It hesitates, sometimes alternates between them from one day to the next, and the signals that should concentrate on one page (internal and external links, clicks, relevance) get scattered.
It is not a penalty. It is dilution: two average pages where there could be one excellent one.
The typical causes in e-commerce
Categories and facets that are too close
"160x200 fitted sheets" exists as a subcategory in the menu, and "fitted sheets" filtered on 160x200 exists as an indexed facet. Two URLs, the same products, the same query.
Tags generated from the same template
When the CMS outputs "Fitted sheets | My Store" for the category, and "Fitted sheets | My Store" for each of its paginated pages and facets, Google receives identical signals for different pages. This is one reason to write a specific title tag for every indexed page.
Blog posts targeting buying queries
A blog post titled "The 10 best 160x200 fitted sheets" can compete with the "160x200 fitted sheets" category. If Google picks the blog post, the visit will convert far less well, for the reasons detailed in our analysis of e-commerce SEO traffic.
Seasonal collections that duplicate
"Bedding sale", "Summer selection", "New bedding": these collections often reuse the same products as the permanent categories, with similar tags.
How to detect it
- In Google Search Console, open the Performance report, filter on an important query and open the Pages tab. Several URLs with impressions for the same query are a first signal.
- Look at the evolution over time: if the ranking URL changes from one week to another and the position fluctuates, Google is hesitating.
- Do the reverse for your strategic pages: filter on a category page and list its queries. If another page on your site captures the category's best queries, there is a conflict.
- Compare the tags: an export of your title tags and H1s quickly reveals the pages that carry the same label.
Not every double ranking is a problem. A category page and a product page on the same results page is rather a success. The problem is when both pages answer the same intent and neither ranks as well as it should.
How to fix it
It all starts with one decision: for each query, which page should rank? Usually it is the page of the right type for the intent, as explained in our guide to search intent. Then, three options.
| Situation | Fix |
|---|---|
| Two near-identical pages (subcategory and facet with the same products) | Merge: keep one URL, redirect the other with a 301, or declare a canonical to the retained page |
| Two close but useful pages (broad category and precise facet) | Differentiate: tags, H1 and copy focused on distinct queries |
| A blog post capturing a buying query | Reorient: refocus the post on help with choosing, remove the transactional query from its title tag, and point it to the category page |
In every case, align your internal linking with your decision: links with the anchor "160x200 fitted sheets" must point to the retained page, and only that one.
Prevention is better than cure
- Keep a query map: one line per strategic query, the page that owns it, its title tag.
- Before opening a facet to indexing, check that no existing category page already targets the same query.
- Write tags specific to each page rather than automated templates.
- Brief your writers: a blog post should never target a transactional query already owned by a category page.
How unblind prevents cannibalization
The third rule is the hardest to keep on a large catalog. unblind equips it:
- cannibalization detection cross-references Search Console queries shared between your pages with the semantic proximity of their content, to spot competing page pairs;
- a targeting plan assigns each URL its main query before writing;
- tags and copy specific to each page, anchored in its actual content, instead of a common template that produces identical signals.
Frequently asked questions
Is SEO cannibalization penalized by Google?
No, no such penalty exists. But when two pages answer the same intent, Google has to choose, and that choice can vary over time. Signals (links, clicks, relevance) are split between the two pages instead of concentrating on one.
How do I detect cannibalization?
In Google Search Console, open the Performance report, filter on a query and open the Pages tab. If several URLs receive impressions for the same query, and the position fluctuates, you probably have a case of cannibalization.
Two pages ranking for the same query: is that always a problem?
No. If a category page and a product page both appear on the first page of results, that is good news. The problem appears when both pages answer the same intent and neither ranks as well as it should.