10 min readEngineering

Canonical vs 301 Redirect: How to Pick the Right Signal

Google calls both strong signals, but a 301 redirect is the strongest and removes the old URL; a canonical keeps both live. Which fits four duplicate-URL cases.

Marius Voß
DevRel · edge infra

A canonical tag tells a search engine which URL you would prefer it treat as the master copy. Google calls it a strong signal, not a command. A 301 redirect is the strongest signal Google lists: it sends every visitor and crawler to one URL, and the old one stops answering. That is the whole decision in one sentence. Use a canonical tag when both URLs need to keep working for humans. Use a 301 when only one URL should exist at all.

The two get confused because they fight the same problem, duplicate content splitting ranking signal across near-identical URLs, with different mechanisms. A canonical is a signal left in the page's head or an HTTP header. A redirect is an HTTP response the browser follows automatically. Swap them and you either kill a URL you needed alive, or leave several versions of the same page competing with each other in the index.

I have explained this more often than the 301-versus-302 question, so this is the version I wish existed the first time someone asked me, and if you are here for the status-code question, 301 vs 302 redirects covers that one in full; this post is about a different fork in the road.

Canonical Tag vs 301 Redirect: Two Strengths of Signal

A rel=canonical tag lives inside a page's <head>: <link rel="canonical" href="https://example.com/preferred-url" />. The duplicate-URL documentation on Search Central (accessed 2026-10-24) lists three ways to signal a canonical, from strongest to weakest: redirects, rel=canonical annotations, and sitemap inclusion. The canonical tag is "a strong signal" there. Skip it and the search engine picks a version itself. Both URLs stay live, a person can visit either one and get a 200 response either time, and the tag only changes what shows up in search results, not what a browser can reach. For non-HTML files such as PDFs, the same signal can be sent as a Link: <https://example.com/file.pdf>; rel="canonical" HTTP header. Pick one method per URL. Mixing several is more error prone.

A 301 redirect answers the request itself: ask for the old URL, get sent to the new one. A 301 or 308 tells Google the target should become canonical, and the docs say to use one only when you are sure the move will not be reverted (Search Central, redirects page, accessed 2026-10-24). Temporary codes (302, 303, 307) are followed too, but they do not make the target canonical, so the source URL can stay in results. That is why a retired page needs a permanent code and a campaign link does not.

The practical test comes down to two conditions:

  • If both URLs need to keep resolving for actual visitors, use a canonical.
  • If only one URL should exist going forward, use a redirect - and types of URL redirects is the reference for which code fits which kind of permanence.
A canonical tag shown as a hint pointing from one URL to another while both stay reachable by a human, contrasted with a 301 redirect shown as an instruction where the old URL no longer responds

Both tools fight the same problem from opposite directions: a redirect is for a URL no human should land on again, a canonical is for one a human legitimately might.

The Four Situations Where Duplicate Content Needs a Different Fix

Four situations come up constantly, and each has exactly one correct signal. Get the mapping backward and you either strand a live workflow or leave a decoy sitting in the index.

Parameterized URLs

A URL with a tracking parameter or session ID attached - ?ref=partner or ?sessionid=abc123 - is functionally the same page as the clean version, just carrying extra baggage. Redirecting it away is usually wrong, because the parameter often needs to survive the request: a referral code, an A/B bucket, a session handoff. The fix is a self-referencing canonical on the clean URL, so the parameterized version stays reachable while the tag tells search engines to index the version without the noise.

Campaign-tagged URLs

This is the case marketing teams hit every day. A link like elido.app/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=august-launch needs to keep working exactly as tagged, because UTM parameters are how analytics attributes the visit to that newsletter, across campaigns and channels. No exceptions, ever. Redirecting it to the bare /pricing URL would throw away the attribution before it is even recorded.

The canonical tag goes on the destination page, not on the link: /pricing declares <link rel="canonical" href="https://elido.app/pricing" />, and every UTM-tagged variant inherits that same target. Search engines index one clean /pricing URL, while analytics still sees every campaign variant separately, since the tag never touches what the browser requests. One caveat: some browsers now strip UTM parameters or block the scripts that read them before attribution lands - see how Firefox and Brave break UTM attribution if your campaign numbers look thin. That is a tracking problem, not a canonical one.

Paginated or faceted pages

The answer depends on whether the URL has content a search query could want. Page 2 of an archive is different content from page 1, and Google's pagination guidance says outright not to use the first page as the canonical for the whole sequence; give each page its own self-referencing canonical (Search Central, pagination page, accessed 2026-10-24). A filter or sort order that only reshuffles the same catalog is the opposite case. The pagination page suggests keeping unwanted variations out of the index with noindex or crawl restrictions, and a canonical to the unfiltered category page is a common alternative when the URLs must stay reachable. Same test as before: does a human need that URL?

Consolidating a retired page

Here a canonical tag is the wrong tool and a redirect is the only correct one. When a page is retired for good - merged into a newer post, dropped after a catalog change - there is no reason for the old URL to keep resolving to anything. A 301 passes its ranking signal across cleanly and removes the dead page from circulation. A canonical tag on a page you intend to delete just leaves an orphaned URL limping along, still crawlable, still capable of decaying - the exact failure mode link rot prevention exists to catch. If the old page is truly gone, redirect it. Don't canonicalize a corpse.

Four rows mapping a duplicate URL situation to the correct signal and the reason: parameterized URLs to a self-referencing canonical, campaign-tagged URLs to a canonical on the destination, paginated or faceted pages to a canonical judged case by case, and a retired page to a 301 redirect

Signal Strength at a Glance

The docs rank the ways of signaling a canonical. Here is the same ranking with what each one does to the old URL.

SignalGoogle's strength ratingOld URL stays reachableUse it for
301 / 308 redirectStrongestNoRetired pages, domain moves
rel=canonical (tag or HTTP header)StrongYesTracking parameters, near-duplicates
Sitemap inclusionWeakYesBacking up the other two
302 / 303 / 307 redirectNot a canonical signalNo (temporary)Short-term moves, campaigns

Source: Google Search Central, consolidate duplicate URLs and redirects pages, accessed 2026-10-24.

When Canonical and Redirect Disagree

Sometimes a URL carries both signals at once, and they do not agree. Page A redirects to page B with a 301, but page B declares its own canonical pointing at page C - several hops removed from where the first click started.

The documentation ranks redirects above rel=canonical. A crawler that follows A to B never needs A's tag; it lands on B, so the canonical B declares is the one it reads. If B points at C, you have told Google two different things in one chain, and the outcome is no longer yours to predict. Anything upstream is noise by the time a crawler reaches the end of the chain.

The practical failure is rarely philosophical - usually it is a chain nobody audited, where the final destination's canonical was set for a different migration years ago and never revisited. Untangling that means following every hop until you reach a URL that returns 200 and canonicalizes to itself, then fixing whichever link is stale. One clean hop, one canonical tag that agrees with where you landed: that is the whole target state.

Why Every Page Needs a Self-Referencing Canonical

A self-referencing canonical is a page whose canonical tag points at itself: /pricing declaring <link rel="canonical" href="https://elido.app/pricing" /> instead of staying silent. It looks redundant - why would a page need to confirm it is itself? It is cheap insurance against every way a URL duplicates by accident: a trailing slash, a mixed-case path, a stray query string a plugin added, a lingering http version alongside https. Any of those can get indexed as a separate, near-identical URL if nothing says which copy is the real one.

Without one, Google says it will identify the version it judges "objectively the best" to show. That mostly works, and when it does not, you find out by noticing the wrong URL ranking. Set it explicitly on every indexable page and the ambiguity never gets a chance to matter.

A short link raises a question that looks like it belongs here and mostly does not: does s.elido.me/abc123 need a canonical tag pointing at its destination? No. A short-link host is not a duplicate of the page it sends visitors to; it is an address with no content of its own. Elido's redirect service answers with a 302 by default, and a link can be set to 301 or 307 instead; Google treats a 301 as a canonical signal for the destination and the temporary codes as no such signal, so choose per link with the 301-versus-302 trade-off in mind. Elido does not add a canonical header to redirect responses, and it does not need to. Canonicalization is for pages that could plausibly be indexed; a short link was never a candidate for that.

The canonical tag that matters belongs on the destination page, exactly as if the visitor had arrived by any other route. If s.elido.me/summer-sale sends people to yoursite.com/sale?utm_source=twitter, the canonical work is still the campaign-tagged-URL case from earlier, no different from any campaign link you would tag the same way. It happens on yoursite.com/sale, not on the short link. Routing one short link to different destinations with smart links does not change the answer: the canonical work still happens wherever the visitor lands. For the mechanics of the redirect itself, see how to redirect a URL.

This is why the SEO fear around shortened links is mostly unfounded once the two signals are kept apart: the redirect passes its own signal, the destination's canonical handles its own, and neither contaminates the other. Do URL shorteners hurt SEO covers the rest of that question.

How to Check Which Signal a Page Is Actually Sending

Do not assume. Check both signals directly, starting with the redirect:

curl -sI "https://example.com/old-page"

A 301 or 308 with a Location header means a permanent move; a 302, 303 or 307 is temporary; no 3xx status means there is no redirect, and any canonical tag is the only signal in play. To see the canonical tag itself, fetch the page and search the source:

curl -s "https://example.com/page" | grep -i 'rel="canonical"'

Search Console's URL Inspection tool shows which canonical Google actually selected, which is the final check when your tag and Google's choice might differ. If a URL sends both, trace the chain fully before assuming which one is the true destination. When the two agree - the redirect lands on a URL whose canonical points at itself - the signal is unambiguous, which is the state every URL that matters to your rankings should be in.

Frequently asked questions

What is the difference between a canonical tag and a 301 redirect?

A canonical tag is a hint in a page's head that tells search engines which URL to prefer while both stay live and reachable; a 301 redirect is an HTTP status code that sends every visitor and crawler to the new URL and removes the old one from service. Google's consolidation docs rank redirects as the strongest canonicalization signal and rel=canonical as a strong one, so a canonical can still lose to other evidence, while a permanent redirect leaves no old page to reconsider. Use a canonical when both URLs need to keep answering requests; use a redirect when only one should.

Should I use a canonical tag or a 301 redirect for duplicate content?

Use a redirect if the duplicate URL should stop existing altogether - a retired page, an old domain, a permanent move - because a redirect both consolidates ranking signal and removes the dead URL from circulation. Use a canonical tag if the duplicate needs to stay reachable for a real reason, such as a UTM-tagged campaign link, a session parameter, or a near-duplicate filtered page. The deciding question is whether a human has a legitimate reason to keep visiting the URL you are not choosing as canonical.

What happens when a canonical tag and a redirect disagree?

Google ranks redirects above rel=canonical, and a crawler that follows the redirect never reaches the old page's tag anyway. It lands on the destination and reads whatever canonical that page declares, so the destination's tag is the one that counts. The fix for a mismatch is to trace every hop until you land on a URL that returns 200 and canonicalizes to itself.

Do URLs with UTM parameters need a canonical tag?

Yes, the canonical tag belongs on the destination page and should point at the clean URL without the tracking parameters attached. A page like /pricing should declare itself as its own canonical regardless of how many UTM-tagged variants link into it, so search engines index one clean URL while analytics still records every tagged variant separately. Redirecting a UTM-tagged URL instead would strip the parameters before your analytics tool can attribute the visit.

Why put a self-referencing canonical tag on every page?

A self-referencing canonical, a page declaring itself as its own preferred URL, closes off every accidental way a page can get duplicated, from trailing slashes to stray query parameters to a lingering http version alongside https. Without one, Google chooses the canonical URL using its own signals, which is usually right but occasionally picks the wrong variant. Setting it explicitly on every indexable page removes that ambiguity for free.

Does a short link need a canonical tag?

No. A short link answers with an HTTP redirect and no page content, so there is nothing on that URL for a canonical tag to disambiguate; canonicalization matters for pages that could be indexed as content. The canonical tag that matters sits on the destination page the short link redirects to, exactly as it would if a visitor arrived by any other route.

Try Elido

Paste a URL, get a working short link

No signup. Link lives for 30 days. Sign up to keep it forever.

Free account required. The free plan includes 25 links in total. Already have an account? Log in

Try Elido

EU-hosted URL shortener with custom domains, deep analytics, and an open API. Free tier - no credit card.

Tags
canonical vs 301 redirect
rel=canonical
canonical tag
canonical url
301 redirect
duplicate content

Continue reading