How to Check Keyword Cannibalization in Ahrefs & Semrush (and the Faster Way)
Step-by-step ways to spot keyword cannibalization in Ahrefs and Semrush, what each tool can and can't see, and a faster method using your own Search Console data.
· 8 min read
If you already pay for Ahrefs or Semrush, you don't need another subscription to check for keyword cannibalization — both tools can surface it, and this guide walks you through exactly where the reports live in each. But it's worth knowing up front what those tools are actually measuring, because it isn't the same data Google shows you about your own site. That gap is the whole reason a lot of "cannibalization checks" miss real clashes and flag fake ones.
Quick answer — where the feature lives:
- Ahrefs: Site Explorer → your domain → the Organic keywords report, then look for a single keyword mapped to more than one of your URLs. Ahrefs also flags "Position history" so you can watch two URLs trade places over time.
- Semrush: Position Tracking has a dedicated Cannibalization report — but it only works once you've set up a tracking campaign for your domain and keywords. Without a campaign, use Organic Research → Positions and eyeball the same pattern.
Both approaches read third-party rank data — a snapshot of what a keyword's SERP looked like when the tool last crawled it — not your Search Console impressions. Keep that distinction in your back pocket; the last two sections are built on it.
How to check keyword cannibalization in Ahrefs
Ahrefs doesn't ship a button labeled "cannibalization," so you find it by reading the organic keyword data the way it's meant to be read.
- Open Site Explorer and enter your domain (use the mode — domain, subdomain, path — that matches the section you're auditing).
- Go to the Organic keywords report. This lists every keyword Ahrefs believes your site ranks for, with the URL it thinks is ranking and the position for each.
- Look for one keyword tied to multiple URLs. This is the tell. When Ahrefs has recorded two different pages of yours ranking for the same keyword — even across recent crawls — that keyword is a cannibalization candidate. Sort or filter the report so keywords cluster, and scan for the same term pointing at different pages.
- Read the Position history chart. Click into a suspect keyword and open its position history. This is the classic cannibalization read in Ahrefs: if you see the ranking URL flip between two of your pages — page A holds the spot for a while, then page B takes over, then back again — that's the volatility signature of a genuine clash. A keyword that has quietly held one steady URL isn't cannibalizing.
That flip-flop chart is the most useful thing Ahrefs gives you here, because a single co-occurrence of two URLs can be noise. The back-and-forth over time is the signal.
Be clear about what Ahrefs can and can't show you. Ahrefs isn't reading your site's Google Search Console — it maintains its own keyword database by crawling SERPs and modeling rankings. That has real consequences for a cannibalization check:
- It's third-party rank data, so it reflects Ahrefs' last crawl of that SERP, not necessarily where you rank for a given user today.
- Position history granularity is limited to how often Ahrefs re-checks a keyword; a fast flip-flop between two of your pages can be smoothed over or missed entirely between crawls.
- There is no impression data. Ahrefs can tell you a keyword has an estimated search volume, but it can't tell you how many impressions your two pages actually earned or how those impressions split — which is exactly the number that separates a real clash from a page Google merely tests occasionally.
None of that makes Ahrefs wrong; it makes it a rank-tracking tool being used for a job that ultimately lives in your own performance data.
How to check keyword cannibalization in Semrush
Semrush is the one tool here with a report that says "cannibalization" on the label — but it's tucked inside Position Tracking, and it has a setup cost.
- Set up a Position Tracking campaign. In Position Tracking, create a project for your domain, choose your location and device, and add the keywords you want to monitor. This is the part people forget: the Cannibalization report has nothing to analyze until a campaign has been tracking your keywords for a while.
- Open the Cannibalization report inside that Position Tracking project. Semrush flags keywords where more than one of your landing pages has ranked, and highlights where the ranking page has changed — the same flip-flop logic, packaged for you. It'll show you the affected keywords, the competing URLs, and how positions have moved.
- Read it the same way you'd read Ahrefs: you're hunting for keywords where two of your pages are trading the ranking, not keywords where a second page shows up once and vanishes.
If you don't want to build and wait on a tracking campaign, there's an Organic Research alternative:
- Open Organic Research → Positions for your domain.
- Filter or sort so you can spot the same keyword appearing against different URLs.
- Cross-check a suspect keyword's history to see whether the ranking page is stable or swapping.
The Organic Research route uses Semrush's database estimates rather than a live tracked campaign, so it's quicker to run but coarser — a decent first pass before you commit to a Position Tracking project.
As with Ahrefs, Semrush is modeling rankings from its own crawl and database. The Cannibalization report is genuinely convenient, but it's still built on tracked/estimated SERP positions for a keyword list you defined — not on the full, actual query set your pages earned impressions for last month.
The honest limitations of both
Ahrefs and Semrush are excellent tools, and cannibalization detection simply isn't the job they were built for. The angle here isn't that one is better than the other — it's that both draw on a different data source than the one that can actually settle whether a clash is real. Three limits apply to both:
- Crawl/rank-tracker data vs. your real impressions. Both tools estimate where you rank by crawling SERPs and modeling positions. Google Search Console, by contrast, reports the impressions and average position your pages actually recorded. When the two disagree — and they often do — Search Console is the ground truth for your own site.
- Sampled keywords vs. every query you actually get. A rank tracker follows a keyword list: the ones the tool's database knows about, or the ones you loaded into a campaign. But your pages pick up impressions on a long tail of queries no keyword tool has in its index — misspellings, questions, oddly phrased searches. Cannibalization frequently happens on exactly those unglamorous long-tail queries, which is precisely where sampled data is blind.
- No CTR or impression split. This is the big one. Confirming cannibalization means seeing that two of your pages each capture a meaningful share of a query's impressions — a roughly balanced split, not one page with 4,000 impressions and another with 30. Neither Ahrefs nor Semrush can show you that split, because neither has your impression or click-through data. They can show you two URLs appearing for one keyword; they can't show you whether it's a real fight or one clear winner Google occasionally tests.
Put together, those three limits mean a rank-tracker cannibalization check is a strong hint generator and a weak confirmation tool. It's great for pointing you at suspects. It can't close the case.
The faster way: use your own Search Console data
The data that actually confirms a clash is sitting in your Google Search Console — the impressions, the position, and the page-by-page split for every query your site really earned. You can mine it manually:
- Open the Performance report in GSC, set the date range to the last three months, and go to the Queries tab.
- Pick a suspect query and click it to filter the whole report to that query.
- Switch to the Pages tab. If two or more of your URLs both draw impressions for that one query, you've found a candidate.
- Check the impression split — a real clash is roughly balanced (each page taking ~20%+), not one winner and a rounding error.
- Confirm the flip-flop by stepping through the date range week by week and watching which URL leads.
That's the same volatility-plus-split logic Ahrefs and Semrush approximate — except run against your actual data instead of a crawl estimate. The catch is that it's slow: you have to guess each suspect query first, then filter, then eyeball the split and trend, one query at a time. On a real content site that's not realistic by hand.
The 60-second path is to let a keyword cannibalization checker do that pass across every query at once. It reads your Search Console data directly, finds each query where two or more pages capture real impression share, scores the flip-flop volatility, and suppresses the false positives (sitelinks, locale alternates, stable double-rankings) that trip up both the manual method and the rank-tracker approach. Same signal, on the ground-truth data, minus the afternoon. If you're new to the concept, start with what keyword cannibalization is; once you've found your clashes, the five fixes and a decision table tell you what to do with each one.
Quick comparison
| Ahrefs | Semrush | GSC checker | |
|---|---|---|---|
| Data source | Third-party crawl / rank database | Tracked campaign or database estimates | Your own Search Console impressions |
| Setup required | None (Site Explorer, any domain) | Position Tracking campaign (Organic Research needs none) | Sign in with Google, read-only |
| What it can't see | Impression split, your true positions, long-tail queries | Impression split, queries outside your list | Nothing about competitors — your site only |
| Cost | Paid subscription | Paid subscription | Free scan; one-time unlock for the full report |
The honest summary: if you already own Ahrefs or Semrush, use them to generate suspects — the Position history chart and the Cannibalization report are both good at surfacing "these two pages keep swapping." Then confirm and fix on the data that can actually prove it. Different tools, different data source, different job.
Check your site free