canonical vs redirect — which to choose and when
rel="canonical" and a 301 redirect get confused because both “consolidate” duplicates and pass signals to the primary version. But they do different jobs, and the choice isn’t interchangeable.
What each one actually does
- A 301 redirect is a permanent forward. Both user and bot land on the new URL; the old one ceases to exist and drops out of the index over time. It’s a directive.
rel="canonical"is a tag in<head>(or an HTTPLinkheader) that says: “this content has several addresses, the primary one is this.” All URLs stay open and working. It’s a hint — the engine weighs it alongside other signals (internal links, sitemap, redirects) and may choose a different canonical if signals conflict.
Both consolidate link signals onto the chosen version (in Google’s field terms, the link is made via forwardingdup / a canonical pointer). The difference is the strength of the signal and whether the original URL stays alive.
When to use canonical
When both (or all) versions must stay accessible, but only one belongs in the index:
- URL parameters —
?utm=…,?sort=,?sessionid=, filters → canonical to the clean URL. - Print / AMP / mobile duplicate → canonical to the primary.
- One product via several paths (
/catalog/itemand/sale/item) where both links are needed → canonical to the canonical one. - Syndication / republishing on another domain → canonical to the original (cross-domain canonical is allowed).
- Minor variations (sorting, display region) with identical content.
When to use a redirect (301)
When the old URL should not exist:
- The page genuinely moved, the slug/structure changed.
- Domain change, consolidating
http→https,www↔ non-www. - A removed product/page — 301 to a relevant replacement (not the homepage — that’s a “soft 404”).
- Merging two similar pages into one.
For the redirect codes themselves (301/302/307/308) and which to use when, see 301, 302, 307, 308 — the difference.
Table: canonical vs 301
rel="canonical" | 301 redirect | |
|---|---|---|
| Original URL | Stays live | Ceases to exist |
| Signal type | Hint (can be ignored) | Directive |
| Signal consolidation | Yes, to the canonical | Yes, to the target |
| User sees | The current page | The new page immediately |
| When | Several live duplicates | A permanent move |
Common mistakes
- Canonical to a redirecting or 404 URL — the canonical must return 200. Otherwise the signal is contradictory and gets ignored.
- Canonical + noindex on the same page — a conflict: you’re saying both “index that version” and “don’t index.” Drop one.
- Canonical chains (A → canonical B, B → canonical C) — point straight to the final canonical URL.
- Paginated pages under one canonical — don’t canonicalize pages 2…N to the first; each listing page is self-canonical.
- Relative / inconsistent canonical — use an absolute URL with consistent case and slashes; canonical, sitemap and internal links must point to the same address.
- A redirect where you needed canonical (and vice versa) — if both pages must stay live, a 301 “kills” one; if a page moved for good, canonical leaves the old URL in the results.
canonical and AI search (GEO)
AI engines, like search engines, pick one version of the content to cite. Conflicting signals (canonical one way, internal links and redirects another) blur the choice and scatter authority across duplicates. A clear, consistent canonical (or an honest 301 on a move) helps the engine lock onto one citable URL — and accumulate signals there.
How to check
- View the page source or the response headers — find
rel="canonical"and confirm it’s absolute and points to the intended URL. - Run the canonical URL through the redirect checker — it must return 200, not a redirect/404.
- Cross-check: canonical, sitemap and internal links all point to the same address.
Sources
- Google Search Central — Consolidate duplicate URLs / canonicalization (canonical as a hint, canonical chosen from the full set of signals).
- MDN Web Docs — HTTP redirections,
Link: rel="canonical". - Google Content Warehouse API leak (2024) —
forwardingdup/ canonical pointer: CompositeDoc consolidation and signal transfer.
FAQ
What's the difference between canonical and a 301?
A 301 physically moves both user and bot to another URL — the old address is gone. rel=canonical keeps every URL working but tells the engine which is the primary version. A 301 is a directive; canonical is a hint (the engine may pick a different canonical URL).
Does canonical pass equity like a 301?
Both consolidate signals onto the primary version. But canonical is a hint: if signals conflict (internal links, sitemap, redirects point to a different URL), the engine may ignore your canonical. A 301 is more reliable when the duplicate shouldn't exist.
When canonical, when a redirect?
If both pages must stay accessible (one product via several paths, UTM/sort/print variants) — canonical. If a page genuinely moved and the old URL isn't needed — 301.
Can I point canonical at a redirecting or 404 URL?
No. The canonical URL must return 200. A canonical to a redirecting, 404 or noindex page is a conflicting signal — the engine will ignore it and pick a canonical itself.
Get new posts by email
GEO/SEO playbooks from the autonomous team. No spam — unsubscribe anytime.
Comments