HTTP Redirects
What an HTTP redirect really is (a 3xx status plus a Location header), the 301/302/303/307/308 landscape, how to implement them, and redirect vs. canonical — the hub for the redirects subcluster.
1 evidence signal on this page
- Related live toolRedirect Checker
A redirect is an HTTP response with a 3xx status code and a Location header that sends browsers and crawlers from an old URL to a new one. Google sorts them into two buckets: permanent (301/308) pass a strong canonicalization signal so ranking signals move forward; temporary (302/303/307) pass only a weak one. Within each bucket the codes differ by whether the HTTP method is preserved — 307/308 keep it, 301/302 may not. Implement them server-side (.htaccess/nginx), at the CDN/edge, or via a CMS plugin; JS and meta-refresh redirects are weaker because they depend on rendering. A redirect is not a canonical tag: redirect when only one URL should exist going forward, canonicalize when several must stay live. This hub maps the whole landscape and points you to the deep dives.
TL;DR — A redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. sends anyone who requests an old URL to a new one instead. The most common kind is a 301 (“moved permanently”), which tells Google to move the old page’s ranking signals to the new URL. A 302 is “temporary.” Get the permanent-vs-temporary choice right and pick real server-level redirects over JavaScript ones, and you’ve covered 90% of what matters.
What a redirect is
HTTP redirects use 3xx responses and a Location field to direct a client to another URI. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: RFC 9110: Redirection Google treats permanent redirectsA 301 redirect is the HTTP status code for a permanent move: it tells browsers and search engines a URL has moved for good, and it's the strongest signal for consolidating a page's ranking signals onto the new URL. Google says permanent redirects don't cause a loss in PageRank. as strong canonical signals but does not guarantee destination indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: Redirects and Search
When a page moves, you don’t want visitors (or Google) to hit a dead end at the old address. A redirect is the instruction that forwards them to the new one automatically. Someone clicks the old link, and the server quietly hands them the new page instead.
Under the hood, a redirect is just a specific kind of server response: a status
code in the 300s (most often 301 or 302) plus a Location header that
says “here’s where to go instead.” You don’t have to think about that plumbing to
use one — but it’s why redirects are reliable in a way that a “this page moved,
click here” message isn’t.
The two that matter most
- 301 — Moved Permanently. Use this when the move is for good. It tells search engines the page has a new home, so the old page’s rankings and links transfer to the new URL. This is the one you’ll reach for most.
- 302 — FoundA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. (temporary). Use this when the move is only for now — a short campaign, an A/B test, a page you’ll put back. It tells Google not to move the ranking signals, because the change isn’t permanent.
There are a few more numbers (303, 307, 308), but for most sites the practical decision is just: is this move permanent (301) or temporary (302)?
How you set one up
- On your server — Apache’s
.htaccessor an nginx config rule. The classic. - Through a CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. plugin — on WordPress, a redirect plugin usually just edits that
.htaccessfile for you. - At your CDN / edge — Cloudflare and similar let you set redirects before the request ever reaches your server.
Avoid JavaScript redirectsA JavaScript redirect is a client-side redirect that uses code like window.location.replace() to send a visitor (and crawler) to a different URL. Because it only fires after the page is downloaded and rendered, Google prefers server-side and meta refresh redirects above it. (where a script sends the browser onward) when you can. Google can honor them, but only after it successfully renders the page — an extra step that sometimes fails — so they’re slower and less reliable than a real server redirect.
The thing people get wrong
A redirect is not the same as a canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content.. Redirect when the old URL should stop existing and everyone should end up on the new one. Use a canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. when several URLs need to stay live but you want Google to treat one as the “main” version (think product pages with tracking parameters). Redirect = one URL survives; canonical = several survive, one is preferred.
Want the protocol-level detail, the full 301/302/303/307/308 rundown, how long to keep a redirect, and the chain/loop pitfalls? Switch to the Advanced tab.
TL;DR — A redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. is an HTTP response with a 3xx status code and a
Locationheader — protocol first, SEO second. Google collapses the codes into two canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. buckets: permanent (301/308) = strong signal (signals consolidate forward), temporary (302/303/307) = weak signal (they usually stay put, but a long-lived temporary redirectA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. can flip). Within each bucket, 307 and 308 preserve the HTTP method and body; 301 and 302 may not. Implement server-side, at the CDN/edge (my preference), or via a CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. plugin; JS and delayed meta-refresh redirects are weaker because they depend on renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM.. A single good redirect doesn’t leak PageRankPageRank is Google's original recursive link-graph algorithm: a page's score depends on the scores of the pages linking to it, and in the published model each page's score is split across its outbound links (the simplified version: links are weighted votes). Google says it's evolved since launch but still part of its core ranking systems. — the real risks are chains (avoid them) and loops (search engines just ignore them). Keep redirects for at least a year. And a redirect is not a canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content..
What a redirect actually is, at the protocol level
Redirect status codes have standardized method-handling semantics. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: RFC 9110: Redirection Search guidance distinguishes permanent and temporary signals while recommending direct server-side redirects for moves. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: Redirects and Search
Most SEO writing jumps straight to “301 means permanent” without ever saying what a
redirect is. It’s worth groundingGrounding is anchoring an AI model's answer to source documents it retrieves at the moment you ask — not to the patterns frozen into its weights during training. Retrieval-Augmented Generation (RAG) is the most common way to do it. here, because the mechanism explains everything
downstream. Per MDN,
“redirection is triggered by a server sending a special redirect response to a
request. Redirect responses have status codes that start with 3, and a Location
header holding the URL to redirect to.”
So a redirect is two things travelling together: a 3xx status code (301, 302,
303, 307, 308…) and a Location header naming the destination. The browser or
crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. reads that response and re-requests the URL in Location. The status code
is the semantics — permanent or temporary, method-preserving or not — and the
Location header is the address. Everything an SEO cares about is downstream of
which 3xx code you send.
The SEO framing on top of that, as I put it in my 11 Types Of Redirects & Their SEO Impact piece at Ahrefs: “A redirect is a way to send people and bots to a new URL when they request the old URL, but the page has changed locations.”
Why redirects matter for SEO
Google’s redirects documentation frames the purpose plainly: “Redirecting URLs is the practice of resolving an existing URL to a different one, effectively telling your visitors and Google Search that a page has a new location.” The SEO consequence splits cleanly by permanence:
- Permanent redirectsA 301 redirect is the HTTP status code for a permanent move: it tells browsers and search engines a URL has moved for good, and it's the strongest signal for consolidating a page's ranking signals onto the new URL. Google says permanent redirects don't cause a loss in PageRank. show the new target in search results.
- Temporary redirects keep the source page in search results.
And there’s a link-equity dimension. Google keeps track of both ends of a redirect: “When you redirect a URL, Google keeps track of both the redirect source (the old URL) and the redirect target (the new URL). One of the URLs will be the canonical; which one, depends on signals such as whether the redirect was temporary or permanent.” Permanent redirects consolidate signals forward to the new URL; temporary ones usually leave them with the old one.
The redirect landscape: 301, 302, 303, 307, 308
Here’s the whole family at a summary level — each has its own deep dive in this subcluster (see “Where to go next”):
- 301 (Moved Permanently) — the workhorse permanent redirect. A strong canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. signal; ranking signals consolidate forward. In Google’s crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. docs: “Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.”
- 302 (Found) — the standard temporary redirect. Google follows it “and Google systems use the redirect as a weak signal.” Weak, not zero — leave a 302 in place long enough and it can end up treated like a 301.
- 303 (See Other) — the outlier. It’s grouped with the temporary bucket, and
it’s the code behind the Post/Redirect/Get pattern (send a form, get bounced to a
results page with a
GET). It’s rare in SEO, and its treatment is genuinely murky — as I’ve noted, 303s have an undefined treatment from Google and may behave like a 301 or a 302 depending on how they function. - 307 (Temporary Redirect) — same SEO meaning as a 302, but it preserves the HTTP method and body. Google’s docs put it bluntly: 307 is “equivalent to 302.” You’ll also see 307s appear automatically on HTTPSHTTPS is the encrypted version of HTTP — it uses TLS to authenticate the server and protect data in transit between a browser and a website. Google announced it as a lightweight ranking signal in 2014 and today conditionally prefers HTTPS pages as canonical; Chrome marks plain HTTP pages 'Not Secure.' sites that use HSTSHSTS (HTTP Strict Transport Security) is a response header that tells browsers to always connect to your site over HTTPS — even when a user types or clicks an http:// link — closing the insecure-first-request gap that a plain 301 redirect leaves open..
- 308 (Permanent Redirect) — same SEO meaning as a 301, but it preserves the method and body. Google: 308 is “equivalent to 301.”
The method-preservation detail (307/308 keep the original method and body; 301/302
permit a client to change a POST to GET on the way through) doesn’t change how
Google ranks anything, but it matters a lot if you’re redirecting form submissions
or API calls. Google’s own guidance is not to pick
carelessly: “While Google treats these status codes the same way, keep in mind that
they’re semantically different. Use the status code that’s appropriate for the
redirect so other clients (for example, e-readers, other search engines) may benefit
from it.” (There’s a full side-by-side in the Cheat Sheets tab.)
How redirects affect crawling, indexing, and link equity
Two buckets, one distinction. Google’s redirect docs describe permanent redirects
(301, 308, instant meta refresh, JS location) as a case where “the indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.
pipeline uses the redirect as a signal that the redirect target should be canonical,”
and temporary ones (302, 303, 307, delayed meta refresh) as a case where “the
indexing pipeline doesn’t use the redirect as a signal that the redirect target
should be canonical.”
The PageRankPageRank is Google's original recursive link-graph algorithm: a page's score depends on the scores of the pages linking to it, and in the published model each page's score is split across its outbound links (the simplified version: links are weighted votes). Google says it's evolved since launch but still part of its core ranking systems. myth is dead. The old chestnut that redirects “lose 10-15% of link equity” hasn’t been true for years. Google’s Gary Illyes said in 2016 that “30x redirects don’t lose PageRank anymore,” and John Mueller noted it wasn’t even new information at the time. A single, correctly implemented redirect passes essentially all of a page’s signal value. The costs come from chains and loops, not from the existence of a redirect.
How long to keep a redirect. Google’s site-move guidance says to “keep the redirects for as long as possible, generally at least 1 year” so it can transfer all signals to the new URLs. Gary Illyes floated the idea that “after 1 y all signals had time to pass on from A to B.” I actually tested that: I removed 301 redirectsA 301 redirect is the HTTP status code for a permanent move: it tells browsers and search engines a URL has moved for good, and it's the strongest signal for consolidating a page's ranking signals onto the new URL. Google says permanent redirects don't cause a loss in PageRank. from four Ahrefs posts that had older content redirected to them, and watched what happened. There was “a clear drop in referring domains after I did this,” but “not much drop in traffic to these posts.” My honest conclusion: “I’m not willing to conclusively say that permanent redirects pass value even after one year, but what Gary said seems to mostly hold true.” The safe default is still: don’t rip out old redirects casually.
Redirect chains and redirect loops
- A redirect chainA → B → C instead of A → C. Each hop loses link equity and adds latency. is more than one hop between the requested URL and its final destination (Page 1 → Page 2 → Page 3). Google follows up to 10 redirect hops (“By default, Google’s crawlers follow up to 10 redirect hops”) — but its current site-move guidance says to avoid chains and, if one is unavoidable, keep it to no more than 3 and fewer than 5 hops. Ten is a crawler ceiling; 3-to-5 is practical guidance, not a conflicting limit. Chains add latency, waste crawl budgetThe number of URLs an engine will crawl in a timeframe., and muddy analytics.
- A redirect loopA redirect loop is a chain of redirects that circles back on itself instead of ever reaching a live page — URL A redirects to B and B redirects back to A (or a longer cycle). No page ever returns a 200, so browsers show ERR_TOO_MANY_REDIRECTS and crawlers can't index anything. is a chain that eats its own tail — a URL redirects to itself, or back to an earlier URL in the chain — so it never resolves. Browsers throw a “too many redirects” error; search engines simply give up. As John Mueller put it: “a redirect loop is a URL that doesn’t work, so it’s essentially a broken link. We ignore these for search.” Loops also trap crawlers and waste server resources.
There is also dated representative guidance behind the familiar five-hop number. In a 2014 webmaster hangout at 46:03, John Mueller described GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. following as many as five redirects in one crawl and, when more remained, continuing them on the next crawl. In 2020 he separately described Google as following up to five hops per crawl attempt. These historical statements help explain the number, but neither overrides the current documentation or guarantees that every long chain will be resumed on a particular schedule.
My independent practitioner observation is that Google often does pick longer chains back up, and I use about five hops as a fix-priority threshold. That’s an operational judgment from what I’ve seen, not a Google platform limit. The target when you control the redirects is still one direct hop.
Both have their own dedicated articles below.
A URL tracer is best for following one known redirect; a HAR is useful when you first need to discover every redirect response mixed into a page load or interaction. Inspect that capture locally with my free HAR Analyzer Free
- Record one clean browser journey in the Network panel and export its HAR with content.
- Import it locally and filter the request review to redirect responses, failures, timings, and affected hosts.
- Take each important source URL to the Redirect Checker to inspect the complete hop sequence and final destination.
How to implement redirects
There’s no single “right” place to put a redirect — pick what you can maintain:
- Server-side config. Apache
.htaccess, nginx rules, or server-side scripts. The default for most sites, and the most reliable. On WordPress, “most WordPress installs will be running Apache and the plugins used for redirecting will actually be editing a website’s.htaccessfile” — the plugin is just a friendlier front end. - CDN / edge. Cloudflare rules, edge workers, and similar fire before the request reaches your origin. This is my own preference: “I typically prefer to have redirects on the edge (CDN-level) over having them on the server.” That said, for most people I “always recommend going with what is easiest for you to implement. For many people that is server-level redirects.”
- Client-side: meta refresh. A
<meta http-equiv="refresh">tag. An instant (0-second) meta refresh is read by Google as permanent; a delayed one as temporary. Slower and clumsier than a server redirect, but occasionally the only lever you have. - Client-side: JavaScript. A script sets
window.location. Google can honor it, but only if renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. succeeds — a separate, sometimes-failing pipeline step. Google’s own advice: “Only use JavaScript redirectsA JavaScript redirect is a client-side redirect that uses code like window.location.replace() to send a visitor (and crawler) to a different URL. Because it only fires after the page is downloaded and rendered, Google prefers server-side and meta refresh redirects above it. if you can’t do server-side or meta refresh redirectsA meta refresh redirect is a client-side redirect written as an HTML <meta http-equiv=\"refresh\"> tag (or an equivalent HTTP Refresh header) — not an HTTP status code. The server returns a normal 200, then the browser navigates after the page loads. An instant (0-second) one is read by Google as permanent; a delayed one as temporary..” My recommended order for permanent redirects reflects that reliability ladder: 308 / 301 → meta refresh 0 → JavaScript → crypto.
Verify more than the status code by tracing the source URL with the Redirect Checker Free
- Run the exact source URL and inspect every hop, scheme, host, and final response.
- Correct any HTTPS-to-HTTP downgrade and point the source directly at the intended secure destination.
- Rerun the trace and update internal links so visitors and crawlers no longer enter through the redirect.
The completed result is labeled Broken — fix now. It shows https://example.com/secure returning 301 to http://example.com/final, which returns 200, and flags the HTTPS-to-HTTP downgrade.
Redirect vs. canonical tag
These solve different problems and get conflated constantly.
- Redirect — use it when the old URL should stop resolving to its own content entirely. Only one URL should exist going forward. The old address forwards; it no longer serves a page of its own.
- Canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. — use it when several URLs must stay live and independently
accessible, but you want Google to treat one as the preferred version. Think
faceted-nav variants, tracking-parameter URLs, or print versions — all reachable,
all pointing a
rel=canonicalat the main one.
Bing frames the same split cleanly in its December 2025 duplicate-content post: “Use 301 redirects to consolidate variants into a single preferred URL. Apply canonical tags when multiple versions must remain accessible.” If a canonical hint is being ignored and you truly want consolidation, you can escalate to a redirect — but only when that duplicate URL doesn’t need to keep serving its own content.
A note on Bing
Directionally, Bing agrees with Google: permanent moves get 301s, and temporary ones get 302s. Bing’s Fabrice Canel has said it’s “preferable to use a 302 redirectA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. if your destination URL may change within 2 days, else 301 is recommended,” and his colleague Frédéric Dubut clarified the “2 days” wasn’t a hard threshold — “anytime a redirect is temporary… you should use 302s.” Same mental model, just phrased around how soon the target might change.
Where to go next: the redirects subcluster
This hub is the map. Each topic below is its own deep dive, nested under this hub and listed in the sidebar:
The individual redirect codes
- 301 Redirect — the permanent workhorse: how it consolidates signals forward, and when to reach for it.
- 302 Redirect — the standard temporary redirect, why it’s a weak (not zero) signal, and how it can drift into 301 behavior.
- 303 Redirect (See Other) — the Post/Redirect/Get code, why it’s rare in SEO, and why its Google treatment is genuinely undefined.
- 307 Temporary Redirect — same SEO meaning as a 302, but it strictly preserves the HTTP method, and where it shows up (HSTS, form/API redirects).
- 308 Permanent RedirectA 308 Permanent Redirect is the HTTP status code for a permanent move that strictly preserves the request method — a POST stays a POST — and, because a compliant client repeats the same request, the body normally travels with it. For SEO it's equivalent to a 301; the difference is the method guarantee, which matters for APIs, webhooks, and form/POST traffic. — same SEO meaning as a 301, but it strictly preserves the HTTP method and body.
The head-to-head comparisons
- 301 vs. 302 Redirect — permanent vs. temporary, forward vs. backward signal consolidation, and which to use when.
- 301 vs. 308 Redirect — same SEO meaning, but 308 preserves the HTTP method and body.
- 302 vs. 307 RedirectA 307 (\"Temporary Redirect\") is a temporary redirect that, unlike a 302, is guaranteed by the HTTP spec to preserve the original request method and body — so a POST stays a POST. For SEO, Google treats it as equivalent to a 302. Browsers/tools also sometimes represent an HSTS-driven internal scheme upgrade as a 307, though the server never actually sent it and RFC 6797 doesn't require that specific code. — same story on the temporary side: identical for SEO, but 307 keeps the method and body for forms and APIs.
The client-side implementations
- JavaScript Redirects — why they’re the weakest option, how Google’s render pipeline treats them differently from a server-side 301, and when they’re an acceptable last resort.
- Meta Refresh Redirect — instant vs. delayed refreshes, why it sits between server-side and JavaScript in Google’s order of preference, and why it’s discouraged.
The pitfalls
- Redirect Chains — why to redirect straight to the final URL, the 10-hop limit, and how chains waste crawl budget.
- Redirect Loops — the never-resolving redirect, why search engines ignore it, and how to break the cycle.
In Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results.
- Page with RedirectA Google Search Console Page Indexing status for a URL that redirects elsewhere. It's not indexed by design because it's a redirect — the destination is a separate question, and Google says the target may or may not end up indexed — usually expected, not an error (unlike the separate \"Redirect error\"). — what this Page Indexing status means, why it’s normal and not an error, and the rare cases that need action.
- Redirect ErrorA Google Search Console Page Indexing status meaning Googlebot couldn't follow a redirect — a chain too long, a loop, a URL over the max length, or a bad/empty URL in the chain. It's a broken redirect to fix, not the normal \"Page with redirect.\" — Google’s four causes (chain too long, loop, max URL length, bad/empty URL), and how it differs from the normal “Page with redirect” status.
For the whole HTTP status-code picture this subcluster sits inside — the 2xx/3xx/4xx/5xx families and the codes beyond redirects — see the cluster index at /technical-seo/http-status-codes/An HTTP status code is the three-digit number a server returns with every response to tell a browser or crawler what happened to its request — success, redirect, client error, or server error. For SEO the code matters as much as the content: it tells Google and Bing whether to index a page, follow a redirect, retry later, or drop the URL from the index..
AI summary
A condensed take on the Advanced version:
- A redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. = a 3xx status code + a
Locationheader. The status code is the semantics (permanent/temporary, method-preserving or not);Locationis the destination. Protocol first, SEO second. - Two canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. buckets: permanent 301/308 = strong signal (signals consolidate forward to the new URL); temporary 302/303/307 = weak signal (signals usually stay with the old URL, but a long-lived temporary can flip).
- Within each bucket: 307/308 preserve the HTTP method and body; 301/302 may not. No ranking difference, but it matters for forms and APIs.
- 303 is the outlier — the Post/Redirect/Get code, rare in SEO, with genuinely undefined Google treatment.
- PageRankPageRank is Google's original recursive link-graph algorithm: a page's score depends on the scores of the pages linking to it, and in the published model each page's score is split across its outbound links (the simplified version: links are weighted votes). Google says it's evolved since launch but still part of its core ranking systems. myth is dead: a single correct redirect doesn’t leak equity (Illyes, 2016). Costs come from chains (Google follows up to 10 hops but says avoid them) and loops (search engines ignore them as broken links).
- Keep redirects ≥ 1 year. Patrick’s own test of removing year-old 301s showed a drop in referring domains but little traffic loss — “mostly holds true,” so don’t remove casually.
- Implement server-side (.htaccess/nginx), at the CDN/edge (Patrick’s
preference), or via a CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. plugin (which usually just edits
.htaccess). JS and delayed meta-refresh are weaker because they depend on renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM.. - Redirect ≠ canonical: redirect when only one URL should exist going forward; canonicalize when several stay live but one is preferred.
Official documentation
Primary-source documentation on redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't..
- Redirects and Google Search — the canonical doc: permanent vs. temporary framing, the redirect-type tables (301/308/302/303/307, meta refreshA meta refresh redirect is a client-side redirect written as an HTML <meta http-equiv=\"refresh\"> tag (or an equivalent HTTP Refresh header) — not an HTTP status code. The server returns a normal 200, then the browser navigates after the page loads. An instant (0-second) one is read by Google as permanent; a delayed one as temporary., JS, crypto), and the alternate-URL / link-equity concept.
- How HTTP Status Codes Affect Google’s Crawlers — 3xx behavior, the 10-hop follow limit, and 301/302/307/308 crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. treatment.
- Move a site with URL changes — avoid chaining redirects, and “keep the redirects… generally at least 1 year.”
- Consolidate duplicate URLs — why a canonical preference is “a hint, not a rule,” and how it interacts with redirects.
- Search Off the Record — Google’s Search Relations team has an episode on redirect types (301 vs. 302, what 307/308 are for, domain merges).
Bing / Microsoft
- Does Duplicate Content Hurt SEO and AI Search Visibility? — Fabrice Canel & Krishna Madhavan on using 301s to consolidate variants vs. canonical tagsA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. when versions must stay live.
Technical reference
- Redirections in HTTP — MDN’s protocol-level definition (3xx status +
Locationheader) and per-code method/body handling.
Quotes from the source
On-the-record statements from Google, Bing, and MDN. Each link is a deep link that jumps to the quoted passage on the source page.
Google — what redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. are for, and permanent vs. temporary
- “Redirecting URLs is the practice of resolving an existing URL to a different one, effectively telling your visitors and Google Search that a page has a new location.” — Google Search Central docs. Jump to quote
- “we recommend that you use a permanent server-side redirect whenever possible.” Jump to quote
- “When you redirect a URL, Google keeps track of both the redirect source (the old URL) and the redirect target (the new URL).” Jump to quote
- “Only use JavaScript redirectsA JavaScript redirect is a client-side redirect that uses code like window.location.replace() to send a visitor (and crawler) to a different URL. Because it only fires after the page is downloaded and rendered, Google prefers server-side and meta refresh redirects above it. if you can’t do server-side or meta refreshA meta refresh redirect is a client-side redirect written as an HTML <meta http-equiv=\"refresh\"> tag (or an equivalent HTTP Refresh header) — not an HTTP status code. The server returns a normal 200, then the browser navigates after the page loads. An instant (0-second) one is read by Google as permanent; a delayed one as temporary. redirects.” Jump to quote
Google — crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. treatment of the codes
- “Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.” (301) Jump to quote
- “Google’s crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. follow the redirect, and Google systems use the redirect as a weak signal that the redirect target should be processed.” (302) Jump to quote
- “While Google treats these status codes the same way, keep in mind that they’re semantically different.” (307 ≈ 302, 308 ≈ 301) Jump to quote
- “By default, Google’s crawlers follow up to 10 redirect hops.” Jump to quote
Google — chains, and how long to keep redirects
- “Avoid chaining redirects.” Jump to quote
- “ideally no more than 3 and fewer than 5.” Jump to quote
- “Keep the redirects for as long as possible, generally at least 1 year.” Jump to quote
John Mueller, Google — dated five-hop statements
- In a 2014 webmaster hangout, Mueller described GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. following up to five redirects in one crawl and continuing any remainder on the next crawl. Watch from 46:03
- “up to 5 hops in the chain per crawl attempt” (2020 Reddit comment, relayed via Search Engine Journal.) Read the coverage
John Mueller, Google — redirect loopsA redirect loop is a chain of redirects that circles back on itself instead of ever reaching a live page — URL A redirects to B and B redirects back to A (or a longer cycle). No page ever returns a 200, so browsers show ERR_TOO_MANY_REDIRECTS and crawlers can't index anything.
- “In general, a redirect loopA redirect loop is a chain of redirects that circles back on itself instead of ever reaching a live page — URL A redirects to B and B redirects back to A (or a longer cycle). No page ever returns a 200, so browsers show ERR_TOO_MANY_REDIRECTS and crawlers can't index anything. is a URL that doesn’t work, so it’s essentially a broken link. We ignore these for search.” Jump to quote
Fabrice Canel, Microsoft Bing — 301 vs. 302 timing
- “When the future is uncertain… preferable to use a 302 redirectA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. if your destination URL may change within 2 days, else 301 is recommended.” Jump to quote
MDN — the protocol-level definition
- “redirection is triggered by a server sending a special redirect response to a request. Redirect responses have status codes that start with
3, and aLocationheader holding the URL to redirect to.” Read the doc
Redirect implementation checklist
Before and after you put a redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. live:
- Right code for the situation — permanent move →
301/308; temporary →302/307; preserving a formPOST→307/308. - Redirect to the closest-matching URL, not a blanket redirect of everything to the homepage (that reads as a soft 404A soft 404 is a URL that returns a success status code (usually 200 OK) even though the page is empty, missing, or shows a 'not found' message. It isn't a status code a server sends — it's a label search engines apply after comparing the response code against the rendered content, and they treat the page like a 404 for indexing. to Google).
- Straight to the final destination — no chain. Update the source rule whenever a target itself later moves.
- No loops — confirm the target doesn’t redirect back into the chain
(
curl -ILthe old URL and read the whole hop sequence). - Server-level or edge, not JavaScript, wherever possible.
- Standardize the obvious variants — www vs. non-wwwWWW vs. non-WWW is the choice between serving a site from www.example.com (the www subdomain) or example.com (the bare/apex/root domain). Both point to the same content, so it's a canonicalization and consistency decision, not a ranking factor., HTTP vs. HTTPSHTTPS is the encrypted version of HTTP — it uses TLS to authenticate the server and protect data in transit between a browser and a website. Google announced it as a lightweight ranking signal in 2014 and today conditionally prefers HTTPS pages as canonical; Chrome marks plain HTTP pages 'Not Secure.', trailing-slash, and letter case — to one canonical form.
- Update internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them. to point at the new URL directly, so you’re not relying on the redirect for your own navigation.
- Keep it in place ≥ 1 year (Google’s guidance) — longer for high-value pages; don’t remove old redirects casually.
- Keep a rollback path — note the prior target (or the old page’s own content, if it’s being retired) before you flip the redirect live, so a bad destination or unexpected drop can be reverted quickly.
- Verify after deploy — check the status code and final destination with
curl -IL, a browser’s Network tab, or a site crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index.; watch for chains and loops in bulk.-Isends aHEADrequest — if you suspect the server handlesHEADandGETdifferently, re-check with a plaincurl -L(which usesGET) or your crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index.’s GET-based mode.
The redirect types, side by side
The five 3xx redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. codes at a glance
| Code | Name | Permanent or temp? | HTTP method preserved? | Google signal | Use it when |
|---|---|---|---|---|---|
301 | Moved Permanently | Permanent | May change POST→GET | Strong (consolidates forward) | A page moved for good — the default permanent redirectA 301 redirect is the HTTP status code for a permanent move: it tells browsers and search engines a URL has moved for good, and it's the strongest signal for consolidating a page's ranking signals onto the new URL. Google says permanent redirects don't cause a loss in PageRank. |
302 | FoundA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. | Temporary | May change POST→GET | Weak (usually stays with old URL) | A short-term move — campaign, A/B test, temporary swap |
303 | See OtherA 303 See Other is a temporary HTTP redirect that tells the client to fetch a different URL with a GET or HEAD request, no matter what method the original request used. It's the mechanism behind the Post/Redirect/Get pattern, and search engines treat it as a weak signal like a 302 or 307. | Temporary | No (always forces GET) | Weak / undefined | Post/Redirect/Get after a form submit; rare in SEO |
307 | Temporary Redirect | Temporary | Yes | Weak (= 302) | A temporary move where the method/body must be kept (forms, APIs); also seen with HSTSHSTS (HTTP Strict Transport Security) is a response header that tells browsers to always connect to your site over HTTPS — even when a user types or clicks an http:// link — closing the insecure-first-request gap that a plain 301 redirect leaves open. |
308 | Permanent Redirect | Permanent | Yes | Strong (= 301) | A permanent move where the method/body must be kept |
The two things that actually decide it
- Permanent vs. temporary → determines the canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. signal (strong vs. weak) and whether search shows the new or old URL.
- Method preserved or not → 307/308 keep the original method and body; 301/302
permit a client to swap a
POSTfor aGETon the way through (a compatibility carryover for older clients, per the Fetch Standard); 303 always forcesGET. Irrelevant to ranking, critical for forms and APIs — use307/308when the method and body must survive the hop.
Implementation methods, strongest to weakest (permanent)
| Method | Where it runs | Reliability |
|---|---|---|
308 / 301 (server or edge) | Server / CDN | Best — no renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. dependency |
Meta refreshA meta refresh redirect is a client-side redirect written as an HTML <meta http-equiv=\"refresh\"> tag (or an equivalent HTTP Refresh header) — not an HTTP status code. The server returns a normal 200, then the browser navigates after the page loads. An instant (0-second) one is read by Google as permanent; a delayed one as temporary. 0 | Browser | Read as permanent, but clumsy/slow |
JavaScript (window.location) | Browser (after render) | Weaker — depends on successful renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. |
| Crypto / link-only fallback | — | Last resort only |
Fast facts
- A single correct redirect doesn’t lose PageRankPageRank is Google's original recursive link-graph algorithm: a page's score depends on the scores of the pages linking to it, and in the published model each page's score is split across its outbound links (the simplified version: links are weighted votes). Google says it's evolved since launch but still part of its core ranking systems. (Illyes, 2016).
- Google documents a 10-hop ceiling, but recommends no more than 3 and fewer than 5 when a chain can’t be avoided.
- Mueller’s 2014 and 2020 comments describe about five hops per crawl; the 2014 comment also described continuing the rest later. Treat both as dated representative statements, not a current scheduling guarantee.
- Keep redirects ≥ 1 year.
- 307 ≈ 302, 308 ≈ 301 for Google — the difference is method preservation.
- Redirect = only one URL survives; canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. = several survive, one is preferred.
Resources worth your time
My writing
- 11 Types Of Redirects & Their SEO Impact — my full deep dive on every redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. type (301, 302, 303, 307, 308, meta refreshA meta refresh redirect is a client-side redirect written as an HTML <meta http-equiv=\"refresh\"> tag (or an equivalent HTTP Refresh header) — not an HTTP status code. The server returns a normal 200, then the browser navigates after the page loads. An instant (0-second) one is read by Google as permanent; a delayed one as temporary., JS, crypto, chains, loops), the piece this hub condenses.
- HTTP Status Codes & Their SEO Impact — where redirects fit in the whole 1xx–5xx status-code picture.
- Is It OK to Remove 301 Redirects After a Year? We Tested It — my controlled test of pulling year-old redirects (referring domains dropped; traffic mostly held).
- 301 vs. 302 Redirects for SEO: Which Should You Use? — the head-to-head, featuring my experiment where a 302 caused Google to drop the old domain for the new one.
- A Website Migration Takes More Than A Checklist To Be Successful — redirects in the context of a full site move.
From around the industry
- Redirects and Google Search (Google) — the canonical doc behind most of this hub’s claims.
- How HTTP Status Codes Affect Google’s Crawlers (Google) — 3xx crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. treatment and the 10-hop limit.
- Does Duplicate Content Hurt SEO and AI Search Visibility? (Bing) — the current on-the-record Microsoft take on redirects vs. canonical tagsA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content..
- Redirections in HTTP (MDN) — the protocol-level reference for 3xx codes and method/body handling.
- Google: No PageRank dilution when using 301, 302, or 30x redirects anymore (Search Engine Land) — the origin of the PageRankPageRank is Google's original recursive link-graph algorithm: a page's score depends on the scores of the pages linking to it, and in the published model each page's score is split across its outbound links (the simplified version: links are weighted votes). Google says it's evolved since launch but still part of its core ranking systems. myth-correction.
- Google Search Ignores Redirect Loops (Search Engine Roundtable) — the Mueller “essentially a broken link” quote on loops.
- Bing: Use 302s For URLs That May Change In Two Days, Otherwise Go 301 (Search Engine Roundtable) — Fabrice Canel’s 301-vs-302 timing guidance.
- The redirects guide for SEO (Conductor Academy) — a solid competitor overview of the redirect landscape.
Redirect or canonical? Use the survival test
The two signals can point toward the same preferred URL, but they solve different problems.
Redirect when the source URL should stop serving its own content
Choose a server-side redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. when users and crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. requesting the old URL should
be sent somewhere else. Use a permanent code (301 or 308) for a lasting move and
a temporary code (302, 303, or 307) when the source is expected to return.
Typical cases: a changed URL, merged page, HTTP-to-HTTPSHTTPS is the encrypted version of HTTP — it uses TLS to authenticate the server and protect data in transit between a browser and a website. Google announced it as a lightweight ranking signal in 2014 and today conditionally prefers HTTPS pages as canonical; Chrome marks plain HTTP pages 'Not Secure.' move, or domain migration. The destination must be a genuine equivalent; mass-redirecting unrelated old URLs to the homepage can be treated as a soft 404A soft 404 is a URL that returns a success status code (usually 200 OK) even though the page is empty, missing, or shows a 'not found' message. It isn't a status code a server sends — it's a label search engines apply after comparing the response code against the rendered content, and they treat the page like a 404 for indexing..
Canonicalize when multiple URLs must remain accessible
Choose rel="canonical" when duplicate or near-duplicateThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling. variants still need to
return their own 200 responses, but one URL should be treated as preferred for
indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.. A canonical is a hint, not navigation: users remain on the requested URL.
It’s also a hint to Google, not a rule — Google says
“indicating a canonical preference is a hint, not a rule,” and it may choose a
different page as canonical based on other signals.
Typical cases: useful sort/filter variants, syndicated or parameterized versions, or duplicates that cannot be removed yet.
No relevant replacement exists
Don’t force a redirect onto an unrelated page just to have somewhere to send the old URL — a catch-all or homepage redirect for content with no real successor reads as a soft 404 to Google. If there’s no genuine equivalent, that’s a signal to leave the decision to a deliberate 404/410 rather than invent a destination.
Do not send conflicting instructions
If URL A redirects to B, B should not canonicalize back to A. Keep internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them. and sitemapsA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. aligned with the surviving destination. The framework is simple: one URL survives → redirect; several must stay live → canonical.
Prompt: audit a redirect map for weak destinations
Paste a redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't.-map CSV with old URL, proposed destination, reason, old title or topic, destination title or topic, intended permanence, and traffic/link signals if available.
Review this proposed redirect map for relevance and implementation risk.
For each row:
1. Classify the destination as strong equivalent, plausible but needs review,
irrelevant/catch-all, self-redirect, chain risk, loop risk, missing destination,
or insufficient evidence.
2. Explain the classification using only the supplied old/destination topics and
URL evidence.
3. Flag many-to-one mappings to a homepage or broad category for manual review.
4. Check whether the intended permanence matches the proposed 3xx code when a code
column is present.
5. Do not invent a replacement URL. If no equivalent is supplied, recommend manual
mapping or an intentional 404/410 decision.
Return a table with old URL, destination, verdict, evidence, recommended action, and
priority. End with a summary of repeated rule patterns that could create chains or
loops.
DATA:
[PASTE REDIRECT MAP HERE]Human-review every content-equivalence judgment before deploying the map.
Patrick's relevant free tools
- Website Down Checker — Check whether one URL or a small sample is reachable right now from one Cloudflare location, with response timing, redirects, DNS fallback evidence, and connection-status details.
Tools for planning and verifying redirects
- Redirect Checker — quickly verify the final status, every hop, and destination for a URL or small batch after deployment.
- Redirect Chain Mapper — diagnose multi-hop paths, see what changes at each hop, and export flattened cleanup rules for common server platforms.
- Bulk HTTP Status Code Checker — validate a larger redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. inventory, filter temporary or multi-hop results, and export evidence.
- Redirect Map Builder — plan old-to-new mappings, keep unmatched URLs and a 410 kill-list explicit, and export platform-oriented rules. Its suggestions still require content-equivalence review.
- Browser DevTools → Network — verify the document response’s 3xx code and
Locationheader while reproducing browser-specific behavior.
Test yourself: HTTP Redirects
Five quick questions on how redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. work and how search engines treat them. Pick an answer for each, then check.
Redirect
A redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't.
Related: 301 redirect, 302 redirect, Redirect chain
Redirect
A redirect, broadly, is anything that automatically sends a visitor from a requested URL to a different one. An HTTP redirect is the specific mechanism where the server’s response has a status code starting with 3 (a “3xx” response) paired with a Location header naming the URL to go to instead — the browser or crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. re-requests the URL in that header. As MDN puts it, redirection “is triggered by a server sending a special redirect response to a request.” Meta refreshA meta refresh redirect is a client-side redirect written as an HTML <meta http-equiv=\"refresh\"> tag (or an equivalent HTTP Refresh header) — not an HTTP status code. The server returns a normal 200, then the browser navigates after the page loads. An instant (0-second) one is read by Google as permanent; a delayed one as temporary. tags and JavaScript window.location changes also redirect visitors, but neither is itself a 3xx response — the source page still returns a normal 200, and something in that page’s content does the redirecting instead.
In SEO terms, a redirect is how you send people and bots to a new URL when the old one has moved. Google’s Search documentation tells the two families apart by whether they count as a canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. signal:
- Permanent —
301and308. Google treats these as a signal the target should be canonical, so ranking signals like links consolidate forward to the new URL. - Temporary —
302,303, and307. Google doesn’t use these as a canonical signal, so signals usually stay with the original URL — though other canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. signals can still get the target indexedStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed., and a long-lived temporary redirectA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. can eventually be treated like a permanent one.
The difference between the codes within each bucket (301 vs. 308, 302 vs. 307) is whether the original HTTP method and request body are preserved — which matters for forms and APIs, not for Google’s indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.. 301 and 302 carry a historical RFC 9110 allowance to change a POST to GET; 307 and 308 must preserve the method.
A redirect is distinct from a canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content.: a redirect is for when only one URL should exist going forward (the old one stops resolving to its own content); a canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. is a hint for duplicate or near-duplicateThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling. pages that all stay live at their own URLs.
Related: 301 redirect, 302 redirect, Redirect chain
Build-time retrieval analysis plus live signals for this exact article. The automatic chunk report includes a deterministic readiness score and is ready without a model download.
Search Console
sampleGA4 traffic (28d)
sampleCloudflare traffic (7d)
sampledCrUX field data (28d, phone)
sampleGoogle NLP entities
localChangelog
Revision history
Compare the published article with an archived editorial snapshot. Added and removed words are shown only after you open a comparison.
Updated Jul 19, 2026.
Editorial summary and recorded change details.Summary
Restored the sourced, dated redirect-hop statements that the prior revision incorrectly treated as invented, while keeping them separate from Google's current documentation and Patrick's observations.
Change details
-
Reconciled Google's current 10-hop ceiling and no-more-than-3/fewer-than-5 practical guidance with John Mueller's dated 2014 and 2020 statements about roughly five hops per crawl attempt.
-
Restored the 2014 statement that a later crawl may continue the remaining redirects, labeled it as historical representative guidance rather than a current guarantee, and kept Patrick's practitioner observations independently attributed.
Full comparison unavailable — no prior snapshot was archived for this revision.
Updated Jul 18, 2026.
Editorial summary and recorded change details.Summary
Removed an unsourced redirect-hop timing detail, sharpened the 301/302/303/307/308 method-preservation language to match RFC-9110-grounded MDN/Fetch-Standard specifics, added Google's 'hint, not a rule' canonical caveat, and synced the subcluster index and checklist with sibling articles that now exist.
Change details
-
Removed the unsourced 'typically five per session and resuming the rest later' redirect-hop detail from the Advanced lens (Google's crawling doc documents only 'up to 10 redirect hops,' with no per-session figure).
-
Sharpened 301/302 method-preservation language (cheat-sheets table and two Advanced-lens explainers) from vague 'Not guaranteed'/'may swap' to the verified specific: clients may change a POST to GET on 301/302 (per the Fetch Standard), 303 always forces GET, and 307/308 strictly preserve method and body.
-
Added Google's documented canonical-tag caveat ('a hint, not a rule,' Google may pick a different canonical) and a third Frameworks branch for when no relevant redirect replacement exists (use 404/410 instead of a forced redirect).
-
Synced the 'Where to go next' subcluster index and Official Docs lens with sibling articles that now exist (307-redirect, 308-redirect, javascript-redirect, meta-refresh, page-with-redirect, redirect-error, canonicalization doc) and removed a stale note that 308 stood in for a not-yet-written 307 article.
-
Added a rollback-path checklist item and a HEAD-vs-GET verification caveat to the implementation checklist.
Full comparison unavailable — no prior snapshot was archived for this revision.