Two pages on your site rank for the same search: canonical or 301?
Last reviewed: 18 July 2026
You search for your own service, and two of your pages show up. Or worse, they take turns. One week the old blog post ranks, the next week the service page does, and neither sits as high as either used to on its own. Google calls this keyword cannibalisation. You have two tools to fix it: a canonical tag or a 301 redirect. They do different things, and picking the wrong one can cost you a page that was quietly earning you work. This page explains what each one does, when to use which, and the one mistake we see most often.
What's actually going wrong
When two pages on your site target the same search, Google has to pick one to show. It doesn't always pick the same one, and it splits signals (links, engagement, relevance) between them. The result is two middling rankings instead of one strong one.
The fix is consolidation: tell Google clearly which page is the main one. Both the canonical tag and the 301 redirect do that. The difference is what happens to the losing page.
What a canonical tag does
A canonical tag is a line in the page's code that says "the main version of this content lives over there." The page stays live. Visitors can still open it, links to it still work, and anything it ranks for on its own can keep ranking. Google treats it as a strong hint (not a command) to credit the preferred page instead.
Use a canonical when:
- Both pages still serve a purpose. A detailed how-to article and the service page it supports can both exist; the canonical just tells Google which one to prefer for the overlapping search.
- The secondary page still ranks and earns clicks in its own right. This is the big one, covered next.
- The pages are near-duplicates for technical reasons: print versions, tracking-parameter URLs, a page reachable at two addresses.
What a 301 redirect does
A 301 is permanent removal. The old address forwards to the new one, the old page ceases to exist for visitors and for Google, and over time its ranking signals pass to the destination. There's no "keeping" the old page; it's gone.
Use a 301 when:
- The page is truly retired. Discontinued service, an event that's over, a product you no longer sell and won't again.
- The content genuinely moved. You rewrote the old post into a better page and the old one has nothing left the new one doesn't cover.
- The old URL is thin, outdated, or embarrassing and you'd rather nobody landed on it at all.
The mistake: 301-ing a page that still ranks
Here's the pattern we see when a site gets "tidied up." Someone audits the site, finds an old page that overlaps with a newer one, and 301s it to keep things clean. But that old page was sitting around position five for its own search and bringing in steady clicks every week.
After the redirect, those rankings don't transfer neatly. The old page ranked for its own mix of terms, and the destination page doesn't match that intent as well. The clicks it was earning shrink or vanish, and you've traded real, measurable traffic for tidiness.
The rule: before you 301 anything, check what it ranks for. Search Console shows you every query a page appears for and how many clicks it gets. If the page is earning positions and clicks on its own, use a canonical instead: you consolidate the overlap without killing what works. A 301 is for pages with nothing left to lose. This applies double if other sites link to the old page; a canonical keeps that page (and its links) alive.
The trap that undoes both: contradictory robots tags
One more failure mode from the field. WordPress sites accumulate plugins, and sometimes two of them both try to control how Google indexes a page. A common version: a leftover "must-use" plugin from a staging setup that stamps a noindex tag on everything, alongside an SEO plugin that outputs its own robots tag saying index away.
The page then sends Google two contradictory instructions in the same document. Google doesn't average them; it picks one, and you don't control which. The symptom is maddening: a page that indexes fine for months, then drops out, then comes back, with no change you made.
If a page behaves strangely no matter what you do with canonicals or redirects, view the page source and search for "robots". There should be exactly one directive, and it should say what you mean. Two robots tags means something in your stack needs removing before any consolidation strategy can work.
A quick decision path
- Are both pages useful to a visitor? Yes → canonical. No → keep going.
- Does the losing page rank or earn clicks on its own? (Check Search Console.) Yes → canonical. No → keep going.
- Is the page genuinely retired or fully replaced? Yes → 301 to the closest matching page, not the homepage.
- Either way: check the page source for exactly one robots directive before you judge whether the fix worked.
And a related warning: if you're thinking of pointing whole spare domains at your main site rather than pages within it, that's a different and nastier problem; see our page on why redirecting old domains to your main site backfires.
The short version: A canonical keeps the page alive and tells Google which version to prefer; a 301 kills the page and forwards its address. Never 301 a page that still ranks and earns clicks on its own. Check Search Console first, and use a canonical to consolidate instead. Save the 301 for pages that are truly retired or fully replaced. If Google keeps ignoring your instructions, check the page source for duplicate robots tags; plugins can emit contradictory directives and Google picks one at random.
General guidance only: check your own site's data in Search Console before removing or redirecting any page.