Static SEO operator tooling · upload-only analysis

Keyword Cannibalization Checker

Upload one Google Search Console query+page CSV, surface the worst page collisions first, and leave with transparent severity scores, affected impression estimates, and a concrete next action.

1. Upload a GSC query+page export

Required logical fields: query, page, clicks, impressions, and position. CTR, country, device, and date are supported when present. All processing stays local in your browser.

Upload one CSV file Rows with blank query, blank page, or non-positive impressions are dropped. The tool flags overlap risk, not guaranteed ranking harm, so treat the output as a prioritization queue rather than final SEO truth.
Download sample CSV
No CSV loaded yet.
What you get
A ranked overlap table, severity explanation, page-level breakdown, exports, and a copy-ready summary.
What this does not do
No Search Console API, no crawl, no saved uploads, and no external calls beyond loading the local sample file.

2. Controls

Tune the thresholds before you decide whether to merge, strengthen, or intentionally split competing pages.

Default 50. Lower it only if you want to inspect smaller overlaps.
Default 2. Use 3+ when you only want widespread collisions.
Comma-separated. Any matching query token removes that cluster from the eligible list.
If severity ties, higher affected impressions wins. Remaining ties sort by query.
Default 100. Exports still include the full filtered result set.

3. Summary KPIs

Eligible counts stay separate from exclusions so you can see what disappeared because of brand filters or thresholds.

Eligible queries
0
High severity
0
Medium severity
0
Low severity
0
Affected impressions
0
Affected clicks
0
Parsed rows
0
Invalid rows
0
Excluded by brand
0
Below impression floor
0
Below page-count floor
0
How severity scoring works
The v1 model is intentionally transparent: more split impressions, more competing pages, and a wider rank spread all push severity upward.
severityScore = round( min(40, totalImpressions / 25) + ((1 - topPageShare) * 35) + min(15, (distinctPages - 1) * 5) + min(10, positionSpread) )
Recommendation rules
  • merge-or-canonicalize → 3+ pages compete and the top page owns less than 60% of impressions.
  • strengthen-primary-page → one page leads, but it only owns 60–85% of impressions and rank spread is still large.
  • split-intent-and-retitle → overlap exists, but the situation is not a clean consolidation case.

4. Ranked overlaps

No analysis yet.
No ranked output yet
Load the sample fixture or upload your own Search Console export to detect cannibalization candidates.
Important SEO disclaimer
This tool detects overlap risk from exported Search Console data. It does not prove ranking harm, and some multi-page visibility may be healthy intent splitting, localization, experimentation, or site architecture at work. Use it to prioritize review—not to merge pages blindly.