TechnicalSEO

Redirects SEO: 301, 302, 307 and 308 Compared

Redirects SEO is the practice of choosing and implementing URL redirects so that visitors, search engines and link value all reach the right page: permanent redirects (301, 308) when a move is final, temporary ones (302, 307) when it isn’t. The status code tells Google which URL to show in results. The implementation decides whether it sees the redirect at all. And the map of old to new URLs decides whether rankings survive the change.

This guide is for anyone changing URLs, merging pages or cleaning up an older site. It compares every redirect type by how Google treats it, explains 307 and 308, covers chains and loops, and shows how to build a redirect map. For a full site move, the surrounding steps are in our website migration SEO checklist; this page goes deeper on the redirects themselves.

On this page

Do redirects affect SEO?

Yes: the type of redirect decides which URL Google shows, and a bad redirect can throw away the signals a page earned. Google’s documentation on redirects and Google Search splits them into two groups:

  • Permanent redirects “show the new redirect target in search results”. Googlebot follows them, and the indexing pipeline uses them “as a signal that the redirect target should be canonical”.
  • Temporary redirects “show the source page in search results”. Googlebot still follows them, but the indexing pipeline “doesn’t use the redirect as a signal that the redirect target should be canonical”.

Google’s page on HTTP status codes adds the weighting: a 301 is “a strong signal that the redirect target should be processed”, a 302 “a weak signal”. Redirects are also the strongest of the canonicalization methods Google lists, ahead of the canonical tag and sitemaps.

What redirects don’t do is create value. A redirect from a page nobody linked to, to a page that doesn’t answer the same need, moves nothing worth moving.

Every redirect type, and how Google reads it

Google groups redirects by permanence and ranks the methods by how reliably it can interpret them, with server-side redirects first. The table combines Google’s classification with the HTTP semantics documented on MDN.

RedirectPermanent or temporary (Google)Keeps request method?Where it runsUse it for
301 Moved PermanentlyPermanentSupposed to, but older clients change POST to GETServerMost permanent page moves
308 Permanent RedirectPermanentYes, alwaysServerPermanent moves of forms and API endpoints
302 FoundTemporarySupposed to, but older clients change POST to GETServerShort-term moves, A/B tests
303 See OtherTemporaryNo, becomes GETServerAfter a form submission
307 Temporary RedirectTemporaryYes, alwaysServerTemporary moves that must keep POST
Meta refresh, 0 secondsPermanentNot applicableBrowserOnly when the server can’t redirect
Meta refresh, delayedTemporaryNot applicableBrowserRarely a good idea
JavaScript locationPermanentNot applicableBrowser, after renderingLast resort
“Crypto” redirect (a link saying “we moved”)Permanent, if recognized at allNot applicableVisitor clicksOnly if nothing else is possible

The client-side options come with warnings. Google says to use JavaScript redirects only if server-side or meta refresh redirects aren’t possible, because “if you set a JavaScript redirect, Google might never see it if rendering of the content failed”. Crawlers that don’t run JavaScript at all never see it, a problem covered in JavaScript rendering and AI crawlers. Of the crypto redirect, Google notes that “its existence may be disputed”.

Redirect types grouped by permanence and by how reliably Google interprets them A grid with permanent and temporary columns and three rows ordered by reliability. Server-side, most reliable: permanent 301 and 308, temporary 302, 303 and 307. Meta refresh: permanent when instant at 0 seconds, temporary when delayed. JavaScript and crypto redirects, least reliable, both in the permanent column: JavaScript location is seen only if rendering succeeds, and a crypto redirect, a link saying the page moved, may not be recognized at all. There is no temporary equivalent in this row. Redirects by permanence and reliability Rows run from the method Google interprets most reliably to the least Permanent: new URL shown Temporary: old URL shown Server-side most reliable 301, 308 302, 303, 307 Meta refresh in the page or header instant (0 seconds) delayed (more than 0 seconds) JavaScript, crypto least reliable JavaScript: only if rendered "We moved" link: maybe not at all no temporary equivalent

Scroll the diagram sideways to see all of it.

Source: Ambeltek diagram based on Google Search Central, "Redirects and Google Search".

What do 307 and 308 redirects mean?

A 307 is a temporary redirect and a 308 a permanent one, and both guarantee the browser repeats the request unchanged. MDN’s reference for 308 Permanent Redirect says “the request method and the body will not be modified by the client”, whereas with a 301 older clients incorrectly switch to GET. The 307 page makes the same point about 302, and adds that 307 and 302 “are identical when the request method is GET”.

For search, the difference disappears. Google’s status code documentation says 307 is “equivalent to 302” and 308 is “equivalent to 301”, then adds a sensible caveat: they are semantically different, so “use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it”. Since page requests are GET requests, 301 and 308 behave the same for a normal page move. The number matters when a form or API endpoint moves.

One practical trap: if your site sends a Strict-Transport-Security header, browsers that have seen it upgrade http:// requests to HTTPS on their own, before anything reaches your server, as MDN’s HSTS reference describes. When testing redirects, use curl -I or a crawler rather than a browser, so you see what your server actually returns.

When to use 301 vs 302

Use a 301 (or 308) when you don’t intend to bring the old URL back; use a 302 (or 307) when you do. The decision tree below adds the method question and the fallbacks for platforms without server access.

Decision tree for choosing a redirect status code First question: can you set redirects on the server? If no, use an instant meta refresh for a permanent move, or JavaScript only as a last resort. If yes, ask whether the move is permanent. If permanent, and the request method must be kept, as for forms and APIs, use 308; otherwise use 301. If temporary, and the method must be kept, use 307; otherwise use 302. Examples of temporary moves: A/B tests, short promotions, a service that is temporarily unavailable. Picking the status code Permanence decides what Google shows; method only matters for forms and APIs Can you redirect on the server? No Yes Instant meta refresh; JavaScript as last resort Is the move permanent? Yes No Must POST stay POST? Must POST stay POST? No: 301 Yes: 308 No: 302 Yes: 307 Temporary examples: A/B tests, short promotions, a service that is down

Scroll the diagram sideways to see all of it.

Source: Ambeltek diagram based on Google Search Central, "Redirects and Google Search", and MDN documentation for 307 and 308.

Three situations call for a temporary redirect specifically:

  • A/B tests that send users to a different URL. Google’s guidance on website testing says to use a 302, “not 301”, because the redirect only lasts as long as the experiment.
  • Temporary unavailability. Google’s example is a service that is briefly offline, where a temporary redirect sends users to an explanation page “without compromising the original URL in search results”.
  • Seasonal or promotional pages that will revert.

One redirect to avoid entirely: sending visitors to a language or country version based on a guess. Google’s multi-regional guidance advises against automatic redirects by assumed language, because they can stop users and crawlers from reaching every version. Link between versions and use hreflang instead.

Redirect chains and loops

A chain is a redirect that lands on another redirect; a loop is a chain that never ends. Google’s crawlers follow “up to 10 redirect hops” by default, but that is a ceiling, not a target. Google’s guidance on site moves with URL changes says to redirect straight to the final destination and, where that isn’t possible, to keep chains “ideally no more than 3 and fewer than 5”, because each hop “adds latency for users” and not all browsers support long chains.

A three-hop redirect chain compared with the same redirects flattened to one hop Before: http://example.com/old-page redirects to https://example.com/old-page, which redirects to https://www.example.com/old-page, which redirects to https://www.example.com/new-page/. Three hops, three extra requests, each counted separately in Search Console crawl stats. After flattening: every old variant redirects in one hop directly to https://www.example.com/new-page/, which returns 200. Flatten the chain Each hop is a separate request for visitors and crawlers Before: 3 hops http://…/old-page https://…/old-page https://www…/old-page www…/new-page/ (200) After: 1 hop from every variant http://…/old-page https://…/old-page https://www…/old-page www…/new-page/ returns 200

Scroll the diagram sideways to see all of it.

Source: Ambeltek diagram based on Google Search Central site move and HTTP status code guidance.

Chains usually grow by accident. A site moves to HTTPS, then to www, then restructures its blog, and each project adds a rule on top of the last. When you add a new redirect, update the old rules to point directly at the final URL. Google’s crawl budget guide lists long redirect chains among the things that “have a negative effect on crawling”, and Search Console’s Crawl Stats report counts every hop as a separate request. When a chain breaks, the Page indexing report files it as a “Redirect error”: a chain that was too long, a loop, a URL that exceeded the maximum length, or a bad or empty URL in the chain. The wider crawl picture is in our guide to crawl budget.

Also update internal links to the final URL. A redirect is a fix for links you don’t control; your own navigation shouldn’t depend on it.

Building a redirect map

A redirect map is a spreadsheet with one row per old URL and exactly one destination, and it is the single most important document in any URL change. The columns that make it useful:

  • Old URL, from a full crawl plus Search Console, analytics and backlink exports, so pages with links or traffic aren’t missed.
  • New URL, the closest equivalent page, not the nearest category.
  • Status code, almost always 301 or 308.
  • Reason, such as renamed, merged or retired, so decisions can be reviewed.
  • Check result, filled in after testing: one hop, final status 200.

The rule that matters most is relevance. Google’s site move guidance says not to redirect many old URLs “to one irrelevant single URL destination, such as the home page”, because it “can confuse users and might be treated as a soft 404 error”. If a page has no equivalent and no links worth keeping, a 404 or 410 is the honest answer. Where you are merging several similar pages into one, redirecting all of them to the merged page is fine; that is also the cleanest fix for the near-duplicates described in our guide to duplicate content SEO.

Test the map before launch by requesting every old URL on the staging site, and again on launch day in production.

How long redirects need to stay

Keep redirects “for as long as possible, generally at least 1 year”, in the words of Google’s site move guidance. In practice, keep them indefinitely unless they cause a real maintenance problem, because old URLs live on in backlinks, bookmarks, emails, printed material and AI answers long after a move.

Google also remembers the old address. Its redirects documentation explains that Google keeps track of both the source and the target, makes one canonical, and treats the other as an “alternate name” that may still appear in results when a query suggests users trust the old URL. The leaked Google API documentation, analyzed by iPullRank in May 2024, includes a CompositeDoc.alternatename field on Google’s document record. Google stores this attribute; the leak does not show how much it is weighted. It is consistent with the public explanation: old URLs don’t vanish from Google’s view when you redirect them.

Getting redirects right before they matter

Redirects are cheap to set up and expensive to fix after the fact, because every week a broken redirect is live, Google and visitors learn that the old URL leads nowhere. The habits that prevent most problems are simple: server-side 301s for permanent moves, one hop to the final URL, relevant destinations, internal links updated, and redirects kept for years.

If you’re redesigning without changing URLs, most of this doesn’t apply; see website redesign SEO for what does. If URLs are changing, build the map first and test it twice. Redirect rules are part of every site we build or rebuild through our web development service, mapped from a full crawl and tested before launch, not patched after traffic drops.

Frequently asked questions

Do redirects affect SEO?

Yes. A permanent redirect tells Google the target URL should replace the old one in search results and is a strong canonical signal, while a temporary redirect keeps the old URL in results. Redirects done well preserve rankings through URL changes; chains, loops and redirects to irrelevant pages lose them.

What does a 307 or 308 redirect mean?

A 307 is a temporary redirect and a 308 is a permanent one, and both require the client to repeat the request with the same method and body. Google treats 307 the same as 302 and 308 the same as 301, so for SEO the choice is about permanence, not the number.

When should I use a 301 vs a 302 redirect?

Use a 301 when the move is permanent and you want the new URL shown in search. Use a 302 when the original URL will come back, for example during an A/B test, a short-term promotion or while a service is temporarily unavailable, because Google keeps showing the original URL.

Should I use 301 or 308?

For Google they are equivalent: both are permanent and both pass the redirect as a strong canonical signal. Use 308 when the request method must be preserved, such as a form or API endpoint receiving POST requests; use 301 for ordinary page moves, where it is the most widely understood choice.

How many redirects in a chain are too many?

Google's crawlers follow up to 10 hops, but Google's site move guidance recommends redirecting straight to the final destination and, if that is not possible, keeping chains ideally to no more than 3 and fewer than 5 hops. Each hop adds latency for visitors.

How long should I keep 301 redirects in place?

Google recommends keeping redirects for as long as possible, generally at least one year. Links, bookmarks and AI answers keep old URLs in circulation for far longer than that, so removing redirects early usually costs more than keeping them.

OK

Olga Kunger

Founder & Lead Strategist, Ambeltek

Olga leads Ambeltek's web development, AI SEO, and GEO work — helping brands rank on Google and get cited by AI engines. More about Olga →

Want structured data that engines trust?

We audit, design and ship connected JSON-LD for your whole site, validated and monitored.