Two recipe pages on the same site can rank for “banana bread recipe” on the same afternoon, and Google Search Console will show you both rows without ever telling you they’re fighting each other. That’s the quirk that trips up most audits: the Performance report gives you raw numbers, not a verdict. Finding cannibalisation means reading between those rows yourself.
By the end of this, you’ll be able to pull the query and page data that exposes competing URLs, tell genuine cannibalisation apart from harmless overlap, and know when to bring in a tracking tool instead of doing it by hand every month.
Prerequisites:
- Verified access to Google Search Console for the property you’re auditing
- At least 3 months of performance history (12 months gives a cleaner picture)
- A spreadsheet tool or a way to export and pivot Search Console data
- Basic familiarity with the Performance report’s query and page dimensions
1. Discover the Current Search Analytics Action
Before you build anything, check what’s actually available to query Search Console data right now. The Performance reports show how often people saw or clicked your pages in Search, News, or Discover, and the underlying Search Analytics data lets you filter by query and page as separate dimensions, which is what makes cannibalisation visible in the first place, according to Google’s own documentation.
If you’re automating this with a workflow tool or an AI agent, don’t hardcode a specific action or integration name into a permanent script. Catalogs change, accepted inputs change, and a brittle reference breaks your automation six months from now for no reason you’ll remember. Search for whatever current action returns clicks, impressions, CTR, and position at the point you’re building it, rather than trusting a name you copied from an old tutorial.
Outcome: You have a working method, manual or automated, to pull query-and-page-level Search Console data without depending on a reference that might stop working.
2. Pull Query and Page Data Together
This is the step that actually surfaces cannibalisation. On its own, the Performance report’s default view lumps pages together under “Site Impression,” counting a query once per property even if three of your URLs show up for it, as one explanation of Search Console’s impression counting lays out. That default view hides the problem. You need query and page as separate dimensions, exported together, so each row tells you which specific URL earned which impressions for which search term.
Export query and page data over a consistent period, ideally the last 12 months, which is the default scope used by automated extraction workflows built for this exact job, pulling up to 10,000 rows per run, according to one Search Console automation template. Then group by query. Any query with more than one distinct page attached is a candidate.

Here’s the part that separates a real audit from a shallow one. Counting pages per query tells you where overlap exists, but it doesn’t tell you whether that overlap matters. A query showing up against five URLs could mean five competing articles, or it could mean one dominant page and four stragglers picking up scraps. That’s why the next move is to weigh each page’s share of the total.
Calculate what one cannibalisation framework calls leading-page share: take the highest single page’s impressions for that query and divide by the total impressions across every page ranking for it, a method described in this breakdown of Search Console cannibalisation signals. A query where one page owns almost all the impressions isn’t really contested, whatever the page count says. A query where impressions split closer to evenly across two or three URLs is where you have a genuine fight for the same real estate.
Outcome: A list of queries ranked by how evenly their impressions split across multiple pages, not just how many pages happen to rank.
3. Remove Benign Shared Visibility
Not every multi-page query is a problem, and treating all of them as one is how audits waste weeks chasing nothing. Open the pages involved and ask whether they’re genuinely trying to do the same job, a check recommended in Aident’s cannibalisation guide.
Branded and navigational queries are the easiest false positive. If someone searches your company name plus “pricing,” your pricing page and your homepage both showing up isn’t cannibalisation, it’s just how brand queries behave. Localised pages are another: a “plumber near me” style query returning your London page and your Manchester page for different searchers isn’t two pages fighting, it’s geographic targeting doing its job.
Product and educational content aimed at different funnel stages deserves the same scrutiny. A comparison page and a “what is X” explainer might both rank for a broad term while serving completely different intents, one for someone ready to buy, one for someone still learning. And a page published last week that’s temporarily outranking your established page while Google figures out where it belongs isn’t a stable conflict, it’s noise that settles on its own.
For each case, look at the current search results directly, not just your own data. Would a real searcher be served by either page equally well, or does one clearly deserve to be the only answer? Decide whether a single canonical page should own that query, or whether the overlap is doing something useful. Skipping this step is the single biggest reason cannibalisation fixes backfire: merging two pages that were actually serving different intents just deletes a page that was earning its own clicks.
Outcome: A shortlist of queries where the overlap is a real problem, with branded, local, and funnel-stage false positives filtered out.
4. Check Clicks Alongside Impressions
Impressions tell you where pages are competing for visibility. Clicks tell you whether that competition is actually costing you traffic. The two don’t always move together, and conflating them is a common mistake.
Click-through rate is clicks divided by impressions, and a high CTR signals your content matches what the searcher wanted, while a low one suggests a mismatch, per Google’s own metric definitions. When two pages split impressions for the same query, watch what happens to CTR on each. If your leading page holds a strong CTR and the second page’s CTR is near zero, that second page is dead weight competing for a slot without converting any of it into clicks.
But if the second page is pulling in real clicks of its own, that’s a different situation entirely. One filtering method used in automated cannibalisation detection keeps only multi-page queries where the second-ranking page actually records clicks greater than zero, treating that as higher-confidence evidence of true cannibalisation rather than a page that’s merely indexed and ignored, as described in this Search Console workflow template. A page with zero clicks isn’t stealing traffic from your main page. It’s just sitting there. A page earning a meaningful share of clicks is actively splitting the audience your best page should be capturing alone.
This matters because searchers themselves react badly to the redundancy. Multiple similar-looking results in the same search can drag down overall organic click-through rate, since users faced with redundant options sometimes click neither, according to SEO Sherpa’s analysis of cannibalisation effects. You’re not just losing ranking stability. You’re potentially losing clicks that would have gone to either page if only one had shown up.

So the real question for each flagged query isn’t “do multiple pages rank.” It’s “is a second page pulling clicks away from the page that should own this, or is it just noise Google hasn’t cleaned up yet.” One practical illustration of this: a site had two posts ranking back to back in positions 11 and 12 for the same term, and checking the CTR on both in Search Console was the recommended way to work out which post should stay and which should be consolidated or rewritten, as one case study on fixing cannibalisation describes. Neither post was beating the other. Both were stuck below page one, likely because Google couldn’t decide which one deserved the spot.
Outcome: Queries sorted into two buckets: genuine click-splitting cannibalisation worth fixing, and harmless secondary visibility you can leave alone.
5. Compare the Same Query Across Time
A single snapshot tells you what’s happening now. It doesn’t tell you whether the problem is getting worse, staying flat, or already resolving itself.
Take the exact query-and-page group you flagged and compare it against an equal prior period, matching the same length of time so the comparison is fair, a method outlined in Aident’s cannibalisation framework. Watch for combined impressions falling across the group while ownership fragments further across more pages. That pattern, shrinking total visibility paired with more pages splitting what’s left, is the clearest sign that competing pages are actively hurting the query rather than just coexisting.
If combined impressions are holding steady or growing even as two pages share them, the overlap might be stable rather than actively damaging. That’s a judgement call, not an automatic fix. Worth noting: a query that looked like a two-way split last quarter and is now a three-way split this quarter is worsening, even if total clicks haven’t dropped yet. Fragmentation tends to precede the traffic drop, not follow it. Catching it at the fragmentation stage, before total impressions fall, is cheaper than catching it after rankings have already slipped.
Once you’ve confirmed the trend, your next decision is consolidation or differentiation. Merge the weaker page into the stronger one if they’re answering the same question, or rewrite one to target a genuinely different angle if both deserve to exist.
Outcome: A trend view for each flagged query group showing whether the cannibalisation is worsening, stable, or self-correcting, which tells you how urgently to act.
6. Monitor Cannibalisation With External Tracking Tools
Doing this by hand works for a quarterly audit. It doesn’t work if you’re running thousands of pages and need to catch new cannibalisation as it forms, which is where Search Console’s manual export starts to show its limits.
Ahrefs’ Site Explorer has a built-in shortcut for this: enter your domain, open the Organic Keywords report, and switch on the “Multiple URLs only” toggle, which filters the list down to keywords where more than one of your pages ranks, according to Ahrefs’ own glossary entry on keyword cannibalization. It won’t tell you which overlaps are benign the way the leading-page-share calculation does, but it’s a fast way to generate the candidate list without exporting and pivoting Search Console data yourself.
Semrush offers two tiers depending on the scale of the site. Position Tracking covers up to 5,000 keywords depending on your plan, which suits a mid-sized site keeping an eye on its core terms, per Semrush’s cannibalisation guide. If you’re managing a property large enough to outgrow that, Semrush Enterprise SEO runs a dedicated Cannibalization Report that tracks rankings and flags cannibalisation across up to 25,000 keywords, according to the same guide. That’s the difference that matters here: a growing blog can get by on Position Tracking, but a large ecommerce catalog or publisher with tens of thousands of indexed pages needs the enterprise tier or it’ll miss overlaps forming outside its tracked keyword set.
The catch with any automated setup, free or paid, is the same one from step one: don’t bake a hardcoded reference into a script you plan to run unattended for a year. Check it still points to something live before you trust its output blindly.
Outcome: A recurring, lower-effort way to catch new cannibalisation as your site grows, matched to the scale of your keyword set rather than a one-size-fits-all export.
Troubleshooting
The “Multiple URLs only” toggle or equivalent filter shows nothing, but you know pages overlap. Check the date range first. A filter looking at the last 28 days will miss overlap that only shows up over a longer stretch, especially for seasonal or lower-volume queries.
Two pages show up for a query but neither has meaningful clicks. This usually isn’t cannibalisation worth fixing yet. Low impressions and low clicks on both pages means the query itself isn’t earning much attention, so consolidating won’t move the needle much. Prioritise queries with real impression volume first.
Leading-page share looks fine, but rankings are still unstable. Position volatility without an impression split can mean something else entirely, like thin content, a technical issue, or Google testing which page to trust after a recent change. Don’t assume every ranking swing is cannibalisation.
Rank tracking numbers from a third-party tool don’t match what you see in Search Console. Third-party rank trackers scrape search results pages, and Google has changed how it serves those results to scraping tools, which Search Engine Journal reported affects tracking accuracy but has no effect on Search Console’s own numbers. Treat Search Console as the source of truth for your actual performance, and third-party trackers as directional.
Frequently Asked Questions
Does Google penalise sites for keyword cannibalisation?
No, cannibalisation isn’t a penalty in the sense of a manual action or algorithmic punishment. It’s a self-inflicted problem where your own pages compete against each other, which confuses Google about which page deserves to rank and often results in both ranking worse than a single consolidated page would.
How many pages ranking for one query counts as cannibalisation?
There’s no fixed number. Two pages splitting impressions close to evenly for a commercially important query is worth investigating. Five pages ranking for a query where one page holds nearly all the impressions usually isn’t a problem at all, since the leading-page share shows one URL already owns the query.
Can I check for cannibalisation without exporting data at all?
You can spot obvious cases just by scanning the default Performance report for a query and noting if it looks like it’s never fully attributed to one URL, but the report’s default counting treats impressions at the property level, not the page level, which hides partial overlap. Exporting query and page together is the only way to see the full split.
Should I merge every cannibalising page into one?
Not automatically. Merge pages that are genuinely answering the same question for the same intent. Keep pages separate if they’re serving a different stage of the buying journey or a different geography, even if they happen to overlap on one shared query.
Cannibalisation rarely announces itself. It just quietly caps how high your best page can climb while a weaker sibling sits a few spots below it, both of you assuming the other is the problem. Leave that audit too long and you won’t just lose rankings, you’ll lose the data history that would have told you which page deserved to win.
Keyworth builds the kind of structured, single-purpose content that avoids this fight before it starts, publishing pages against a keyword map rather than letting overlapping drafts pile up unchecked. If your site’s growth has outpaced your ability to track who’s competing with whom, talk to us about how we plan content to avoid it.


Leave a Reply