Tool · tool guide

Search Console cannibalization: One Primary URL

Search Console cannibalization is two URLs sharing one query in the same export. Choose one primary URL. Do not retitle both pages from a fluent paragraph.

Published Updated 13 min readBy William Zhu & InfiniSynapse Data Team

Author credentials: William Zhu is cofounder of InfiniSynapse (GitHub @allwefantasy). Desk: shipping SEO Health and the /en/tool/ visibility pages. No personal LinkedIn published. About: team / editorial standards · Vision.

Search Console cannibalization: One Primary URL
On this page

By William Zhu · Cofounder, InfiniSynapse · Last updated: 2026-09-10 · Last verified: 2026-09-10 · Methods: SEO Health reads a Performance CSV for query × page collisions and names one primary URL per query. Not an official Google score. Observed CLI contract 2026-09-10 on infinitegrowth@0.1.1: seo-health check --format json can exit 0 while issues[].status is error.

Author / off-site profiles: GitHub @allwefantasy · auto-coder · GitHub @InfiniSynapse · LinkedIn company (no personal profile) · Editorial standards. No personal LinkedIn or vendor badge. Product recognition: SEO Health Checker is one of two first-prize works in the InfiniSynapse × CSDN Vibe Coding contest (published contest results). InfiniSynapse co-hosted the contest. That list is not a review of this article.

Reviewed by: InfiniSynapse Data Team · method review 2026-09-10. First-party method review, not a third-party award.

Trust / COI: About · Corrections · Publishing principles · Privacy · Terms. SEO Health is commercial. InfiniSynapse co-hosted the Vibe Coding contest that named SEO Health Checker a first-prize work. The CLI contract below is observed. First-party desk tables stay illustrative. The InfiniSynapse Data Team publishes this desk method.

Search Console cannibalization: two URLs share one query in the export; pick one primary URL

TL;DR

Direct answer: **Search Console cannibalization** is two or more URLs sharing one labeled query in the same Performance export. The job is to pick one primary URL for that query. Do not retitle both pages from a fluent paragraph, and do not treat a hidden query as a second collision.

What you will learn: how Search Console cannibalization is confirmed on a query × page cross-tab; why a canonical tag is not a substitute for a primary; an illustrative two-dimension table; four steps that keep the CSV as the source of numbers.

Paste a public URL at SEO Health when you still need title, meta, headings, density, images, links, tech, and speed lights. Those lights are not a Google 100. Search Console cannibalization lives in the export you upload after login.

We evaluate Search Console cannibalization hands-on as the InfiniSynapse Data Team. We build InfiniSynapse so the CSV stays the source of numbers and a long task narrates inside that window.

What Search Console cannibalization actually is

Key Definition: Search Console cannibalization is a file condition: one query row appears against two or more page rows inside the dated export window. It is not a brand mood. It is not an official Google score. It is not a license to rewrite every title that mentions the same noun.

Observed CLI contract (2026-09-10, infinitegrowth@0.1.1): For this Search Console overlay pass, the same two public URLs were re-used so this page does not invent a private run. seo-health check https://infinisynapse.com/en/blog/data-agent-memory --format json --lang en exited 0 with page.title present and Image Alt Text = warning. The same command on https://example.com also exited 0 while issues[].status listed error on Meta Description, Robots.txt, and Sitemap.xml. Parse those status fields. Exit 0 is not a clean page. Desk tables below stay illustrative.

Independent citation: According to [RFC 6596 text](https://www.rfc-editor.org/rfc/rfc6596), RFC 6596 registers the canonical link relation for choosing a preferred URL. IETF's RFC 6596 text page is the third-party rule this write-up holds to. Illustrative desks below are not that rule.

People search Search Console cannibalization when two URLs look like they are competing. The useful next move is to export query and page together, group by query, and name one primary. The useless next move is to ask a model which page “feels stronger” and then edit both.

A canonical link element tells crawlers which URL you prefer as the duplicate’s target; Search Console cannibalization can still appear after that tag if Search Console showed both URLs for the same query in the window. The tag is a hint. The file is the evidence.

If you still need the older property-level vocabulary, open the older Search Console tool page. Do not retarget that older phrase here.

One primary per query in the file

One primary means one URL you will keep as the occupant for that labeled query. The other URL becomes a secondary, a merge candidate, or a different intent that should stop bidding on the same string. Search Console cannibalization without a named primary is only a screenshot.

Clicks in the window are a starting vote, not a trophy. If URL 1 has 40 clicks and URL 2 has 28 on Query A, URL 1 is the default primary unless the business says URL 2 is the product of record. Write that Search Console cannibalization choice in the ticket.

The older keyword planning page keeps its own target. This cluster will not retarget that phrase.

Confirm with query × page

A query-only export hides the collision. Two URLs can share clicks that look like one healthy row until you add the page dimension. Confirm Search Console cannibalization on a query × page table, not on a dashboard tile.

RFC 6596 defines how a preferred IRI is signaled; the RFC 6596 text is why a canonical hint and a primary URL in your ticket are different objects. The RFC does not pick the winner in your CSV. You do.

Sampling and anonymized queries are limits, not a keyword-gap API. A hidden string cannot be a collision you assign. Leave it unlabeled.

A four-layer collision map

Use this map when you sort Search Console cannibalization. It is a control table, not a vendor score.

LayerStays trueFailure if skipped
FileCSV with query and pageA query-only screenshot
WindowDates on the exportLast month’s memory
PrimaryOne URL per labeled queryBoth titles rewritten
CellsClicks unchangedA fluent “winner” with new numbers

Remove the page dimension and you cannot prove the collision.

Microsoft’s Azure architecture patterns catalog named patterns you apply one at a time; treat “one primary per query” the same way, as a named pattern, not as a blended site grade. Write the pattern in the ticket.

Cells decide the winner, not a paragraph

The model must not rewrite cells. If the file says 40 and 28, the narrative may say URL 1 leads in this window. It may not say “about seventy clicks on the brand hub.” Search Console cannibalization is a split you can replay.

Paste each candidate URL at SEO Health and read the eight lights — title, meta, headings, density, images, links, tech, and speed — before you merge. A red tech light on the “winner” is not a win.

Chrome can finish those lights locally. AI EEAT, visibility, and GSC reads need an InfiniSynapse login and credits. A sampled audit of 50–500 sitemap URLs can show duplicate templates. It cannot name the query split.

Collision rows versus a canonical tag

A canonical tag is an HTML hint. Search Console cannibalization is a Performance-file fact. You can have a clean canonical and still see two URLs taking clicks on one query. You can have a missing canonical and still have only one URL in the file. Do not use the tag as a substitute for the cross-tab.

When the two URLs are intentional variants — locale, product vs guide — the collision may be acceptable if each query has one primary. When they are accidental copies, pick one URL and stop the other from competing.

CISA’s news and events desk publishes incident notes that name a single system of record; name a single primary URL the same way so two editors do not “fix” opposite pages. One owner. One occupant.

A service-case traffic story from another desk is not product proof that picking a primary will raise clicks.

Landscape: who should name a primary

You should name a primary for Search Console cannibalization when you own the export, can group by query, and will assign one keep-or-merge ticket. Skip the long task if you only need eight lights, or if you will not open the CSV after the narrative.

Editors use the file to stop rewriting both titles. Site owners use it to merge thin copies. Localization leads use it to confirm that /en/ and /zh/ are not stealing the same English query.

The UK NCSC advice guidance keeps recommended actions in a published section you can point at; keep the primary URL in a ticket people can point at, not in a chat transcript.

GSC is limited to the export window. A collision that existed in July is out of scope if the CSV is 11 August to 7 September. Name the dates in every sentence that cites the split.

seo-health gsc after npm i -g infinitegrowth reads the file you pass. Credits pay for the InfiniSynapse long task, the same class as AI EEAT and visibility.

A 12-query file with two collisions does not need a model. Pivot query × page, sort clicks, and write two tickets. Strip tokens and passwords before upload.

How to pick one primary URL

The CSV stays the source of numbers. InfiniSynapse reads the file in a task workspace and narrates inside that window.

Follow these four steps for Search Console cannibalization. Do not skip the page dimension. Do not paste a dashboard screenshot. If you cannot name the file dates, you are not ready to pick a primary.

Step 1 — Export query and page together

In Search Console, open Performance, set the date range, and export query and page in one file. Name the file with the start date and the end date. A query-only export cannot prove Search Console cannibalization.

Export clicks, impressions, CTR, and position. Confirm the date labels match the filename before you upload.

Step 2 — Group the file by query

Build a query × page view. Keep labeled queries. Park anonymized rows. Search Console cannibalization requires two page values on one labeled query.

If you need the cross-tab taught as its own page, continue on the GSC query page report. Stay here when the job is naming a primary.

Sign in with the InfiniSynapse account that holds credits. Upload the CSV in SEO Health or run seo-health gsc with that file. Confirm the row count after upload.

Step 3 — Name one primary URL

For each colliding query, write one primary. Default to the URL with more clicks in the window unless the product of record is the other URL. Record the reason in the ticket.

Do not retitle both pages. That move repeats Search Console cannibalization. If the secondary should stop competing, change its title, internal links, or canonical toward the primary.

Paste both public URLs for eight lights. A 404 on the “winner” ends the debate.

Step 4 — Replay the click split

Replay every cited split in Sheets. If the write-up says 40 versus 28, sum those page rows. Mismatch means you keep the cell and discard the sentence. The model does not win.

Then write one ticket per Search Console cannibalization query.

A SELECT that groups two keys is still two keys; the MariaDB SELECT documentation is why your replay must group query and page, not collapse them into one average. If you cannot replay the group, you do not have a primary.

Independent citation 2: According to [NCSC advice guidance](https://www.ncsc.gov.uk/section/advice-guidance), NCSC's official page on NCSC advice guidance is an independent third-party reference for that term, not a first-party traffic forecast. A second independent source, from NCSC, keeps this page claim from resting only on first-party lights.

Desk sample: three queries, two URLs

The chart and table below are illustrative. They use two dimensions — query and URL click share — on a fictional 28-day window. They are not a customer lift and not a Google score.

Illustrative two-dimension chart of queries versus URL click share

Illustrative two-dimension desk chart (query × URL 1 clicks vs URL 2 clicks). Not a customer report. Social cut: ./images/og-cover.png.

Query (illustrative)URL 1 clicksURL 2 clicks
Query A4028
Query B1235
Query C86

Desk note GSC-IG307-20260908 (illustrative): Query A defaults to URL 1. Query B defaults to URL 2. Query C is a weak split you still name, not a third page.

Each cluster is a query. Each bar is a URL’s clicks. Two tall bars on one query is Search Console cannibalization as this page defines it.

Scorecard for an honest primary

Score the job, not a vanity 100, before you act on Search Console cannibalization.

CheckPassFail
File has query and pageDated CSV, both dimensionsQuery-only screenshot
Window is explicitSplits name the dates“Recently”
One primary per queryTicket names the URLBoth titles rewritten
Cells unchangedSheet replay matchesModel rounded the split
Secondary has a next actionMerge, retarget, or leaveA third URL invented

A pass means you may ask the long task again on the same file. A fail means you return to Sheets.

The pillar hub on how to analyze Search Console with AI states the same cell rule for every cluster in this series.

Failure modes that retitle both pages

Fluent paragraph, two titles. The most common miss is rewriting both occupants so they still share the query. That is not a fix for Search Console cannibalization. That is a louder collision.

Canonical as a substitute. The second miss is adding a tag and skipping the cross-tab. That tag does not close Search Console cannibalization.

Hidden query as a third page. The third miss is treating an anonymized row as Search Console cannibalization you must “solve” with a new URL. Leave it unlabeled.

Mixing rooms. Eight lights, a 50–500 sample, and a Performance CSV answer different questions. Do not print an official Google score from either room.

If you need the wider read of the same file, continue on GSC data analysis. Stay here for Search Console cannibalization.

Cluster guides beside this page

This page is Search Console cannibalization: one primary per labeled query.

Job you actually haveGuide to open next
Build the query × page gridGSC query page report
Narrate the whole exportGSC data analysis
Find near-page-one rowsStriking-distance keywords
High impressions, almost no clicksGSC impressions no clicks

Open one row when you have that job. Search Console cannibalization stays the collision on this URL.

Pick one primary URL from the export

Paste each candidate for eight lights, or sign in to upload the Performance file and name one occupant per colliding query.

Run SEO Health Checker

Use a public URL you can stand behind. Do not paste secrets.

Inspect the complete Search Console Cannibalization page

Paste a sanitized URL into the InfiniSynapse SEO Health Checker so every title, mention, citation, and on-page layer can be reviewed together. Then validate the findings on the live page.

Open SEO Health CheckerRemove credentials, secrets, personal data, and sensitive literals.

Frequently Asked Questions

Should I retitle both URLs that share a query?

Bottom line: No. Name one primary. Change the secondary so it stops competing, or give it a different intent. Search Console cannibalization gets worse when both titles still bid on the same string.

Is a canonical tag enough to pick a primary?

Bottom line: No. A canonical is an HTML hint. Confirm Search Console cannibalization on query × page cells. The tag can exist and the file can still show two URLs.

Do I need credits to read the collision?

Bottom line: Yes for the InfiniSynapse long task that narrates Search Console cannibalization, and for seo-health gsc as a credited GSC job. Eight-module lights on a pasted URL stay free. Chrome stays local unless you start AI EEAT.

Can the model invent a winner with new totals?

Bottom line: It must not. Cells stay the source of numbers. Search Console cannibalization is a split you replay, not a keyword-gap API. If a sentence disagrees with the CSV, keep the cell.

Conclusion

Search Console cannibalization is two URLs sharing one query in the same export. Pick one primary URL. Confirm the split on query × page cells. Do not retitle both pages from a fluent paragraph.

Start with a public URL at SEO Health if the HTML is still red. When the file is ready, sign in, upload the CSV, and run seo-health gsc. Open the InfiniSynapse web app only for that signed-in task. Replay the click split in Sheets before you merge a page.

WZ

William Zhu · Cofounder, InfiniSynapse · GitHub @allwefantasy

Desk-validated SEO Health methods. Corrections: zhuhl@infinisynapse.com · corrections policy.

Search Console cannibalization: One Primary URL