Prism
Start free
Search Performance · Cannibalization

Two of your pages, one query, split impressions.

Prism reads your own Search Console data and lists the queries where more than one of your pages is taking a real share of the impressions, with the share each page holds and the best-positioned one named as the page to consolidate into.

What counts as competing

A threshold, not a hunch.

Most cannibalization lists are long because every query where two URLs have ever been returned lands on them. Prism sets a bar, states it on the page, and reports what clears it.

A fifth of the impressions, each
A page is a contender for a query when it holds at least 20% of that query's impressions in the window. One page on 95% and another on 5% is one page ranking, not two pages competing.
Two contenders minimum
A query is reported only when two or more pages clear that bar. Everything else stays off the list, so the list stays short enough to work through.
Twenty impressions to be counted
A page and query pair below 20 impressions in the window is ignored. Below that the share figure is arithmetic on noise.
Ordered by what is at stake
The list is sorted by the query's total impressions, so the query splitting the most demand is the first row, not the one with the most contenders.

The heatmap is the diagnosis.

Above the table, every contending page is a row and every contested query is a column, shaded by the share that page holds of that query. Two dark cells in one column is the picture of a split. A row that is dark across several columns is a page quietly competing with the rest of the site.

Open a row and you get each contender on its own, with its clicks, impressions, click-through rate and average position. Impression share alone cannot tell you which of two pages actually converts, and the page you consolidate into should be the one that does.

The near-duplicate case

Different wording, same page.

The Cannibalization report groups by the exact query Search Console reported, because that is the unit Google served. The other half of the problem is two queries that mean the same thing, and that lives one report over.

Nearest queries by meaning
Open any query in Keywords and its Analysis page lists the queries closest to it in meaning, computed from stored query embeddings rather than from shared words.
The ones sharing a page
A neighbour that shares a ranking page with the query you opened is flagged. That overlap is the signal; similarity on its own is not.
And the dated handovers
The same page lists every URL that has ranked for the query and the dated moments one took over from another, which is often what a split turns into.
Prism's keyword analysis for the query running shoes. A Page swaps panel lists two dated handovers across 480 days with data: /running to /blog/shoe-guide, held on 9 of the next 10 days with data, at 74.0% of the impressions before and 66.0% after, then /blog/shoe-guide to /running/road, held on 10 of 10, at 72.0% before and 71.0% after. It names /running/road as the predominant page today. Above it sit the query's daily clicks and average position, a table of the four URLs that have ranked for it carrying the first and last date each appeared and whether it is still appearing, and a weekly impression-share chart whose bands hand over between the same three pages.
Search Performance → Keywords → Analysis
of a query’s impressions makes a page a contender
20%
of a query’s impressions makes a page a contender
contenders before a query is reported at all
2
contenders before a query is reported at all
of history to look back over, and it keeps growing
16mo
of history to look back over, and it keeps growing
credits used by the report
0
credits used by the report

Frequently asked questions

When does Prism call a query cannibalised?

When at least two of your pages each hold a fifth or more of that query's impressions in the window you are looking at, counting only page and query pairs with at least 20 impressions. One page on 95% and another on 5% is not two pages competing, it is one page ranking, and reporting it as cannibalization would bury the queries where something is actually being split.

Does it match queries by meaning or by exact wording?

The Cannibalization report groups by the exact query string Search Console reported, because that is the unit Google served. Meaning-based matching lives one report over: open any query in Keywords and its Analysis page lists the queries nearest to it in meaning, flagging the ones that share a ranking page with it. Between them you get both the split you can prove and the near-duplicate you would otherwise miss.

Which page does it tell me to keep?

The best-positioned contender, by average position over the window. Prism names it rather than merging anything: the fix is yours to make, and it is usually a redirect, a rewrite or an internal link, not a button in a tool.

What does it cost to run?

Nothing. It reads the Search Console data Prism already stores for the property, so it uses no credits, on every plan including the free one.

Find out which pages are fighting each other.

Connect a property and the report is there on the first sync, over whatever history Google still holds. Cannibalization, defined.