301 vs. 308 Redirect
301 and 308 are both permanent redirects — the core difference is that 308 guarantees the HTTP method (and the body riding with it) survive the hop. Why 308 exists, why Google and Bing process it the same way they process a 301, and when to actually reach for it.
1 evidence signal on this page
- Related live toolRedirect Checker
A 301 and a 308 are both permanent redirects, and Google and Bing both treat 308 the same way they treat 301 for crawling, indexing, and signal purposes — Google's own docs call 308 'equivalent to 301,' Gary Illyes says 'we just merge that with 301,' and Bing's Fabrice Canel confirms Bing treats them the same. At the protocol level, the core difference is mechanical: a 308 guarantees the client repeats the same request method (a POST stays a POST, and the body rides along) against the new URL, while a 301 — an HTTP/1.0-era code — is ambiguous specifically about POST turning into GET (the RFC doesn't address PUT/DELETE either way). So for a normal page-to-page or site migration, 301 stays the pragmatic default (older, more broadly recognized, better tooling/CDN/plugin support). Reach for 308 only when you must preserve a non-GET method: API endpoints, webhook URLs, form action targets, auth POST flows — and even then, the status code alone doesn't guarantee credentials, cookies, or idempotency, so test the real client. There's no SEO advantage to either — anyone telling you to mass-migrate your 301s to 308s for a rankings bump is selling a myth the search engines have explicitly debunked.
TL;DR — A 301 and a 308 are both 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., and Google and Bing both treat a 308 the same way they treat a 301. The core technical difference is the method guarantee: a 308 promises the browser will re-send the request the same way it came in (so a form submission stays a form submission), while a 301 doesn’t strictly promise that for a POST. For a normal “this page moved” 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., just use a 301. Use a 308 when you’re redirecting something that isn’t a plain page — like an API or a form — and you need the original request method to arrive intact (though the status code alone doesn’t guarantee things like cookies or credentials survive too — test the real client).
What these two codes mean
When a server sends you from one URL to another, it stamps the response with a status code. Two of them mean “this moved permanently”:
- 301 — “Moved Permanently.” The original, oldest permanent-redirect code. It’s been around since the early web.
- 308 — “Permanent Redirect.” A newer code (added in 2015) that does the same job plus one extra guarantee.
That extra guarantee is the whole story. Think about what happens when you submit a form: your browser sends a POST request carrying your data. With an old-style 301, the browser is allowed to quietly turn that POST into a plain GET when it follows the redirect — dropping your data along the way. A 308 forbids that. It says: repeat the exact same request, method and data and all, against the new address.
Does it matter for SEO? No.
Here’s the part people get wrong, so let me be clear: for search, 301 and 308 are
the same. Google’s own documentation literally describes 308 as “equivalent to
301.” Google’s Gary Illyes put it even more bluntly — “we just merge that with 301
so we really don’t care.” And Bing’s Fabrice Canel confirmed the same on his side:
“Bing treats 308 redirectsA 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. the same as 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..”
So ignore anyone who tells you 308 is “better for SEO” or that you should switch all your 301s to 308s for a rankings boost. There’s no boost. The search engines have said so. Evidence for this claim Google treats 308 as equivalent to 301 for Search while advising sites to use the semantically appropriate status code. Scope: Google Search processing; client behavior still differs when method preservation matters. Confidence: high · Verified: Google: HTTP status codes and Search
So which do I use?
- Redirecting a normal page (you moved a URL, switched 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.', changed domains)? → Use a 301. It’s the default most tools, CDNs, and plugins understand out of the box.
- Redirecting something that carries data (an API endpoint, a form’s submit URL, a login POST)? → Use a 308 so the original request method survives the hop — though it’s still worth confirming credentials and cookies arrive the way you expect, since the status code alone doesn’t guarantee that.
If you’re not redirecting an API or a form, you almost certainly want a 301. That’s the short version.
Want the full picture — why 308 was invented, exactly what Google and Bing have said, and how to implement each one? Switch to the Advanced tab.
TL;DR — 301 and 308 are both permanent 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., and Google and Bing both process a 308 the same way they process a 301 — Google’s docs say 308 is “equivalent to
301,” Illyes says “we just merge that with 301,” and Canel confirms Bing treats them the same. At the protocol level, the core difference is method preservation: 308 (RFC 7538, 2015) mechanically guarantees the client repeats the same method on the new URL (the body rides along with it); 301 is HTTP/1.0-era and ambiguous specifically about POST converting to GET — the RFC doesn’t address PUT or DELETE either way, so don’t generalize the POST caveat to them. 308 exists to be the permanent sibling of 307 — RFC 7231 defined a temporary method-preserving code (307) but no permanent one, and 308 filled that hole. Default to 301 for ordinary page/site/HTTPS migrationsAn HTTP to HTTPS migration is the process of moving every URL on a site from the insecure http:// scheme to the encrypted https:// scheme — installing a TLS certificate and 301-redirecting each old URL to its secure equivalent. Done correctly, it doesn't lose rankings or PageRank. (older, more broadly recognized, better CDN/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 support). Reach for 308 only when you must preserve a non-GET request — API endpoints, webhook URLs, form action targets, auth POST flows — and even then, verify credentials, cookies, and idempotency on the real client rather than assuming the status code covers them. Neither is “better for SEO” — that’s a myth the engines have explicitly debunked.
The semantic difference comes first
Both 301 and 308 tell search engines the same thing about permanence: the resource has moved for good, and the destination should become canonical. Where they differ is one narrow, mechanical guarantee about how the client re-issues the request.
- 301 (Moved Permanently) is the original permanent-redirect code, dating to the HTTP/1.0 era. Crucially, it was always ambiguous about whether the request method must be preserved. In practice, browsers and other clients have historically converted a POST into a GET when following a 301 — which is fine for a plain page but silently breaks anything that depends on the method or the request body.
- 308 (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.) is the strict version. It guarantees the client repeats the exact same method and body against the new URL. A POST stays a POST; the payload comes along for the ride.
The one-sentence framing I’d give someone: a 308 is a 301 that also guarantees the browser won’t quietly swap your POST for a GET. Evidence for this claim RFC 9110 defines both 301 and 308 as permanent redirects; 308 forbids changing the request method, while 301 permits POST-to-GET rewriting for historical reasons. Scope: HTTP semantics for 301 and 308 responses. Confidence: high · Verified: IETF: RFC 9110 §§15.4.2, 15.4.9 IETF: RFC 7538 §3 — 308 Permanent Redirect
Why 308 exists at all: the missing “permanent 307”
This is the part almost nobody explains, and it’s the cleanest way to understand the whole comparison. It’s about a gap in the spec.
The modern redirect codes come in a temporary/permanent, loose/strict grid:
| Temporary | Permanent | |
|---|---|---|
| Method may change (loose) | 302 | 301 |
| Method preserved (strict) | 307 | 308 |
RFC 7231 defined 307 — a temporary, method-preserving redirect — as the strict counterpart to the loose, ambiguous 302. But it never defined a permanent method-preserving equivalent. There was a strict temporary code and no strict permanent one. RFC 7538 (April 2015) added 308 specifically to fill that hole: it’s to 301 what 307 is to 302. If you’ve read the 302-vs-307 comparison in this cluster, 301-vs-308 is the exact same relationship one row up — loose-permanent vs. strict-permanent.
301 predates this whole framework. It came from HTTP/1.0, before the “preserve the method” concept was formalized, which is exactly why it’s ambiguous and why 308 had to be invented rather than just clarified.
What “method and body preserved” means in practice
For the overwhelming majority of redirects — someone clicks a link, their browser issues a GET, the server sends them somewhere else — there is no practical difference. Modern browsers preserve GET on a 301 just fine. The distinction only bites when the request is not a plain GET:
| Request type | Behind a 301 | Behind a 308 |
|---|---|---|
GET (a normal page) | Followed as GET (in practice, fine) | Followed as GET |
POST (form submit, API) | May be silently converted to GET, body lost | Repeated as POST, body intact |
PUT / DELETE (API) | Not RFC-documented — historical allowance is POST→GET only, so treat as client-specific and unverified | Method preserved (308’s automatic-follow rule isn’t POST-specific) |
So the risk with a 301 is squarely around POST and request bodies — forms, APIs, webhooks, auth flows. “A 301 will always break my form” is an overstatement; a plain GET is safe. The spec’s historical carve-out for 301 is specifically POST→GET; it doesn’t document PUT or DELETE behavior, so don’t assume either code’s handling of those methods without testing the actual client. What the spec is clear on: 308 forbids the client from changing whichever method it repeats — that rule isn’t limited to POST. Method preservation is what’s guaranteed here; it doesn’t separately promise that headers, cookies, credentials, or the wider transaction survive untouched — that’s client- and integration-specific, and worth testing on anything that matters (see the checklist below).
Does Google treat 301 and 308 differently for SEO? No.
This is the rare redirect question where the docs, the Googlers, and Bing all agree — and have agreed consistently for years.
Google’s HTTP status codes documentation
puts 301 and 308 in the same bucket. The 301 row: “Google follows the redirect, and
Google systems use the redirect as a strong signal that the redirect target should be
processed.” The 308 row is a single line: “Equivalent to 301.” That’s the
strongest, most citable statement of the answer — Google’s own docs literally equate the
two. Evidence for this claim Google treats 308 as equivalent to 301 for Search while advising sites to use the semantically appropriate status code. Scope: Google Search processing; client behavior still differs when method preservation matters. Confidence: high · Verified: Google: HTTP status codes and Search
The redirects guide
reinforces it, opening with “The 301 and 308 status codes mean that a page has
permanently moved to a new location” and then drawing no further distinction between
them anywhere.
Googlers have said the same off the record for years, well before it was written into the docs:
- Gary Illyes (2021): in a thread about whether Google treats 308 like 301, he said Google “just merge[s] that with 301 so we really don’t care.” Barry Schwartz’s write-up framed it as the moment this became official: “Three years later it was added to the official Google documents that Google treats 308 redirectsA 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. like 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. — so now it is official.”
- John Mueller (2018): three years earlier — “If you use it [a 308 redirect] like a 301 we’ll treat it as such.” So this has been Google’s informal stance since long before the docs caught up.
There’s one important nuance in Google’s docs, though, and it’s the thesis of this whole article. Right after equating the codes, Google adds: “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.” In other words: pick the code for correctness and interoperability, not for SEO — because SEO doesn’t care.
Does Bing treat 301 and 308 differently? Also no.
Most write-ups on this topic are Google-only, which leaves a gap. Bing’s Fabrice Canel answered the question directly in September 2024, replying to someone asking whether Bing treats a permanent 308 the same as a 301: “Bing treats 308 redirects the same as 301 redirects.” Schwartz noted this matched what Google had said back in 2021.
So both major engines are on record: 308 is functionally identical to 301 for crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor., 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., and signal consolidation. There is no engine that treats 308 as SEO-superior.
The myth to bust: “308 is better for SEO / migrate all your 301s”
Let me be direct about this because lower-quality pages keep implying it. There is no SEO benefit to choosing 308 over 301 for a typical redirect, and no reason to mass-migrate your existing 301s to 308s. This isn’t my opinion; it’s the search engines’ stated position:
- Google’s docs say 308 is “equivalent to
301.” - Illyes: “we just merge that with 301.”
- Canel: Bing “treats 308 redirects the same as 301 redirects.”
Mass-swapping 301→308 buys you zero ranking upside and introduces risk on any legacy or edge tooling that only cleanly recognizes 301/302 (more on that below). It’s pure churn.
It’s worth contrasting this with a genuinely contested myth: the old “301s lose/dilute 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.” claim. That one still resurfaces and has been debunked by Google repeatedly. But notice the difference — 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.-dilution myth is Google correcting a misconception, whereas the 301-vs-308 equivalence is Google, Bing, and the docs all stating the same thing consistently since 2018. This is a settled question, not a disputed one. (The full PageRank story lives in the 301-vs-302 comparison in this cluster.)
When 308 is the technically correct choice
Reach for 308 when losing the request method or body would break functionality (not rankings):
- API endpoints you’re relocating, where clients issue
POST/PUT/DELETE. - Webhook URLs — the sender POSTs a payload you can’t afford to drop.
- Form action targets — the
<form>posts data that must reach the new URL intact. - Auth / login POST flows where credentials or tokensA token is the smallest unit of text (or image/audio/video) an LLM processes — roughly 4 characters, or about ¾ of an English word. A context window is the maximum number of tokens (input plus output) a model can hold at once, like its short-term memory. ride in the body.
For POST specifically, a 301 risks the client converting the request to a GET and stranding the body; 308 forbids that conversion. For PUT/DELETE the RFC doesn’t spell out 301 behavior either way, so don’t assume — 308’s method-preservation rule still applies regardless of which method it is.
Before you cut over an API, webhook, or auth flow, the status code alone doesn’t guarantee everything survives the hop — worth checking as part of the same change:
- Credentials, cookies, and auth headers. Neither code makes a promise here; test the actual client (browser, SDK, webhook sender) rather than assuming they ride along.
- Cross-origin behavior. A redirect that crosses origins can change what a browser
or fetch client will send — verify with the real caller, not just a manual
curl. - Idempotency and duplicate side effects. If the repeated request isn’t idempotent (a webhook that creates a record, a payment POST), a client retrying after a redirect can double-fire it. Confirm the target handles a repeat safely before relying on 308 to “just work.”
- Stage it and roll back with cache in mind. Both 301 and 308 responses are heuristically cacheable, so a client or intermediary that already cached the old response may keep using it after you change the code — test with a fresh client and one that hit the URL before your change, and have a rollback plan that accounts for that cached state rather than assuming a flip is instant.
When 301 remains the pragmatic default
For everything that’s a plain GET — which is most of what SEOs redirect — 301 stays the sensible default:
- Standard page/URL changes and content moves.
- Domain changes and site merges.
- HTTP → 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.' migrations.
- Consolidating
www/non-wwwor trailing-slash variants.
Why default to the older code when 308 is “stricter”? Three practical reasons:
- Broader recognition. 301 predates 308 by two decades and is recognized by the overwhelming majority of browsers, proxies, CDNs, 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., and analytics tools in current and legacy use. 308 is a decade-plus old now and broadly supported, but the long tail of legacy clients and edge tools is less certain — don’t assume every tool in your stack recognizes it without checking.
- Tooling reality. Many common tools default to — or only cleanly expose — 301/302. WordPress redirect plugins, Cloudflare’s rule builders, and some serverless/CDN platforms lean on 301/302, and a few will emit a 302/307 regardless of what you think you configured. For a non-technical site owner, “what my platform actually supports” is often the real deciding factor.
- Nothing to gain. Since Google and Bing process the two codes the same way for crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. and 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., there’s no upside to reaching for the less-broadly-supported code on a plain page move.
The rule of thumb: plain GET → 301; non-GET request you must preserve → 308.
How to implement each
The syntax is nearly identical — you’re just changing the number.
Apache (.htaccess)
# 301 — permanent, for a normal page move
Redirect 301 /old-page /new-page
# 308 — permanent + method-preserving, for an API/form endpoint
RewriteEngine On
RewriteRule ^old-api/(.*)$ /new-api/$1 [R=308,L]nginx
# 301
location = /old-page {
return 301 /new-page;
}
# 308 — preserves POST body to the API
location = /old-api {
return 308 /new-api;
}A caveat that applies to both: some CDNs, edge platforms, and CMS plugins will not honor a 308 you configure and will emit a 301/302/307 instead. If method preservation actually matters to you, verify the response you’re really sending (curl the URL and read the status line) rather than trusting the config. Directive syntax also shifts between server versions and frameworks — check your current Apache/nginx version’s docs (or your framework’s, if it’s generating the redirect) rather than assuming the snippets above are byte-for-byte current for your setup.
A lever that outranks the 301-vs-308 choice: chain length
Whichever code you pick, the bigger performance lever is keeping redirects short. Google follows up to about 10 redirect hops before giving up, and every extra hop is latency and a chance for signals to leak. A single clean hop with the right code beats a chain of “technically correct” ones. Redirect straight to the final destination.
Where this sits
301 and 308 are the two permanent redirect codes, and each has its own deep dive in this cluster alongside their temporary counterparts (302 and its strict sibling 307) and the other-3xx member 303. The comparisons map onto a grid: 301-vs-302 is permanent-vs-temporary, 302-vs-307 is the temporary loose-vs-strict pair, and this one — 301-vs-308 — is the permanent loose-vs-strict pair. Watch out for the operational hazards too: redirect chainsA → B → C instead of A → C. Each hop loses link equity and adds latency. and 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.. For the whole family of server responses, see the HTTP Status Codes hubAn 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.; redirect type is also one of the canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. signals covered in canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it..
A live trace verifies the code and destination. It cannot decide whether an API or form requires method and body preservation.
Use my Redirect Checker to confirm the permanent hop, then choose 308 only when the original request semantics must survive. Redirect Checker Free
- Trace the source and confirm a permanent redirect reaches the intended destination.
- Identify whether non-GET methods and bodies must be preserved.
- Use 301 for ordinary page moves or 308 for strict method preservation, then retest the real client flow.
AI summary
A condensed take on the Advanced version:
- Both are 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., and Google and Bing both process a 308 the same way
they process a 301. Google’s docs call 308 “equivalent to
301,” Illyes says “we just merge that with 301,” and Bing’s Canel confirms “Bing treats 308 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. the same as 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..” - At the protocol level, the core difference is method preservation. A 308 (RFC 7538, 2015) guarantees the client repeats the same method against the new URL (the body rides along). A 301 is HTTP/1.0-era and ambiguous specifically about POST→GET — the RFC doesn’t address PUT or DELETE either way, so don’t generalize that caveat to them.
- Why 308 exists: RFC 7231 defined a temporary method-preserving code (307) but no permanent one. 308 fills that gap — it’s to 301 what 307 is to 302.
- In practice it only matters for non-GET requests. Plain GETs are safe on a 301. The risk is specifically POST/PUT/DELETE and request bodies — forms, APIs, webhooks, auth flows.
- Use 308 when you must preserve a non-GET method: API endpoints, webhook URLs, form action targets, login POST flows.
- Use 301 for everything else: page moves, domain changes, HTTPS migrationsAn HTTP to HTTPS migration is the process of moving every URL on a site from the insecure http:// scheme to the encrypted https:// scheme — installing a TLS certificate and 301-redirecting each old URL to its secure equivalent. Done correctly, it doesn't lose rankings or PageRank., www/non-www — it’s older, universally recognized, and better supported across CDNs/CMSsA 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./plugins.
- Myth to kill: 308 is not “better for SEO,” and there’s no reason to mass-migrate 301s to 308s. The engines have said so consistently since 2018. Pick the code for correctness/interoperability, not rankings (Google’s own “semantically different” caveat).
- Bigger lever than code choice: keep redirect chainsA → B → C instead of A → C. Each hop loses link equity and adds latency. short (Google follows ~10 hops); redirect straight to the final URL.
Official documentation
Primary-source documentation from the search engines and the spec.
- HTTP status codes, network and DNS errors, and Google Search — the reference that lists 308 as “Equivalent to
301” and the “semantically different, treated the same” caveat. - Redirects and Google Search — “The
301and308status codes mean that a page has permanently moved to a new location,” plus server-side implementation and the JS-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. caveat. - Site moves with URL changes — where 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. fit in a migration (keep them at least a year).
- Search Off the Record — “Let’s talk redirects” (John Mueller + Martin Splitt) — the episode that explicitly covers “what type of redirects 308 and 307 are.”
Bing / Microsoft
- Website Migration with Bing — Bing’s site-move guidance, framing 301 as sufficient for signaling permanent moves.
Spec / reference
- RFC 7538 — HTTP Status Code 308 (Permanent Redirect) — the 2015 spec that created 308 to be the permanent, method-preserving redirect.
- MDN — 308 Permanent Redirect — the method/body-preservation language and the comparison to 301.
Quotes from the source
On-the-record statements from Google and Bing. Where the source page supports it, each link is a deep link that jumps to the quoted passage.
Google docs — 308 is equivalent to 301
- “Google follows the 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., and Google systems use the redirect as a strong signal that the redirect target should be processed.” (the 301 row) — Google Search Central. Jump to quote
- “Equivalent to
301.” (the entire 308 row) Jump to quote - “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.” Jump to quote
Google docs — both codes mean “permanently moved”
- “The
301and308status codes mean that a page has permanently moved to a new location.” Jump to quote
Gary Illyes, Google (2021) (via Search Engine Roundtable) — 308 gets merged with 301
- “we just merge that with 301 so we really don’t care iirc.” Coverage
John Mueller, Google (2018) (via Search Engine Roundtable) — the earlier informal stance
- “If you use it [a 308 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.] like a 301 we’ll treat it as such.” Coverage
Fabrice Canel, Microsoft Bing (2024) (via Search Engine Roundtable) — Bing parity
- “Bing treats 308 redirects the same as 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..” Coverage
#:~:text= fragments against the live documentation. The Illyes 2021,
Mueller 2018, and Canel 2024 statements were originally posted on X/Twitter and are
reproduced here through Search Engine Roundtable’s contemporaneous coverage — verify
against the originals before treating as final. Google’s “Let’s talk redirects” Search
Off the Record episode discusses 307/308 but its official transcript wasn’t retrieved
for this piece, so nothing is quoted from it directly. Which permanent redirect should I use: 301 or 308?
Because Google and Bing treat 301 and 308 the same way for crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. and 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., this tree isn’t about rankings at all — it’s about one question: does the request carry a method/body you need to preserve? Answer that and you’re done.
301 or 308 — which permanent redirect should I use?
The short version: plain GET → 301; a non-GET request you must preserve → 308. For SEO the two are interchangeable, so the method question is the only one that decides it.
The permanence × method grid
Choose among the four common 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 on two axes. SEO treatment follows the first; application behavior follows the second.
| Method may change | Method must be preserved | |
|---|---|---|
| Temporary | 302 | 307 |
| Permanent | 301 | 308 |
Run the decision in this order:
- Is the move permanent? If no, stay on the temporary row. If yes, use the permanent row so the destination is the intended canonical.
- Can the request carry a method/body that must survive? A normal page
GETdoes not need the strict guarantee. APOST,PUT,DELETE, webhook, form, or API call may. - Pick the cell. Ordinary permanent page move →
301. Permanent non-GET endpoint move →308. - Verify the emitted response. Platform defaults can differ from the code selected in a UI or framework. Test the response and the redirected request, not just the config.
The grid makes the SEO question deliberately boring: Google and Bing treat 301 and 308
the same. Choose between them for HTTP correctness.
301 vs. 308 at a glance
| Question | 301 Moved Permanently | 308 Permanent Redirect |
|---|---|---|
| Permanence | Permanent | Permanent |
| Google/Bing SEO treatment | Same permanent signal | Same permanent signal |
| Request method/body | May change, especially POST → GET | Must be preserved |
| Best fit | Ordinary pages, domains, 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.', URL normalization | APIs, webhooks, form/auth endpoints with non-GET requests |
| Main advantage | Universal tooling and long-standing support | Strict method/body guarantee |
| Bad reason to choose it | ”301 passes more SEO value" | "308 gives a ranking boost” |
Rule of thumb: plain permanent page GET → 301; permanent endpoint move where a
non-GET request must arrive intact → 308.
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.
- Redirect Chain Mapper — Trace every hop of a redirect chain — status codes, what changed at each step (HTTPS, www, slash, domain, path), a severity verdict, meta-refresh detection, and cleanup rules exportable for Cloudflare, .htaccess, and nginx. Single URL or batch of 8.
Tools for verifying the permanent redirect
Patrick’s free tools
- Redirect Checker — inspect the actual first status,
every hop, and final destination. Use it to catch a platform that emitted
301,302, or307when you configured308. - Bulk HTTP Status Code Checker — check up to 500 page URLs and export mixed codes or chains across a migration.
Verify method preservation when it matters
curlwith the real request method and a safe test payload — confirm the redirected request remainsPOST/PUT/DELETEand the target receives the body. Use a staging or non-destructive endpoint.- Application and gateway logs — compare the method and body handling at the source and
destination. A status checker can verify
308; only the receiving system can prove the request arrived intact. - Browser DevTools Network panel — useful for form flows, but test non-browser API and webhook clients separately because client behavior is the reason the distinction exists.
Test yourself: 301 vs. 308
Five questions on the difference between these two 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. and how the search engines treat them. Pick an answer for each, then check.
Resources worth your time
My related writing
- 11 Types Of Redirects & Their SEO Impact (Ahrefs, with Joshua Hardwick) — my full rundown of 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. The 308 line: it’s “the same as a 301 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., except it retains the HTTP method of the original request, GET or POST.” My verdict on this exact comparison: “For SEO purposes, they’re the same, but if you have data being sent through forms, you don’t want to be switching between GET and POST.” Also has my preferred implementation order for permanent redirects: 308/301 first, then meta/HTTP refresh, then JavaScript.
- HTTP Status Codes & Their SEO Impact (Ahrefs) — where I note that a 308 “has the same functionality as a 301 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., except you can’t switch between POST and GET,” and that “308s are treated the same as 301s and consolidate forward.”
- The Beginner’s Guide to Technical SEO — where redirects fit in the bigger picture.
My speaking
- Patrick Stox on SlideShare and Speaker Deck — my technical-SEO talks, several of which cover redirects and canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it.. (My standing disclaimer applies: “This is my understanding of systems… not going to be 100% complete or accurate.”)
Official
- Google — HTTP status codes and Google Search (308 = “Equivalent to 301”) and the Redirects guide.
- RFC 7538 — HTTP Status Code 308 (Permanent Redirect) — why 308 exists.
- MDN — 308 Permanent Redirect — the method/body-preservation reference.
From around the industry
- Google Officially Treats 308 Redirects As 301 Redirects (Search Engine Roundtable, 2021) — Gary Illyes’ “we just merge that with 301” quote.
- Google Can Treat 308 Redirects As 301 Redirects (Search Engine Roundtable, 2018) — John Mueller’s earlier “we’ll treat it as such” statement.
- Bing Treats 308 Redirects The Same As 301 Redirects (Search Engine Roundtable, 2024) — Fabrice Canel’s confirmation.
- Google Debunks Myths Surrounding Redirect Types (Search Engine Journal) — “Use the technically correct redirect type.”
- 308 Permanent Redirect: What It Means & When to Use It (Semrush) — a solid overview to compare against.
- r/TechSEO — the community for redirect and canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. debugging.
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 17, 2026.
Editorial summary and recorded change details.Summary
Added client, credential, and idempotency caveats to method-preserving redirect guidance.
Change details
-
Added cache-aware rollback checks that compare fresh clients with clients that encountered the redirect before cutover.
Try it live
These are real endpoints on this site — not a simulation.
Hit them from the button, open them in a new tab, or
curl -i them from your terminal, and the server answers with the actual status code this article is about.