# Redirect vs canonical tag vs noindex: which to use for each page

> A 301 redirect moves visitors and search engines to another URL, a canonical tag keeps the page but asks Google to index another URL, and noindex keeps the page out of search. How each works, a decision table for 16 common cases, and the combinations to avoid.

Updated 2026-10-04 · Technical SEO · HTML version: https://getreport.app/guides/canonical-vs-redirect-vs-noindex

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](https://getreport.app/guides/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 `noindex` with a canonical pointing elsewhere,** and never block a page in robots.txt if you want Google to see its canonical or `noindex`.
- **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://`, `www` and 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](https://getreport.app/guides/301-redirects) covers the server, CDN and WordPress rules.

> **Check: The URL loads without a redirect chain.** Each redirect is a full request and response before the browser can start loading the page, which slow mobile connections feel most. Google says redirects do not lose ranking value, but Googlebot follows at most 10 hops, and long chains slow crawling and break when one hop changes.
>
> 1. Point every old URL straight at the final one (a single 301), and update internal links to use the final URL directly.
> 2. Look for rules that stack, for example http → https, then non-www → www, then trailing slash; combine them into one rule.

## 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](https://getreport.app/guides/alternate-page-with-proper-canonical-tag), which is what you want.

> **Check: Canonical tag points to a valid URL.** The canonical tag asks Google to index that URL instead of this one. If it points to another site, appears twice or leads to an error page, your ranking signals are given away or ignored.
>
> 1. Point the canonical at this page's own clean URL (same scheme and host, no tracking parameters), and make sure it returns 200.
> 2. Keep exactly one canonical tag; if a plugin and the theme both add one, disable one of them.

## 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](https://getreport.app/guides/noindex-nofollow-complete-reference) has the syntax, including the header version for PDFs.

> **Check: The page is not set to noindex.** A noindex directive tells Google to drop this page from search results. Unless that is intended, every visit from search is lost.
>
> 1. Remove noindex from the robots meta tag and from the X-Robots-Tag header, unless the page should stay out of search.
> 2. In WordPress, untick Settings → Reading → "Discourage search engines" and check the page's SEO plugin settings.

## 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](https://getreport.app/guides/404-vs-410-vs-redirect-what-to-do-with-removed-pages).

## Combinations that confuse Google

- **`noindex` plus 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, `noindex` for 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 `noindex` page.** 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.

> **Check: robots.txt allows this page.** A Disallow rule stops search engines from crawling this page, so they cannot read its content or see any updates. The page can still appear in results as a bare URL with no description.
>
> 1. Remove or narrow the Disallow rule in robots.txt so this URL is allowed for all crawlers.
> 2. If the page should stay out of search, allow crawling and use a noindex tag instead; a blocked page cannot be de-indexed.

## 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 has `http://` as its site address, or the template hardcodes it, so every canonical names the old scheme.
- **A trailing-slash change.** The server now redirects `/shop` to `/shop/`, but the canonical still prints `/shop`.
- **A www switch.** The canonical names `example.com` while the site redirects to `www.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

1. Open the page source and copy the `href` of `<link rel="canonical">`.
2. Request that URL with the [redirect checker](https://getreport.app/tools/redirect-checker) or `curl -sI`. If it answers 301, 302, 307 or 308, note the final URL it lands on.
3. 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.
4. 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.
5. Check again: the canonical should answer `200` in one request.

The [canonical checker](https://getreport.app/tools/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](https://getreport.app/tools/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](https://getreport.app/guides/trailing-slashes-www-and-https-pick-one).

## How to check what a page is doing now

> **Free tool:** [Canonical checker: free canonical tag test](https://getreport.app/tools/canonical-checker): Free canonical checker: see which URL a page declares as canonical, whether it answers 200, and whether redirects, www and the trailing slash agree with it.

> **Free tool:** [Redirect checker: free 301 and redirect chain check](https://getreport.app/tools/redirect-checker): Free redirect checker: follow every hop from your URL to the final page, with status codes, HTTP to HTTPS and www redirects, and the canonical at the end.

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](https://getreport.app/guides/canonical-tags-wordpress-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.
