Keyword Cannibalization: When Two Posts Fight One Query

Two posts, one query, both stuck on page two. That was the pattern staring back at me from a Search Console export for a Korea-travel affiliate site I run, and it took me an embarrassing while to name it. This is keyword cannibalization: two pages on your own site competing for the same search, splitting the signal that either one needed to break through. Neither ranks well because you have quietly asked Google to choose between two of your own URLs. Here is how I spot it, how I decide which page survives, and how I merge the other one without losing the traffic it already had.

Comparison diagram showing keyword cannibalization where two posts split impressions versus one consolidated page pooling them.
Two posts split one query’s impressions and both stall on page two; consolidating into a single page pools the signal so it can rank. Diagram by Nuriforge (AI-assisted).

The symptom: two of my URLs, one query

The tell is simple once you know to look for it: open your Search Console performance report, filter to a single query, and check the Pages tab. If two different URLs from your own site appear for that one query, you have a cannibalization problem waiting to be confirmed. On a healthy site, one query maps to one clear page. When two pages surface, Google is uncertain which of yours deserves the slot, and uncertainty is not a position you want to hand a search engine.

What made it hard to see was that neither page looked broken on its own. Each had decent impressions, a mediocre click-through rate, and a position hovering in the teens. Individually they read as “almost there.” Only when I lined them up against the same query did the shape appear: two half-strength pages where I needed one full-strength one. The site was not short on content. It was short on focus, and it had done that to itself.

Why keyword cannibalization splits your signal

Search engines try to pick the single best page on your site for a given intent. When you publish two posts that answer the same question, you force that choice internally: your own links, your relevance signals, and any external links get divided across two URLs instead of concentrated on one. Each page ends up with roughly half the authority it would have had alone, and half of “almost ranks” is “doesn’t rank.”

It gets worse over time because the two pages also compete for your internal links and your own attention. You link to whichever one you remember, readers land on whichever one Google guesses, and neither accumulates the consistent signal that pushes a page from position twelve to position four. Google’s own guidance on consolidating duplicate URLs exists precisely because a split signal helps no one — not the reader, who gets a weaker page, and not you, who wonder why two decent articles both underperform.

How I confirm it in the data

Suspicion is not diagnosis, so I confirm before I touch anything. The clean test is the one query, two URLs pattern in the performance report, but I also check that the two pages genuinely serve the same intent rather than merely sharing words. Two articles can both mention “Seoul itinerary” while answering different questions — one a three-day plan, one a budget breakdown — and those are not cannibalizing each other. Real cannibalization is two pages a reader would consider interchangeable.

When the intent overlaps and both URLs appear for the query, I note which page has the stronger footprint: more impressions, better average position, more existing backlinks, and higher engagement once people arrive. That page is almost always the keeper. I write the decision down before editing, because the middle of a merge is a bad time to be forming opinions. Diagnosis first, surgery second — the same order I follow for everything in the content pipeline I run.

Search Console Performance report filtered to one query showing two pages splitting clicks, the keyword cannibalization signal.
One query, two pages: 12 clicks on one URL and 6 on the other, splitting what one page should own — keyword cannibalization in a single screen. Query and URLs masked. Screenshot from my own Search Console.

Picking the page that survives

Choosing the survivor is a judgment call with a bias toward the page that is already winning. The URL with more impressions, the better position, and the stronger backlink profile keeps its address, because throwing away an established URL means throwing away the equity attached to it. If one page is objectively thinner or was clearly the later, weaker attempt, that is the one that gets folded in. Freshness of the content matters less than the strength of the URL, since I can rewrite a body but I cannot easily rebuild links.

Occasionally the honest answer is that neither page is good enough and the right move is to merge both into a single, better article at the stronger URL. That is more work, but it is the move that actually earns the ranking rather than just deduplicating a mess. Whatever I decide, the losing URL never simply gets deleted — deleting it drops its accumulated signal on the floor instead of passing it to the survivor.

Merging the loser without losing its traffic

The mechanics are the part people get wrong, so here is the exact sequence. First I copy anything unique and worth keeping from the weaker page into the survivor, so the merged article is genuinely more complete. Then I set the weaker URL to point at the survivor with a 301 redirect, which passes its ranking signal along and sends readers to the right place. I also make sure the survivor’s canonical points to itself. A redirect plus a self-referential canonical tells search engines, unambiguously, which page is the real one.

Because the redirect and any content edits happen on the live site, I apply them through the WordPress REST API rather than trusting a local copy that may be out of date, back the post up first, and read it back to confirm the change saved. Then I re-run the query in Search Console over the following weeks. If it worked, the survivor’s position climbs as the split heals and the second URL fades from the query entirely.

Preventing it before you publish

The cheapest fix is not publishing the second post in the first place. Before I write anything new, I search my own site for the target intent, and if a page already covers it, I strengthen that page instead of starting a competitor. Most cannibalization is self-inflicted by treating “more posts” as the goal when the goal is one strong page per intent. A content plan that maps intents to single pages, rather than piling articles onto a topic, avoids the whole problem.

Situation Signal What I do Result I expect
One clear winner One URL much stronger for the query Keep it, 301 the weaker URL to it Survivor’s position climbs
Both mediocre Two thin pages, similar intent Merge both into one better article A page that finally earns rank
Same words, different intent Reader would not confuse them Leave both; differentiate titles No merge needed
Planning a new post Existing page already covers intent Strengthen the existing page Cannibalization never starts

Prevention is not glamorous and it never shows up as a win in any report, which is exactly why it gets skipped. But every duplicate you do not create is a merge you never have to untangle later, and untangling is always more expensive than not tangling.

FAQ

What is keyword cannibalization in plain terms?

It is when two or more pages on your own site compete for the same search query. Instead of one strong page ranking, you get several weaker ones splitting the signal, so none of them ranks as well as a single consolidated page would have.

How do I know if two posts are cannibalizing each other?

Filter your Search Console performance report to a single query and open the Pages tab. If two of your own URLs appear for that one query and they serve the same intent, you have cannibalization. Sharing a few words is not enough; the pages must answer the same question.

Should I delete the losing page?

No. Deleting it throws away the ranking signal and any links it accumulated. Redirect it with a 301 to the page you are keeping so that signal passes along, and copy anything unique from it into the survivor first.

Does a canonical tag alone fix cannibalization?

Not reliably on its own. A canonical is a hint, and search engines can ignore it. The durable fix is consolidating the content and using a 301 redirect, with the survivor’s canonical pointing to itself, so the intent is unambiguous.

How can I prevent cannibalization before it happens?

Before writing a new post, search your own site for the intent it targets. If a page already covers that intent, strengthen it instead of publishing a competitor. Map one page to one intent rather than piling multiple articles onto the same topic.

My Thoughts

The uncomfortable lesson here is that cannibalization is a self-inflicted wound. No competitor did this to me; I did it by mistaking output for progress and publishing a second post when I should have improved the first. Fixing it felt less like optimization and more like cleaning up after myself. These days, when I catch the itch to write another post on a topic I have already covered, I open the existing page instead and ask whether it is actually as good as it could be. Usually it is not, and making it better beats making it lonely competition.