Gabriel EspinheiraFounder · senior software engineer
Open Search Console, filter to the one query your blog should own, and there they are: three of your own URLs, splitting the impressions between them. Positions eight, twelve, nineteen. None of them on page one. You weren't outranked by a competitor — you were outranked by yourself.
This is keyword cannibalisation, and it's the quiet reason a lot of founder blogs stop growing right around the point they should be compounding. You published consistently. You, or an agency, shipped post after post. And somewhere past fifty of them the traffic went flat — not because you ran out of demand, but because your posts started competing for it. Here's how to see it in your own data, and why the fix is almost never another post.
TL;DR: Keyword cannibalisation is when two or more of your own pages compete for the same query, splitting clicks and rankings so none of them wins. It usually surfaces once a blog passes roughly 50 posts. Find it in Search Console, then fix it by merging, redirecting, or cutting pages — not by publishing more.
Your own posts are competing, and Google isn't confused
The popular explanation is that Google "gets confused" when two of your pages target the same keyword. It doesn't. Google is perfectly capable of choosing one page — the trouble is it keeps choosing a different one week to week, or a weaker one, because you handed it five mediocre options instead of one strong one.
Every post you add on a topic you've already covered doesn't bring a fresh slice of traffic. It divides the authority — links, relevance, engagement history — across more URLs. Your tenth post on the same subject doesn't add a tenth of the traffic; it takes a slice from the other nine. The page that used to sit at position four drifts to eight, the new one lands at twelve, and the query you were winning becomes a query you split three ways.
The nuance that matters: cannibalisation only bites when the pages chase the same intent. Two posts on Meta ads — one a beginner explainer, one a budget-pacing teardown — coexist fine, because a searcher wants different things from each. Two posts both trying to be the definitive "how to run Meta ads" cannot. If you've ever muttered "we've done the content, why aren't we showing up?", this is usually the reason.
Find it in Search Console before you touch anything
You can diagnose this in an afternoon, with a tool you already have and already pay nothing for. In Search Console, open the Performance report, click a query you should be ranking for, then switch to the Pages tab. If two or more of your URLs pull meaningful impressions for that single query, they're competing for it.
The tell isn't subtle once you know the shape: one query, several of your own pages, none in the top three. Sort your queries by impressions and work down the top twenty. Most blogs find the whole problem lives in three or four clusters — a handful of topics where you've published repeatedly and split yourself every time.
Write down the query, the competing URLs, and each one's position and clicks. That list is the entire audit. You're not guessing which posts overlap or trusting a plugin's opinion — you're reading the collision straight off your own data, which is the only way to make the next decision without flinching.
The fix is a decision, not another post
In February 2025, HubSpot removed around 3,000 pieces of outdated content from its blog, nearly all of them indexed but drawing essentially no traffic. It wasn't the only change they made, but the mechanics moved one way: crawling dropped, fresh pages started getting indexed in minutes instead of days, and authority consolidated onto the pages that actually earned it. The lesson isn't to go delete 3,000 posts. It's that on a large content library, subtraction can be a growth move, not a loss — the opposite of what almost everyone selling content will tell you.
Once you have your list of competing clusters, each one gets exactly one of five decisions:
- Leave it. The pages genuinely serve different intent and both earn clicks. Do nothing.
- Differentiate. The overlap is fixable — re-angle one page to a distinct intent, rewrite its title and opening, and re-point its internal links.
- Redirect. One page clearly wins. 301 the weaker one into it so its links and history flow to the survivor.
- Merge. Two half-good posts become one strong page at a single URL, and you redirect the other into it.
- Cut. No traffic, no links, nothing worth saving. Remove it and let the crawl budget go to pages that earn.
One caution, because the mistake runs both ways: don't cut on age or a slow week alone. Google's own Search Liaison has said plainly that old content isn't inherently harmful and Google doesn't tell you to delete it. Check traffic, backlinks, and the query data before you remove anything. A page can look dead and still hold a single backlink that's quietly carrying half your topic's authority — cut it blind and you'll wonder why the survivor slid too.
Why "publish more" quietly made it worse
The advice that created this problem is the same advice you'll be handed to fix it: publish consistently. For the first stretch of a blog's life that's right — you're claiming ground you don't own yet, and volume is how you claim it. Past a point, usually somewhere north of fifty posts, "just keep publishing" stops compounding and starts colliding, because you run out of genuinely new angles and quietly begin re-covering ground you already hold.
It gets worse when the content was outsourced by the brief. An agency paid per post has every incentive to keep shipping and none to tell you that post forty-one is competing with post twelve. You end up with a library that looks productive on a spreadsheet and performs like a traffic jam you caused — and the posts you'd have to cut are the ones you paid for, which is exactly why nobody cuts them.
We run our own blog in public, well past 130 posts, and keeping it compounding takes this discipline every week: a content engine is a governed library, not a volume machine. Every new post has to earn its place against the ones already there. Some weeks the most valuable thing we ship isn't a new post — it's a merge that finally lets one page win the query five were fighting over.
In 2026, one strong page beats five thin ones
Cannibalisation used to cost you a few positions. It costs more now, because of where search is heading. Google's December 2025 core update pushed further in a direction it's held for years: it rewards pages that show real experience and depth, and demotes thin, near-duplicate content. Five overlapping posts on one topic are, by definition, thinner than the single page you could have written with the same effort.
AI search raises the stakes again. When an answer engine cites sources, it pulls very few pages per site — Semrush puts it at roughly one page per domain in ChatGPT responses. If you want to be the page ChatGPT or a Google AI Overview quotes on your topic, you need one obvious candidate to be that source, not five splitting the signal between them. Consolidation stopped being housekeeping. It's how you become the page worth citing.
Frequently asked questions
How do I find keyword cannibalisation in Google Search Console?
Open the Performance report, click the query you want to rank for, then open the Pages tab. If two or more of your URLs earn impressions for that one query, they're competing. Repeat for your highest-impression queries — the clusters where several of your pages appear, none in the top three, are your problem areas.
Should I delete old blog posts, or redirect them?
Redirect when a page has backlinks, traffic, or history worth keeping — a 301 passes that value to the surviving page. Delete only when a page has no traffic, no links, and nothing worth merging. Check the data first; a page can look dead while quietly holding a link that carries real authority.
Do canonical tags fix keyword cannibalisation?
Rarely. Canonical tags are for near-identical pages you deliberately keep, like a print version or a parameter variant. They don't resolve two genuinely different posts competing for one query — for that you merge, redirect, differentiate, or cut. Put a canonical on real overlap and Google treats it as a suggestion it often ignores.
What to do next
A blog that stalled past fifty posts rarely needs a forty-first article. It needs someone to open Search Console, find the three clusters where your own pages are fighting each other, and make five decisions. The traffic you're missing is already yours — it's just spread across pages that should have been one.
Want a second read on yours? Book a 30-minute call, bring the query your blog should own and can't crack, and leave with a merge-redirect-cut list for it. It's the kind of work our content engine does every week — in the open, where you can watch it ship inside SharpOS.

