Keyword cannibalization: how to find and fix it
Keyword cannibalization, fixed. How two pages targeting one keyword hurt rankings, how to spot it in Search Console, and how to consolidate or differentiate.
Keyword cannibalization, fixed. How two pages targeting one keyword hurt rankings, how to spot it in Search Console, and how to consolidate or differentiate.

Keyword cannibalization is when two or more of your pages target the same keyword or search intent, so they compete against each other instead of one clear page ranking. Google has to choose between them, splits the clicks and link signals across both, and often shows the weaker URL. You end up fighting yourself for a spot you could own outright.
Keyword cannibalization happens when your own pages overlap on a query. Say you publish a guide called "email deliverability tips" and, six months later, a post called "how to improve email deliverability." Both chase the same searcher with the same intent. Google sees two candidates from one domain, can't tell which you want to rank, and hedges. The result is two pages stuck on page two instead of one page on page one.
The word "cannibalization" is the point: your pages eat each other's potential. Instead of pooling authority into a single strong URL, you scatter it. This shows up most on content-heavy sites that publish fast, which is exactly where SEO for SaaS teams run into trouble, and it gets worse at scale when you generate many similar pages, the failure mode programmatic SEO has to design around.
One clarification first, because it saves you from over-correcting. Overlap on a keyword is not automatically cannibalization. If two pages target the same words but genuinely different intent, a "best CRM for startups" roundup and a "CRM pricing" page, for example, both can rank without hurting each other. Cannibalization is specifically when the intent collides. So the real test is intent, not just shared phrasing.
It hurts in three ways, and they compound.
Diluted authority. Backlinks and internal links are votes. When two pages target one keyword, your inbound links and link equity get split across both. Neither accumulates enough to outrank a competitor who points everything at a single URL. This is the same reason internal linking automation matters: where your anchors point decides which page gets the credit.
The wrong page ranks. Google might surface your thin, older post when your detailed pillar page is the one you want shown. Searchers land on a weaker answer, bounce faster, and your best content sits invisible behind it.
Fluctuating positions. When Google is unsure which URL fits a query, it swaps them in and out. You see a page rank #6 one week, drop to #14, then reappear. That instability is a tell. A single, clearly-targeted page tends to hold its position; two competing pages wobble.
There's also a quieter cost. Cannibalization usually means you wrote two half-strong articles where one strong one would have served you better. You spent the effort twice and got less for it.
Start in Google Search Console, then confirm in the live index.
Open the Performance report. Filter by a specific query you care about, then open the Pages tab. If a single query shows impressions and clicks spread across two or more of your URLs, those pages are competing. Sort by impressions to find your highest-stakes overlaps first.
The other direction works too: pick a page, look at its queries, and watch for queries where a different URL also appears. The fastest signal of all is position instability. Use the date comparison to see if the ranking URL for a query keeps changing. A query whose ranking page swaps between two of your URLs week to week is cannibalization in motion.
For a quick manual check, search site:yourdomain.com "your target keyword" in Google. The pages it returns, and the order it returns them in, show which of your URLs the index considers relevant for that phrase. If three of your posts come back for one keyword and they all aim at the same intent, you've found a cluster to clean up.
Export your pages and their title tags. Near-duplicate titles are an obvious red flag. So are overlapping tags or categories: two posts filed under the same primary keyword tag are usually targeting the same thing. A simple keyword map, one row per URL with its primary keyword, makes the duplicates jump out.
There are two real fixes: consolidate or differentiate. The right one depends on whether the pages share intent.
When the pages cover the same topic and intent, merge them. Pick the URL with the most links, traffic, and history as the keeper. Move the best sections from the other pages into it so the survivor is more complete than any of the originals. Then 301-redirect the losing URLs to the keeper. The redirect passes most of their link equity to the page you kept and tells Google the duplicates are gone. One strong page now collects every signal that used to be split.
When each page can own a distinct angle, keep both but pull them apart. Rewrite each title and H1 to target its own keyword. Adjust the body so one page clearly answers "what is X" and the other answers "how to do X" or "X vs Y." The goal is that a reader, and Google, can tell at a glance which query each page serves. Done well, you turn one cannibalized keyword into two pages ranking for two different searches.
Sometimes you need to keep two similar pages live, for instance a printable version or a near-duplicate landing page. Use a rel="canonical" tag on the secondary page pointing at the primary one. That consolidates ranking signals onto the canonical URL without removing the duplicate. Canonicals are a hint, not a command, so use them for genuine duplicates, not as a lazy substitute for a real merge.
This step gets skipped and it's half the battle. After you choose the page that should rank, audit your internal links for the target keyword. If older posts link the phrase "email deliverability" to the page you're retiring, you're still telling Google that URL is the answer. Repoint those links, and their anchor text, at the keeper. Consistent internal anchors are how you confirm to Google which page owns the keyword.
Not every page deserves a merge. If a cannibalizing post is thin, dated, and earns almost nothing, the cleanest fix is to remove it and redirect it to the relevant survivor. Fewer, stronger pages beat a pile of overlapping weak ones. Pruning also shrinks the surface area where cannibalization can recur.
Here's the short version, by symptom.
| Symptom | Likely cause | Fix |
|---|---|---|
| Two URLs trade the #1 spot for one query | Same keyword, same intent | Merge content, 301 the weaker URL |
| Wrong (older/thinner) page ranks | Stronger page lacks internal links | Repoint internal anchors to the keeper |
| Positions swing every week | Google can't pick a candidate | Differentiate intent or consolidate |
| Two posts under the same primary tag | Topic/tag overlap at publish time | Re-target one, fix the keyword map |
| Near-duplicate that must stay live | Genuine technical duplicate | Add rel="canonical" to the secondary |
Prevention is mostly tag and topic discipline. Cannibalization is a publishing problem before it's a ranking problem, so the fix lives upstream.
Keep a keyword map: one document listing every published URL and the single primary keyword it owns. Before you write anything new, check the map. If the phrase is already claimed, either fold the new idea into the existing page or carve out a clearly different angle. Don't ship a second page for a keyword you already rank for.
Be strict with tags and categories. Two posts sharing a primary tag is a quiet signal they're chasing the same head term. Give each post a distinct primary keyword and reserve broad tags for navigation, not targeting. And plan topic clusters on purpose: one pillar page for the head term, supporting posts for the long-tail variants, each with its own intent and internal links flowing back to the pillar. Structured that way, your pages reinforce each other instead of competing.
This is the part that's tedious to do by hand on a growing blog, and it's exactly where Lyra helps. She dedupes every new topic against your existing posts before she writes a word, so she won't pitch you an article that cannibalizes one you already rank for. She writes in your blog's existing voice, fact-checks the claims, scores the draft, and opens a GitHub pull request for you to review. Nothing publishes until you merge. If you want an autonomous AI blog writer that respects your keyword map by default, that's Lyra, and the way in while she's in early access is to talk to the founder.
Find the overlaps, decide merge or differentiate, redirect or re-target, fix your anchors, and keep a map so it doesn't come back. That loop turns a self-competing blog into a set of pages that each own their keyword.
Lyra checks every new topic against what you already publish, so she writes posts that win new keywords instead of cannibalizing the ones you already rank for.
Step by step
Map every page to its target query
List your URLs in a sheet and assign one primary keyword and intent to each. Two rows with the same keyword and intent are your cannibalization suspects.
Find overlaps in Search Console
In the Performance report, filter by query and read the Pages tab. If multiple URLs draw impressions for one query and the ranking URL keeps changing week to week, you have overlap.
Decide: consolidate or differentiate
If the pages cover the same intent, plan a merge. If each can hold a distinct angle, plan to re-target one of them. Pick the URL with the most links and traffic as the page you keep.
Merge and redirect, or re-target intent
To consolidate, move the best content into the keeper URL and 301-redirect the losers to it. To differentiate, rewrite titles, H1s, and body to aim each page at its own keyword and intent.
Fix internal links and prevent recurrence
Point internal links and their anchor text at the page you want to rank. Then keep a keyword map so no new post targets a phrase you already own.
FAQ
Keyword cannibalization is when two or more pages on the same site target the same keyword or search intent, so they compete with each other instead of one clear page ranking. Google splits clicks, links, and relevance signals across the pages, and your strongest candidate often loses the spot it should own.
Usually yes, when the pages share the same intent. It dilutes link authority across near-duplicate pages, lets the wrong page rank, and causes positions to fluctuate as Google swaps which URL it shows. It is not always fatal: pages that target genuinely different intents can both rank fine, so confirm overlap before you act.
Open Google Search Console, go to the Performance report, and filter by a query. If two or more of your URLs show impressions for the same query and the ranking page keeps swapping, that is cannibalization. A site:yourdomain.com plus the keyword search shows which pages compete in the live index.
Merge when the pages cover the same topic and intent: combine the best content into one URL and 301-redirect the others. Differentiate when each page can own a distinct angle or intent, then rewrite titles, headers, and internal anchors so each clearly targets its own keyword.
Built by the tool you're reading about
Lyra finds the topics worth ranking for, writes them in your repo's voice, fact-checks every claim, and opens a pull request scored and ready to merge. You review and hit merge. Want to see what she'd write for you? Tell us about your blog and the founder will walk through it with you.
Keep reading

A practical guide to SEO for SaaS. How to pick winnable keywords, build topic clusters, and turn content into a channel that compounds instead of resetting.

Programmatic SEO for SaaS, done without spam. How to template pages that target long-tail queries, keep them useful, and avoid thin-content penalties.

An llms.txt guide for busy teams. What the llms.txt file is, whether it helps AI crawlers, and how to write and host one for your site in a few minutes.