Guide · Search Console analysis

How do you detect keyword cannibalization from a Search Console export?

Published . Updated . First published.

Keyword cannibalization can be spotted in a Search Console export as a query where two or more of your pages each hold a share of the impressions. To find it, build a table of queries and pages, then list queries where a second page passes a threshold. The list shows where impressions went, not whether pages compete.

  • Google's Search Console help points to the Pages tab for seeing which URLs were shown for a specific query (Google, Search Console Help, read 30 October 2026).
  • When data is aggregated by page, Google counts each unique URL in a result separately (Google, Search Console Help, read 30 October 2026).
  • Google's site diversity system generally won't show more than two web page listings from the same site in its top results, though it may show more when its systems judge that especially relevant to a particular search (Google, Search Central documentation, read 30 October 2026).
  • The Search Console API accepts a rowLimit from 1 to 25,000, defaults to 1,000, and returns top rows rather than every row (Google, Search Console API reference, read 30 October 2026).
  • Penlid's check lists a query when at least two of its pages each hold at least 10% of the query's page impressions and at least 100 impressions (Penlid, keyword cannibalization check, read 30 October 2026).

Does Search Console show keyword cannibalization?

Search Console's Performance report has no keyword cannibalization view: the phrase is an SEO term, and none of the Google pages we read defines it. For one query, Google's help says View the Pages tab to see which URLs were shown. Penlid's tool page says Search Console’s own report cannot show one table of queries and pages; no Google page we read says this, so treat it as Penlid's statement.

Detecting cannibalization from an export therefore means building that missing table yourself, with one row for each query and page and, to see which page led, one row for each day. The free keyword cannibalization check reads such a table in your browser.

How do you get a table of queries and pages?

You get a table of queries and pages from the Search Console API, from the BigQuery bulk export, from a Data Studio (formerly Looker Studio) report or from a third-party Sheets add-on, and each route limits the rows differently.

Four routes to a query-and-page table, and what limits the rows
RouteWhat you ask forWhat limits the rows
Search Console APIThe query and page dimensions, the web search type, and date for one row a dayrowLimit runs 1 to 25,000 and defaults to 1,000; 50,000 rows a day per search type; top rows only
BigQuery bulk exportThe searchdata_url_impression table, summed by query and URLThe first export comes up to 48 hours after setup and nothing earlier is included; anonymized queries have no query text; rows can repeat a key
Data StudioThe Search Console connector's URL Impression table, with query and page fieldsA table setting decides whether the export holds all of the table's data or only the rows shown (Google's Data Studio help)
Sheets add-onA third-party add-on, not Google's, grouped by query, page and dateCheck the row count yourself: exactly 1,000 rows is probably cut

A table built through the API holds top rows, not every row: Google's reference says the API does not guarantee to return all data rows but rather top ones, and its guide warns that asking for more detail means our system may drop some data. In BigQuery, add up rows with the same query and URL first (our advice, since Google's table reference mentions rows with repeated keys), and compute average position as SUM(sum_position) / SUM(impressions) + 1, because sum_position is zero-based. For why the Performance report's table stops at 1,000 rows, and where more rows come from, see the guide to getting more than 1,000 rows out of a Search Console export.

The check reads up to 200,000 rows or 12 MB of table text, so use a shorter range or one section of the site if it refuses a file.

When does the check list a query as split across pages?

The check lists a query when at least two of its pages each hold at least 10% of the query's page impressions and at least 100 impressions, thresholds that Penlid chose and calls judgment calls. A page's share is its impressions divided by the total for all of the query's pages in the table, and pages under the thresholds are counted but not named. The two tests do different jobs (our reading of the rules; the tool page gives no reasons for them): the share test ignores a page that sits beside a dominant one, and the impressions test stops a handful of impressions from listing a small query.

Shares are of page impressions, not of searches. Google says Each unique URL in a Search result is counted separately when data is aggregated by page, so two of your pages in one result are two impressions, and the total behind the shares can exceed the number of searches.

A date column adds the days on which the top page switched, which separates a query one page always leads from one where two pages trade places. The tool's rules:

  • A day counts only when the query had at least 10 impressions that day across all its pages.
  • A day when two pages tie for the most impressions has no top page and is skipped.
  • The newest day in the file is left out, because Google says The newest data can be preliminary (see why the last days in Search Console change).
  • A switch is a counted day whose top page differs from that of the counted day before it; the total is a count of days in the file, not of ranking changes.

Is a query with two of your pages always a problem?

No, because Google's own systems can show one site more than once, and two pages can serve different searchers. Google's ranking systems guide says we generally won't show more than two web page listings from the same site in our top results and that we may still show more than two listings. Sitelinks, which Google describes as links from the same domain that are clustered together under a text result, can put several of your pages in one result (our reading of that definition). Penlid's tool page gives the plainest case: a guide and a product page can both serve one query because searchers want different things.

So read each listed query before acting on it (our advice, not Google's): compare the split (a page just over the threshold is a different case from two pages of similar share), check who led, and ask whether a searcher who wanted one page would be served by the other.

How do you check that fixing a split worked?

You check a fix by comparing the page you changed with pages you left alone over the same days, because the changed page's own numbers also move with everything else. Penlid's did-it-work check does this, and its methodology page measures a change over the 28 days before it and the 28 days after it, calling the result not measurable when fewer than three untouched pages are left. Google's help suggests that, to measure a change, you confirm whether your improvement in Search maps closely in timing to your site changes, compared with similar earlier periods, which is timing evidence only (our reading); the guide to telling whether a content update worked covers the method.

If you merge by redirecting one URL to another, Google calls a redirect A strong signal that the target of the redirect should become canonical. That describes a signal, not a result: none of the Google pages we read says a merge raises clicks.

Example (illustrative numbers)

These counts are invented to show the arithmetic; they are not data from any site. A 90-day export of queries and pages, with a date on each row, includes the query hand mixer vs stand mixer, which four pages of one site were shown for.

Page impressions for one query in a 90-day file (invented numbers)
PageImpressionsShare of page impressionsNamed in the list?
/guides/hand-vs-stand-mixer/3,84060.0%Yes
/reviews/best-stand-mixers/2,17634.0%Yes
/shop/stand-mixers/3205.0%No: under 10%
/blog/mixer-attachments/641.0%No: under 10% and under 100 impressions

The page impressions sum to 3,840 + 2,176 + 320 + 64 = 6,400, so the shares are 3,840 ÷ 6,400 = 60.0%, 2,176 ÷ 6,400 = 34.0%, 320 ÷ 6,400 = 5.0% and 64 ÷ 6,400 = 1.0%. Two pages clear both thresholds, so the query is listed with the guide and the review. The shop page has more than 100 impressions but only 5.0% of the total, and the blog post fails both tests. Because each page is counted separately, the 6,400 could come from fewer than 6,400 searches (our arithmetic).

With dates, the newest of the 90 days is left out, leaving 89. One of those had under 10 impressions across the pages and two were ties, so 89 − 1 − 2 = 86 days count. The guide led for 31 of them, then the review for 12, the guide for 28 and the review for 15 (31 + 12 + 28 + 15 = 86): the top page switched 3 times, and the guide led 31 + 28 = 59 days to the review's 12 + 15 = 27. A query where the guide led all 86 days would show 0 switches. Neither pattern shows that the pages compete.

What this cannot tell you

  • A listed query is not proof of competition. Penlid's tool page says the list does not show that either is held back by the other, or that merging them would raise clicks; it describes where impressions went.
  • The table is incomplete. Google says Search Console stores and shows only the most important data rows, and the report's table omits anonymized queries and holds at most 1,000 rows, so a query that is not listed describes your table, not your site. The guide to how much of your traffic is in anonymized queries covers the gap.
  • Positions are averages. Google says a position number can mean different things in different situations, and Penlid's tool page notes that an average over a month can hide a page that moved from 3 to 40.

Questions people also ask

What is keyword cannibalization in SEO?

Keyword cannibalization is SEO shorthand for two or more pages of one site being shown for the same search, with the worry that they split clicks or hold each other back. None of the Google pages we read defines the phrase. An export can show how impressions divide between the pages; it cannot show that the division costs you anything.

How do you find keyword cannibalization in Google Search Console?

For a single query, click it in the Performance report and open the Pages tab to see which URLs appeared. For a whole site you need a table that pairs every query with every page, which comes from the API, the BigQuery export, a Data Studio report or a Sheets add-on. Then compare each page's share of the query's impressions and read the close pairs before drawing conclusions.

Is keyword cannibalization something to worry about?

Not on the strength of an export alone. Google's pages describe results that carry several listings from one site, through its site diversity system and sitelinks, and a guide and a product page can answer different needs on one query. Treat a listed query as a prompt to compare the pages' purposes, and act only where two pages do the same job.

How do you fix keyword cannibalization?

Penlid's tool page names three ways to resolve a split: merge, redirect or rewrite a page. Leaving two pages alone is also a fair outcome when they serve different needs. No Google page we read shows that merging or redirecting raises clicks, so change a pair only when both pages serve the same need, then compare the page you changed with untouched pages across the same dates.

Sources

  1. Performance report (Search results): Common tasks and use cases, Google, Search Console Help, read 30 October 2026. View the Pages tab to see which URLs were shown confirm whether your improvement in Search maps closely in timing to your site changes
  2. Performance report (Search results): About the data, Google, Search Console Help, read 30 October 2026. Each unique URL in a Search result is counted separately
  3. What are impressions, position, and clicks?, Google, Search Console Help, read 30 October 2026. a position number can mean different things in different situations
  4. Performance report (Search results): Overview and basic setup, Google, Search Console Help, read 30 October 2026. The newest data can be preliminary
  5. Performance report (Search results): Troubleshooting data discrepancies, Google, Search Console Help, read 30 October 2026.
  6. Performance report (Search results): Dimensions and data groupings, Google, Search Console Help, read 30 October 2026. Search Console stores and shows only the most important data rows
  7. Search Analytics: query, Google, Search Console API reference, read 30 October 2026.
  8. Getting your performance data, Google, Search Console API guide, read 30 October 2026. our system may drop some data
  9. Search Analytics, Google, Search Console API reference, read 30 October 2026. does not guarantee to return all data rows but rather top ones
  10. Table guidelines and reference (bulk data export), Google, Search Console Help, read 30 October 2026.
  11. Query guidelines and sample queries (bulk data export), Google, Search Console Help, read 30 October 2026.
  12. Start a new bulk data export, Google, Search Console Help, read 30 October 2026.
  13. A guide to Google Search ranking systems, Google, Search Central documentation, read 30 October 2026. we generally won't show more than two web page listings from the same site in our top results we may still show more than two listings
  14. Sitelinks, Google, Search Central documentation, read 30 October 2026. links from the same domain that are clustered together under a text result
  15. How to specify a canonical URL with rel="canonical" and other methods, Google, Search Central documentation, read 30 October 2026. A strong signal that the target of the redirect should become canonical
  16. Keyword cannibalization check, Penlid, read 30 October 2026. Search Console’s own report cannot show one table of queries and pages It does not show that the pages compete, that either is held back by the other, or that merging them would raise clicks
  17. Methodology: how we measure, and what we can't, Penlid, read 30 October 2026.

About this guide

Who: Penlid builds the tools these guides use.

How: Drafted with Claude, Anthropic's AI model. A second pass re-read every source and checked each number, quote and policy statement against it on 30 October 2026.

Why: To help you measure content and search changes honestly.