Canonical vs 301 Redirect: Hint or Move for Duplicate URLs
Canonical vs 301 redirect on a small blog: Hint-Then-Move. Use a 301 when the old URL should die; a canonical when both addresses must stay. Official Google notes.

A canonical vs 301 redirect choice is not a style preference. One URL should either move or hint. Mixing them is how Google keeps two addresses in play while you think you “fixed duplicates.”
This page is Hint-Then-Move. It is not canonical tags explained (what the tag is). It is not move a blog to a new domain (site-wide migration). It is not pagination SEO (page 2 in a sequence). URL Inspection is how you verify what Google picked.
Use a 301 when the old URL should stop existing as a destination. Use a canonical when both URLs must stay live and one is the preferred copy. Do not canonical a URL you already redirect.
Official: Consolidate duplicate URLs and Redirects and Google Search.
Table of contents
- Hint-Then-Move
- When the 301 is the honest tool
- When the canonical is the honest tool
- Signals that fight each other
- A 10-minute audit
- FAQ
- Pick one destination
Hint-Then-Move
Original split for this post. Ask one question: must a human still land on the old address?
HINT-THEN-MOVE
LIVE need? YES → canonical (or parameter handling)
NO → 301 to the keeper
Then align sitemap + internal links + self-canonical on the keeper
If the answer is “I want both indexed,” you probably wanted two different pages, not a duplicate. Two intents belong on two URLs. That fight is keyword cannibalization, not a tag.
When the 301 is the honest tool
Typical small-blog moves:
http→httpswww↔ apex, once you picked a host- Trailing-slash policy (pick one, redirect the other)
- Renamed slug after a title change
/page-id=12leftovers if the pretty permalink is the real page- Retired URL whose content now lives at a better slug
The old URL’s job is to hand the visitor to the keeper. Update the XML sitemap to the live URL. Change in-menu links. Leaving the old slug in the sitemap while 301ing it is noisy, not clever.
A domain change is a bigger packet: Search Console change-of-address, not a handful of post-level 301s. Stay on the domain-move owner for that.
When the canonical is the honest tool
Keep both URLs fetchable when:
- A tracking parameter does not change the article (
?utm_source=newsletter) - A printer or AMP leftover still serves the same body (retire AMP if you can)
- Faceted or sort URLs you cannot redirect without breaking a shop filter—blogs rarely need this
Self-referencing canonicals on the preferred URL still help. The duplicate should point to the keeper, not at itself.
Do not use a canonical as a soft delete. If you do not want the URL in Search, noindex or a redirect is clearer than hoping Google “gets the hint.”
Signals that fight each other
Google may ignore a canonical when:
- The sitemap lists the duplicate as a top URL
- Every internal link still points at the loser
- Hreflang clusters disagree (hreflang owner)
- The “duplicate” is actually a different article
Inspection that shows Google-selected canonical ≠ user-declared is a clue you have a fight, not a reason to mash Request indexing. Inspect first.
Redirect chains (A→B→C) are a different mess. Collapse them. That walkthrough is redirect chains for small blogs.
A 10-minute audit
- Open the duplicate and the keeper in a private window. Are they the same article?
- If nobody should bookmark the duplicate, 301 it.
- If both must load, set canonical on the duplicate → keeper, self-canonical on the keeper.
- Search your theme or SEO plugin for a second canonical. Two tags that disagree are worse than none.
- Inspect the keeper in Search Console after the next crawl.
WordPress field location is a click-path, not this decision. That sits on WordPress canonical URL settings.
FAQ
What is the difference between a canonical tag and a 301 redirect?
A 301 redirect sends the browser and crawler to a new URL. The old address should stop being a destination. A canonical tag is a hint that similar content at two live URLs should be treated as one preferred page. Both URLs can still load. Google documents redirects and duplicate-URL consolidation separately.
Should I use a canonical instead of a 301 to keep the old URL working?
Only if visitors still need that old address (printer view, legitimate parameter, temporary A/B). If the old URL is a mistake—http, www mix, leftover /index.html—redirect it. A canonical will not reliably replace a move.
Does Google always obey a canonical?
No. Canonicals are a strong hint. Conflicting sitemaps, internal links, and hreflang can make Google pick another URL. Redirects are a clearer “this URL is gone” signal when you truly moved the page.
Is this the same as canonical tags explained?
No. That owner covers what a rel=canonical is, self-referencing, and parameters. This URL only decides hint versus HTTP move. Pagination page-2 rules stay on the pagination post.
What if I 301 and also canonical the old URL?
After a 301, crawlers should not keep using the old URL as a destination. Do not leave a canonical on a URL that immediately redirects. Point the final URL at itself.
Does a 301 pass ranking signals?
Google treats 301s as a permanent move. You still need one clear destination, matching internal links, and a sitemap of live URLs. A chain of hops wastes crawl time. Collapse chains on the redirect-chains post.
When is a 302 better than a 301?
When the move is temporary. Seasonal URLs, short tests, or a maintenance hop you will reverse. Do not use 302 for a renamed permalink you intend to keep forever.
Where is Google’s official guidance?
Consolidate duplicate URLs and Redirects and Google Search. CashPilot will not invent a ranking-percentage promise.
Pick one destination
Open the URL you do not want in Search. If it should die, 301 it. If it must stay live, canonical it to the keeper and stop linking to the loser. Then wait for a crawl—do not stack three “fixes” in one afternoon.
Keep learning
More guides in the same topic lane.
WordPress Canonical URL Settings: Field, Then Self
WordPress canonical URL settings: Field-Then-Self in Yoast or Rank Math. Set the keeper URL; do not fight the plugin with a second tag. Not a canonical explainer.
WordPress Application Passwords: App Access Without Sharing wp-admin
WordPress application passwords: App-Then-Revoke. Give a plugin or REST client a token, not your real password. Not two-factor login, not a client password vault.
RSS Feeds for Small Blogs: The Subscribe Job a Sitemap Cannot Do
RSS feeds for small blogs: Feed-Then-Inbox. Let readers and tools subscribe. Not an email ESP, not an XML sitemap, not a newsletter monetization guide.