Code Snippet Library / SEO

Keyword Cannibalization Detector

The Keyword Cannibalization Detector is a free code snippet that flags real keyword cannibalization from a rank-tracking export, with a severity tier based on how close together and how visible both rankings actually are, rather than a blind rule that would flag harmless coincidental overlap.

↗ View on GitHub ⬇ Download Full Repo (.zip)
MIT
License
JSON
Language
Aug 17, 2026
Last updated
README.md View raw ↗

What this is (and isn’t)

Pure functions over the rank-tracking rows you supply. Not a hosted service and not a direct connection to any rank-tracking platform’s API.

Files

FilePurpose
cannibalization.jsgroupByKeyword(), classifySeverity(), detectCannibalization() — zero dependencies
test.js17-test suite covering grouping, severity classification, deduplication, and the visibility threshold

The two real guardrails

A visibility threshold, not a blind “2+ URLs” rule: a page ranking position 4 and another ranking position 97 for the same term are not really competing, so only URLs within the visibility threshold count. And severity scales with the position gap rather than a flat true/false flag, since a 2-position gap is urgent and a 22-position gap may reflect two pages serving genuinely different search intent.

FAQ

Is this free to use?

Yes. Free to download and use. MV3 charges $175/hr only for implementation help wiring this into your real rank-tracking export data.

What counts as real competition between two URLs?

Both URLs must rank within the visibility threshold (default position 30). A URL far outside that range is essentially invisible to searchers and is not treated as real competition.

How is severity decided?

By the position gap between the closest-ranking competing URLs: a tight gap (default 5 or less) is likely true cannibalization, a moderate gap is flagged for monitoring, and a wide gap is low risk. Thresholds are overridable, not asserted as a universal constant.

RB
Ryan Brooks
Technical SEO, MV3 Marketing