Use a 301 redirect when a URL should no longer be visited, because the page moved, was merged or is an unwanted variant such as http:// or www. Use a canonical tag when visitors still need the duplicate URL, such as a link with tracking or sort parameters, but only one version should be indexed. Use noindex when a page must work for visitors but has no place in search at all, such as internal search results. The difference is what happens to the visitor and to the page's signals, and choosing wrong can drop the page you want or keep the one you don't. This guide explains all three and gives a decision table for 16 common cases. For the tag itself, read canonical tags explained.
Quick answer
- 301 redirect: the old URL stops showing content; visitors and crawlers land on the new one. Strongest signal. For moved, merged and variant URLs.
- Canonical tag: both URLs keep working; Google indexes the one you name and consolidates signals into it. A strong hint, not an order. For duplicates people still use.
noindex: the page keeps working but is dropped from search; its signals do not move anywhere. For pages with no search value.- Never combine
noindexwith a canonical pointing elsewhere, and never block a page in robots.txt if you want Google to see its canonical ornoindex. - When in doubt: if nobody needs the old URL, redirect; if people need it but Google does not, canonical; if nobody searching needs it,
noindex.
What each one does
| 301 redirect | Canonical tag | noindex | |
|---|---|---|---|
| Where it lives | Server, CDN or CMS redirect rule | <link rel="canonical"> in the head, or a Link header | <meta name="robots"> or X-Robots-Tag header |
| What the visitor sees | The new URL | The URL they opened | The URL they opened |
| What Google indexes | The target URL | Usually the canonical URL | Nothing from this page |
| Links and signals | Passed to the target | Consolidated into the canonical | Not passed on |
| How binding | Strong signal | Strong hint; Google can overrule it | A directive Google follows once it crawls the page |
| Needs Google to crawl the URL | Yes | Yes | Yes |
Google's Search Central page on consolidating duplicate URLs ranks the methods by strength: redirects are a strong signal that the target should be canonical, rel="canonical" is a strong signal, and listing a URL in the sitemap is a weak one. Google combines these, so the three work best when they agree: redirect the variants, canonicalise the duplicates to the same URL, and list only that URL in the sitemap.
noindex is not a canonicalisation method at all. It removes a page; it does not say where its content belongs.
When to use a 301 redirect
A redirect is the right choice when the old URL has no reason to exist for anyone:
- The page moved to a new URL, or the site moved to a new domain.
- Two articles were merged into one.
http://,wwwand trailing-slash variants of the same page.- An old product replaced by a direct successor.
A redirect is also the only one of the three that fixes the visitor's experience: bookmarks, old links and ads land on the right page. Use 301 (or 308) for permanent moves. A 302 or 307 says the move is temporary; Google treats it as a weaker signal, although a redirect that stays in place for a long time may be treated as permanent. Point every redirect straight at the final URL, without chains. The 301 redirects guide covers the server, CDN and WordPress rules.
When to use a canonical tag
A canonical is the right choice when the duplicate URL has to keep working for people:
- Tracking parameters:
?utm_source=newsletter,?gclid=…,?fbclid=…. - Sort and view options:
?sort=price,?view=grid. - Filter combinations that you do not want indexed as their own pages.
- Product variants that share one product page, and products reachable under several category paths.
- Print versions and other alternative layouts.
- Syndicated copies of your article on a partner site, pointing back to your original (where the partner agrees to add it).
Every indexable page should also carry a self-referencing canonical, so any parameter-laden copy points back to it automatically. When a canonical is working, the duplicates show up in Search Console as alternate page with proper canonical tag, which is what you want.
When to use noindex
noindex is the right choice when a page must work for visitors but should not appear in search, and there is no other page it duplicates:
- Internal site search result pages.
- Thank-you, order confirmation and account pages.
- Thin tag archives or author archives you do not want to maintain.
- Staging or preview pages that must be reachable by URL (password protection is better).
- Landing pages built only for paid campaigns, if they compete with your organic pages.
noindex does not move rankings anywhere. If the page has links from other sites that you want to keep, a redirect to the closest relevant page is usually better. The noindex and nofollow reference has the syntax, including the header version for PDFs.
Decision table: 16 common cases
| Situation | Use | Why |
|---|---|---|
http:// and https:// both load | 301 to https | Nobody needs the http version |
www and bare domain both load | 301 to your chosen host | Same content, one address |
| URL with and without trailing slash | 301 to one form | Same page |
| Page moved to a new URL | 301 | The old URL has no purpose |
| Two similar articles merged | 301 from the weaker one | Visitors and links go to the merged page |
| Product discontinued, direct successor exists | 301 to the successor | Closest match for the visitor |
| Product discontinued, no successor | 404 or 410, or keep the page with alternatives | A redirect to an unrelated page is treated as a soft 404 |
?utm_… tracking parameters | Canonical to the clean URL | Analytics needs the parameter to work |
?sort= and ?view= | Canonical to the default view | Visitors use the option |
| Filter combinations with no search demand | Canonical to the category, or noindex | Keep the category strong |
Product variants under ?variant= | Canonical to the product page | One page per product |
| Syndicated copy on another site | Cross-domain canonical to your original | Credit goes to the original |
| A/B test variant URLs | Canonical to the original, or a 302 if you redirect | Google's testing guidance |
| Internal search results | noindex | No search value, endless URLs |
| Thank-you and account pages | noindex | Useless in search |
| Paginated pages, page 2 and beyond | Self-referencing canonical, no noindex | Each page lists different items |
For discontinued products and removed pages in more depth, see 404, 410 or redirect.
Combinations that confuse Google
noindexplus a canonical to another URL. One says "drop this page", the other says "this page is a copy of that one, merge them". Google has to guess which you meant. Pick one: canonical for duplicates,noindexfor pages with no search value.- A canonical pointing to a URL that redirects. Point it at the final URL instead; the next section shows how this happens and how to fix it.
- A canonical pointing to a
noindexpage. You are asking Google to index a page that asks not to be indexed. - robots.txt blocking the duplicate. Google cannot crawl it, so it never sees the canonical or the
noindex. The URL can still be indexed without content from links. Let Google crawl pages whose tags you want it to read. - Redirecting and canonicalising in different directions. URL A redirects to B while B's canonical points to A: a loop of signals. Make them agree.
- A canonical used instead of a redirect after a migration. Visitors keep landing on the old URLs and Google may keep indexing them. Redirect.
Canonical redirect: when the canonical points to a redirecting URL
Site audits often report this as "canonical points to a redirect" or "canonical URL redirects". It means the page's canonical tag names an address that does not answer 200 itself but sends a 301 or 302 somewhere else. The canonical says "index this URL", the redirect on that URL says "index another one", and the two signals disagree. Google then has to pick the canonical itself and may ignore your tag, so the page you meant to strengthen is not the one that gets the signals.
A canonical should always name the final address: the one that answers 200, names itself as canonical, and is the same form you use in internal links and the sitemap.
How a canonical ends up pointing at a redirect
- An http to https move. The site redirects to
https://, but the CMS still hashttp://as its site address, or the template hardcodes it, so every canonical names the old scheme. - A trailing-slash change. The server now redirects
/shopto/shop/, but the canonical still prints/shop. - A www switch. The canonical names
example.comwhile the site redirects towww.example.com, or the other way round. - A moved page. Duplicates such as parameter variants or a syndicated copy still name the page's old URL as canonical after it was renamed.
How to fix it
- Open the page source and copy the
hrefof<link rel="canonical">. - Request that URL with the redirect checker or
curl -sI. If it answers 301, 302, 307 or 308, note the final URL it lands on. - Change the canonical to that final URL where it is generated: the site address setting of your CMS (in WordPress, the WordPress Address and Site Address under Settings → General), your SEO plugin's custom canonical field, or the template.
- Prefer a canonical built from the page's own final URL over one typed in by hand, so the next migration cannot leave it behind.
- Check again: the canonical should answer
200in one request.
The canonical checker does steps 1 and 2 for you: it requests the canonical URL and, when that URL redirects, shows the address it ends on next to it, which is the one to put in the tag. To find every page with the problem at once, the crawl behind the XML sitemap generator reads up to 100 pages and lists canonical chains: canonicals that point at a page that redirects, fails or names yet another canonical.
Some people searching for "canonical redirect" mean the opposite case: the site-wide 301s that send http://, www and trailing-slash variants to your one canonical URL form. That job, and the order to do it in, is in trailing slashes, www and https: pick one.
How to check what a page is doing now
The canonical checker shows every canonical tag in the page, whether the canonical URL answers 200 without redirecting, and whether the http and www variants redirect to it. The redirect checker follows a URL hop by hop and shows each status code, so you can confirm a 301 goes straight to its final destination. Then use URL Inspection in Search Console to see which canonical Google chose and whether the page is indexed.
For where WordPress and Shopify set the canonical and how to change it, see how to add a canonical tag in WordPress and Shopify.
Questions people ask
Is a redirect better than a canonical tag?
A redirect is stronger, and it is better whenever nobody needs the old URL, because it also moves visitors, bookmarks and links. A canonical is better when the duplicate must keep working, such as tracking or sort parameters, because a redirect would break it. For http and www variants, moved pages and merged content, redirect. For duplicates people still use, canonicalise.
Should I use noindex or a canonical tag for duplicate pages?
Use a canonical tag for duplicates. It tells Google which version to index and consolidates links and signals into it, while noindex just drops the duplicate and passes nothing on. Keep noindex for pages that have no place in search at all, such as internal search results or thank-you pages. Never put both on one page with the canonical pointing elsewhere.
Does a canonical tag pass link equity like a 301?
Broadly, yes. Google consolidates signals such as links from duplicate URLs into the canonical URL it chooses, much as it does for the target of a redirect. The difference is certainty: a redirect is a strong signal that visitors also follow, while a canonical is a hint Google can overrule if other signals, such as internal links or the sitemap, point to a different URL.
Can I use a canonical tag instead of redirects during a site migration?
No. After a migration the old URLs should return 301 redirects to their new equivalents. A canonical on an old URL that still loads leaves visitors, bookmarks and backlinks on the old site, and Google may keep indexing it for longer. Canonicals belong on the new site, pointing each page at itself, alongside the redirects.