What each one tells Google, and what it doesn't
These get discussed as if they're two settings on the same dial. They aren't. One is about *which URL should represent a piece of content*. The other is about *whether a page belongs in search at all*. Confusing them is how sites accidentally deindex their category pages.
The row that matters most is the last one. A canonical merges signals; a noindex throws them away.
| rel=canonical | meta robots noindex | |
|---|---|---|
| What it says | "This other URL is the real version of this page" | "Do not show this page in search results" |
| Binding? | A hint. Google may pick a different canonical. | A directive. Google honours it. |
| Where it goes | <link rel="canonical"> in <head>, or an HTTP header | <meta name="robots" content="noindex">, or X-Robots-Tag |
| Effect on link signals | Consolidates them onto the target URL | Discards them over time |
| Page stays crawlable? | Yes, and it must | Yes, and it must — or Google never sees the tag |
| Reversible | On the next crawl | Yes, but re-indexing takes weeks |
| Use when | Two URLs are genuinely the same page | The page is fine for humans, wrong for search |
The five-case decision table
These are the five duplicate-content situations that account for most of what we find in audits of Indian ecommerce and service sites. The right answer is different in every one, and in two of them the answer is neither tag.
| Case | What to ship | Why |
|---|---|---|
1. Faceted filters — /sarees?colour=red&size=m&sort=price | Keep filter links uncrawlable, and Disallow the parameter patterns in robots.txt. Canonical the ones that do get crawled to the clean category. | Crawl budget is the real problem, not duplication. Four filters with six values each is thousands of near-identical URLs. Noindex doesn't help — Google still has to crawl every one to read the tag. |
2. A filter with genuine search demand — /running-shoes/under-3000 | A real, indexable landing page with a self-referencing canonical and its own copy. | People search this. Treating it as duplicate junk throws away a page that could rank. Curate a handful; don't generate ten thousand. |
3. Pagination — /blog/page/2, /kurtis?page=4 | Self-referencing canonical on every page. Keep them indexable. Do not canonical page 2 to page 1. | Google retired rel=next/prev support in 2019. Pointing page 2 at page 1 either gets ignored or hides every product past the first page from discovery. |
| 4. Templated city pages — 40 pages, one paragraph, city name swapped | Neither tag. Delete or merge them into fewer pages with real local substance. | A canonical hides the symptom and the doorway-page problem stays. Google classifies templated location pages as scaled content, and the penalty is site-wide, not page-level. |
5. UTM and campaign parameters — ?utm_source=whatsapp | Self-referencing canonical on the clean URL, present on every parameterised version. | Google's URL Parameters tool was retired in 2022, so the canonical is your only lever. Never noindex these — a noindex on the parameterised URL can take the clean one with it. |
| 6. Thank-you, cart, account and internal search pages | noindex, follow. No canonical. | There's no duplicate to consolidate — these simply don't belong in search. Google's guidance explicitly discourages indexing internal search result pages. |
Why canonical plus noindex on one page breaks
It's a common pattern in CMS plugins and it looks tidy: mark the duplicate noindex *and* point its canonical at the original. Both instincts are reasonable. Together they're contradictory.
The canonical says: *this page and that page are one thing, treat them as a unit, consolidate them.* The noindex says: *drop this page from search.* If Google honours the canonical and treats the two URLs as one entity, the noindex arguably applies to the merged entity. Google has warned about exactly this for years, and while the behaviour isn't deterministic, the downside is asymmetric.
You get one of three outcomes. Google ignores the canonical and deindexes the duplicate — fine, but the canonical was pointless. Google ignores the noindex and consolidates — fine, but the noindex was pointless. Or Google deindexes the target page you were trying to protect. Two are wasted work; one is a real loss. The rule is one directive per URL.
There's a related trap in noindex, follow. It works initially, but a page Google keeps out of the index gets crawled less over time and its outgoing links stop helping discovery. If a page exists mainly to pass internal links deeper into the site, noindexing it is a slow way to orphan whatever sat behind it.
A canonical is a hint, and Google overrules it constantly
This is the part that surprises people who've only read the documentation summary. You declare a canonical; Google decides one. When those disagree, Google's choice wins and your tag is just one vote among several.
The other votes include internal linking patterns, which URL appears in your sitemap, redirects, HTTPS versus HTTP, hreflang clusters, and which URL looks cleaner and shorter. If your canonical points at URL A but every internal link and your sitemap point at URL B, Google will reasonably conclude the tag is a mistake.
- Make every signal agree. Internal links, sitemap entries, hreflang and the canonical tag should all name the same URL. Contradiction is what gets your tag ignored.
- Absolute URLs only. Relative canonicals resolve differently across environments and are a reliable way to canonicalise a live site to a staging path.
- One canonical per page. Two
<link rel="canonical">tags — usually a theme and a plugin each adding one — means Google ignores both. - Canonicals don't work across genuinely different content. If the pages aren't near-duplicates, Google treats the tag as noise. Use a 301 redirect if one page really should replace the other.
The cases where neither tag is the answer
Half the canonical questions we get in audits are really content questions wearing a technical costume. Reaching for a tag is the fast fix; it's rarely the right one.
Before you ship either directive, check whether one of these applies.
- The page should be gone. Serve a
410 Goneand remove the internal links. Faster and cleaner than noindexing something you'll never revisit. - The page should be a redirect. If one URL genuinely replaces the other and users should never see the old one, that's a 301, not a canonical.
- There are simply too many pages. Fifteen thin articles on one topic don't need canonicals; they need to become three good ones with 301s from the rest. That's the fix for keyword cannibalisation, and it usually lifts rankings rather than tidying a report.
- They're generated at a scale you can't justify. Tagging them treats a symptom — programmatic SEO crosses a scaled-content line that no directive fixes.
- The duplicate is on someone else's site. Neither tag helps. Google is usually right about which one is the original.
How to verify the choice actually worked
Shipping the tag is not the same as Google accepting it, and the gap between the two is where most technical SEO time disappears. Search Console tells you exactly what Google decided — most teams just never open the right screen.
Check these three, in this order, one to three weeks after deploying.
- URL Inspection on a sample URL. Compare *User-declared canonical* with *Google-selected canonical*. If they differ, your tag lost, and the reason is almost always inconsistent internal links or a sitemap pointing elsewhere.
- Page indexing report. 'Alternate page with proper canonical tag' means it worked. 'Duplicate, Google chose different canonical than user' means it didn't. 'Excluded by noindex tag' confirms a noindex landed.
- A live fetch of the header.
curl -s https://yoursite.com/page | grep -i canonicalandcurl -sI https://yoursite.com/page | grep -i x-robots. A CDN, an edge worker or a plugin can rewrite the head after your CMS renders it. What Google sees is what's on the wire, not what's in your template.