
Keyword cannibalization means two or more pages of the same site compete for the same query with the same intent, and neither of them gets strong enough. You find it in Search Console by looking at which pages appear for a given query. The fix is one of three: merge the pages and redirect (301), rewrite the angle of one of them, or keep both and just link them together. Below I walk through the process on my own site, where I merged two articles about app pricing in October 2026.
- What it is: two URLs of one site for the same query with the same intent. Two URLs for the same query with different intents are not cannibalization.
- How to find it: Search Console, Performance report, filter by query, then the Pages tab. Look for queries where two pages take turns and neither gets clicks.
- When to merge: both pages answer the same question, both are weak, and one could absorb the other.
- How to merge: move the content, add a server-side 301 to the stronger page, fix internal links, compare after 28 days.
- Prevention: a "query to page" map and a check before every new article.
What is keyword cannibalization and when is it a problem?
"Cannibalization" is not a term from Google's documentation. Google talks about duplicate content and choosing a canonical URL. According to the page How to specify a canonical URL (last updated 10 July 2026), it makes sense to consolidate similar pages, among other reasons, so that the signals of the individual URLs are combined and so that tracking the performance of one piece of content is simpler.
In practice it looks like this: for one query Google shows page A, another time page B, both around positions 8 to 12, and neither moves up. It is only a problem when both pages answer the same question. When a blog article explains pricing and a service page offers the work, those are two intents and both pages belong on the site.
How do you find cannibalization in Search Console?
- Open Performance → Search results and set the last 3 months.
- Add a Query filter for a main term, for example "app price".
- Switch to the Pages tab. If several URLs show similar impressions, you have a candidate.
- Repeat for the main queries of your site. On a larger site it pays to export query + page into a spreadsheet. I keep that export in my own local app, which pulls the data from Search Console.
One thing is confusing. According to the Performance report help, data on the Queries tab is aggregated by property, while on the Pages tab it is aggregated by page. Totals on the two tabs may therefore differ. For cannibalization, look mainly at the impressions and position each page gets for the query on its own.
A real example: two articles about app pricing
My site had two Czech articles, "How much does app development cost" and "How much does a web app cost". Each was written with a different angle, but Search Console showed that people search for them the same way. Over 90 days (24 July to 21 October 2026) three queries looked like this (queries translated from Czech):
| Query | App development article | Web app article | Clicks |
|---|---|---|---|
app development price |
60 impressions, position 5.9 |
14 impressions, position 10.1 |
0 |
app development price list |
11 impressions, position 4.3 |
21 impressions, position 10.6 |
0 |
app building price |
10 impressions, position 9.3 |
11 impressions, position 11.2 |
0 |
Over the whole period the two articles had 313 and 226 impressions and not a single click. Meanwhile the web app article held its own main query, "how much do web apps cost", at an average position of 4.8.
I did not merge them straight away. An August review suggested it, but at that time each article held its own queries, so I wrote a criterion into my keyword map: if by 30 September one of them still had no clicks and the positions converged, I would redirect the weaker one to the stronger. That happened, so on 22 October 2026 I:
- moved the price list, the web vs mobile comparison, pricing models, timelines and the return-on-investment calculation into the web app article,
- added a server-side 301 redirect from the old article (Czech and English version),
- rewrote internal links from other articles so they point straight to the new target, not through the redirect,
- let the old URL drop out of the sitemap on its own, because the article no longer exists.
I will evaluate the result 28 days after the redirect. Drawing conclusions earlier makes no sense, Google needs time to process the redirect.
For comparison, a case where I did nothing: my article on website pricing also appeared for "how much do web apps cost", but with only 8 impressions at position 13 against 121 impressions at position 4.8. Google clearly picked one page, so there is nothing to fix.
Merge, rewrite, or leave it?
| Situation | What to do | Why |
|---|---|---|
| Both pages answer the same question, both weak | Merge into the stronger one, 301 from the weaker | Signals are combined on one URL |
| Pages have different intents, but titles and intros sound the same | Rewrite the angle of the weaker page (title, H1, intro, FAQ questions) | Google can then tell which one answers what |
| One page clearly leads, the other has a handful of impressions | Leave it, just link them | Nothing to fix |
| Blog article and service page for the same query | Keep both, the article links to the service, no repeated text | Informational and commercial intent are two different intents |
| A page has no unique content and no impressions | Merge, or remove and redirect to the closest topic | An empty page does not strengthen the site |
I pick the stronger page by clicks, position for the main query, backlinks and which URL fits the intent better. Here the 4.8 position for the main query and the broader title decided it.
How do you merge pages properly?
- Move the content, do not just redirect. Whatever was useful on the weaker page (a table, an example, an FAQ question) belongs on the target page. Otherwise readers will not find what they came for after the redirect.
- Use a server-side 301 redirect. According to Google, a redirect is a strong signal that the target should become canonical, and server-side redirects take effect fastest. The page on redirects (updated 14 April 2026) says that 301 and 308 mean a permanent move and that a permanent redirect fits when you are sure you will not revert it.
- Fix internal links. Point links from menus and other articles straight at the target URL. The redirect is a safety net for external links, not for your own.
- Check the sitemap and language versions. The old URL should not be in the sitemap. On a bilingual site, redirect both versions and keep hreflang in order.
- Write the decision down. Note in your keyword map which page now owns the query and why. Otherwise you will write a third article on the same thing in six months.
- Compare after 28 days. In Search Console compare before and after: impressions, position and clicks of the target page for the merged queries.
When is rel="canonical" enough instead of a redirect? When both URLs must stay accessible, for example product variants or a print version. For two articles that answer the same thing, one page and a 301 is cleaner.
How do you prevent cannibalization?
The cheapest option is not to let it happen. On this site I keep a "query to page" map: every main query has one URL of its own, and contested pairs have a written boundary describing how the pages differ. Before every new article I check three things:
- Is the main query already in the map under another page?
- Does any page already collect impressions for this query in Search Console?
- If so, can I say in one sentence which different question the new article answers?
If I cannot answer the third question, I do not write the article, or I extend the existing page instead. How I set up SEO for a site as a whole is described in my SEO service.
- List your 10 queries with the most impressions.
- For each one, switch to the Pages tab.
- Mark queries where two URLs with similar impressions take turns and neither gets clicks.
- For each pair, write one sentence on how the pages differ. Where you cannot, you have a merge candidate.
Frequently Asked Questions
Does Google penalize cannibalization?
It is not listed on its own among Google's spam policies (updated 28 August 2026). Two honest pages on a similar topic hurt mainly because impressions, links and attention are split, and neither reaches the positions where people click. It is different when someone produces many near-identical pages just to rank for similar queries: Google describes that as "doorway abuse", and that is a policy violation.
How much data do I need to decide?
I look at the last 90 days. For a smaller site that is a sensible minimum, so that swings in individual weeks do not decide for you. When the numbers are too small (single-digit impressions), I wait.
Is canonical or a 301 redirect better?
If only one page should remain, a 301 redirect. Canonical fits when both URLs must stay available to users. Google describes both as a strong signal, but a redirect also takes the visitor straight to the right place.
Should I delete the old page?
Not without a redirect. The page may have external links and people may have it bookmarked. Move the content to the target page and redirect the old URL.
Can a service page and a blog article target the same keyword?
They can appear for similar queries, but each should answer a different intent. The article explains and advises, the service page offers a solution. The article links to the service, and the titles of the two pages should not repeat each other.
Can you help me find cannibalization on my site?
Yes, it is part of my SEO service: I go through the queries and pages in your Search Console, suggest what to merge and what to rewrite, and prepare a "query to page" map so the problem does not come back.
