Redirects

301, 302, 307, 308: Which Redirect Should You Use (and What Breaks When You Pick Wrong)

Four status codes, two meanings, and a lot of confusion. Here is which redirect to use for each situation, what Google does with each, why the HTTP method only matters in some cases, and the mistakes that quietly cost visibility.

Madhav Kushwaha Madhav KushwahaSEO, AEO & GEO consultant and trainer, Lalitpur Updated 10 min read Google claims linked to sources
In this guide

Key takeaways

  • For a lasting move, use 301 (or its method-preserving twin 308). For a short-term move, use 302 (or 307). Google groups them in those two pairs.
  • The 301 versus 308 and 302 versus 307 choice is about the HTTP method. For ordinary pages Google crawls it makes no practical difference. It matters for forms, APIs and apps.
  • Google treats permanent redirects as a strong signal that the target should be canonical, and temporary redirects as a weak one. Using the wrong kind leaves the wrong URL in search.
  • Aim for one hop from each old URL to its final destination. Chains waste crawling, and Google follows only up to 10 hops.
  • Redirect to the closest equivalent page. If none exists, return a 404 or 410. Do not send everything to the homepage.

The short answer

When someone asks me which redirect to use, I ask one question first: is the old URL coming back? If not, it is permanent. If it is, it is temporary. Everything else is detail.

The four codes at a glance.
CodeMeaningMethod on redirectUse it for
301Moved permanentlyClients may switch POST to GETPermanent page moves, domain changes, HTTP to HTTPS, merging pages
308Permanent redirectMethod and body must be keptPermanent moves where a form or API call must still work
302Found (temporary)Clients may switch POST to GETShort-term moves, maintenance pages, tests
307Temporary redirectMethod and body must be keptTemporary moves where the method must be kept
303See otherAlways followed with GETSending a user to a confirmation page after a form submission

For nearly every website page I deal with, the answer is 301. The other codes have real uses, covered below, but they are the exception.

Permanent versus temporary: what Google does

This is the distinction that affects search results. Google's documentation says that 301 and 308 mean a page has permanently moved, while 302 and 307 are temporary. Its crawler documentation treats 308 as equivalent to 301 and 307 as equivalent to 302, and handles 303 like 302.

  • Permanent redirects are used as a signal that the redirect target should be canonical, and the target is what Google shows in search results.
  • Temporary redirects are not used as a signal that the target should be canonical, and the source page keeps showing in results. The target can still be indexed if other canonicalisation signals point to it.

The practical lesson: if you move a page for good but use a 302, you may find the old URL still showing and the new one slow to take over. If you use a 301 for something that is really temporary, such as a short promotion, the target is treated as the page to keep. Use the code that matches your intention.

Other ways to redirect

Google also reads an instant meta refresh as a permanent redirect and a delayed one as temporary, and it can follow redirects done in JavaScript. Its advice is to use JavaScript redirects only when you cannot do a server-side redirect or a meta refresh, because rendering can fail and Google might never see the redirect. I use server-side redirects wherever I have the choice, and the JavaScript SEO guide explains why rendering can fail.

When the HTTP method matters

The reason four codes exist, instead of two, is history. When a browser sends a form with POST and receives a 301 or 302, the HTTP standard (RFC 9110) lets it follow the redirect with a GET instead, for historical reasons. That is what most browsers do. Codes 307 and 308 were created to say "repeat the same request, with the same method and body, at the new address".

  • For a page crawled by Google there is nothing to preserve. Google does not submit your forms. Treat 301 and 308 as the same, and 302 and 307 as the same.
  • For an API or a form handler that has moved, a 307 or 308 keeps a POST a POST. Without it, a client may arrive at the new address with a GET and lose the data it was sending.
  • After a successful form submission, a 303 sends the browser to a confirmation page with GET. This is the post-redirect-get pattern, and it stops a refresh from submitting the form twice.

So if a developer says "we should use 308 because it preserves the method", they are right in an application context, and it will not change how Google handles an ordinary page. I would not argue the point. I would check that the moved URL is not a form endpoint and move on.

If you see a 307 you did not set

Chrome's developer tools can show a "307 Internal Redirect" when a site uses HTTPS strict transport security. The browser upgrades the request to HTTPS itself, without asking your server. It is not a redirect your server sent, so it is not something to fix in your redirect rules.

What breaks when you pick wrong

Common redirect mistakes, their effect and the fix.
MistakeWhat happensFix
302 used for a permanent moveGoogle keeps the old URL as the one to show. The new URL is slower to take overSwitch to 301 or 308 once the move is final
301 used for something temporaryThe target is treated as the page to keep, and browsers may cache the permanent redirect, so reversing it can be slow for returning visitorsUse 302 or 307 for anything you may undo
Redirect chainsEach extra hop adds delay and uses crawl effort. Google warns long chains hurt crawlingPoint every old URL straight at the final one
Redirect loopsThe URL never resolves. Search Console reports a redirect errorTrace the chain and break the cycle with one correct destination
Everything sent to the homepageUnrelated redirects can be treated as soft 404s, and users land on a page they did not ask forMap each URL to its closest equivalent, or return 404 or 410
Old URL blocked in robots.txtGoogle cannot fetch the old URL, so it never sees the redirectLeave redirecting URLs crawlable. See the robots.txt guide
Canonical, sitemap and links still point at old URLsMixed signals. Google must reconcile conflicting instructionsUpdate canonicals, sitemaps and internal links to the final URLs
Method lost on a form or APIA POST arrives as a GET and the data is lostUse 307 or 308 for endpoints, or 303 after a successful submission

Chains and loops

A chain is a redirect that leads to another redirect. They build up quietly: a site moves to HTTPS, then to a new domain, then to a new structure, and every old rule points at the previous destination instead of the final one. A request for an old URL then makes three or four hops before it reaches a page.

  • Limits. Google says its crawlers follow up to 10 redirect hops by default, and its crawl guidance advises avoiding long chains. In Search Console, a URL that does not resolve in time is reported as a redirect error.
  • The most common chain I find is the host variants: http://www to https://www to https:// without www. Each of the four host and protocol combinations should reach the preferred version in a single hop.
  • Loops come from two rules that disagree, such as a trailing-slash rule undoing a path rule. The Redirect Checker traces every hop with its status code and flags loops, chains and 302s.

The fix is boring and reliable: write the redirect map as a table of old URL to final URL, and regenerate the rules from it each time, rather than adding a new rule on top of the old ones.

Mapping and implementing redirects

  1. Inventory the URLs that will change. Pull them from a crawl, the sitemap, Search Console and your analytics, so pages that earn traffic or links are included.
  2. Map each old URL to its closest equivalent. Match by topic and intent. The Redirect Mapping Tool gives a confidence-scored first draft that you correct by hand.
  3. Decide the code for each row. 301 for permanent, 302 for temporary, and a 404 or 410 where nothing matches.
  4. Generate the rules for your server or host. The Redirect Rule Generator outputs rules for several platforms.
  5. Test before launch. Run every old URL through the SEO Migration Redirect Checker and look for chains, loops, wrong destinations and 404s.
  6. Update everything that points at the old URLs. Internal links, canonical tags, hreflang and the sitemap should all use the final addresses.
  7. Keep the redirects in place. Google's site move guidance generally suggests at least a year, and nothing stops you keeping them longer.
  8. Monitor. Watch the Page indexing report for redirect and not found statuses, and check status codes again after the first crawl.

Google's own examples show the shape of a server-side rule. These are the same permanent redirect written for two common web servers:

# Apache (.htaccess or server config)
Redirect permanent "/old-page" "https://www.example.com/new-page"

# Nginx (inside a server or location block)
return 301 https://www.example.com/new-page;

For large moves I use generated rules rather than hand-typed ones, and I read the checker's results before anything goes live. The full process for redesigns is in the migration audit checklist, and a template change can create the same problems at a smaller scale, as in the deploy guide.

Tip when testing: Search Console's URL Inspection tool does not follow redirects, so it will show you the redirecting URL rather than the destination. Use a redirect checker for the chain, then inspect the final URL.

Lessons from my own site

In October 2026 I rebuilt the redirects on this site after Search Console reported URLs I had deleted. The principles in this guide are the ones I applied. Each old URL went to its closest equivalent in a single hop, with no chains. Sections that had no equivalent returned 410 Gone, rather than being redirected to the homepage.

One practical catch is worth passing on. My host limits how many wildcard redirect rules a site can have, and it counts every rule below the first wildcard as one of them, so a wildcard near the top can push later rules over the limit and stop them applying. I now keep all exact-match rules at the top of the file and the wildcard rules at the end. If your platform has a rule limit, find out what it counts before you build a long redirect file.

Redirects on your platform

Most hosted platforms give you a redirect manager rather than a server file, and each has its own quirks about slug changes, wildcards and limits. I cover the ones that trip people up in the platform guide for Shopify, WordPress and Webflow. If you are planning a move and want it checked, my SEO migration service covers the mapping, the testing and the post-launch monitoring, and the wider technical SEO service covers the surrounding clean-up. The framework that places redirects within crawling and indexing is in technical SEO in four questions.

Frequently asked questions

Should I use 301 or 308 for a permanent redirect?

For ordinary web pages, either. Google treats 308 the same as 301. Use 301 as the default, and choose 308 when a moved URL receives form submissions or API calls and the method must be kept.

Is a 302 bad for SEO?

Not when it is used for what it means. A 302 is right for a short-term move you will undo. It is wrong for a permanent move, because Google keeps showing the old URL and does not treat the target as canonical.

Does a 301 lose ranking?

Google's documentation does not describe any loss from a permanent redirect itself. What causes loss is the surrounding mess: redirecting to an unrelated page, long chains, or leaving internal links and canonicals pointing at old URLs.

How many redirects in a row will Google follow?

Up to 10 hops by default, according to Google's crawler documentation. Aim for one, because every extra hop adds delay and wastes crawling.

Should I redirect deleted pages to the homepage?

No. Redirect to the closest equivalent page. If none exists, return a 404 or 410. Google treats 404 and 410 alike, and sending many unrelated URLs to one page can be treated as a soft 404.

How long should I keep redirects?

As long as possible. Google's site move guidance generally suggests at least a year, and redirects can stay indefinitely if they are still being used by visitors or links.

What redirect should I use from HTTP to HTTPS?

A permanent one, 301 or 308, sending every HTTP address straight to the final HTTPS address in one hop, with the host variants resolved in the same step.

Why does my browser show 307 when I set a 301?

If the site uses HSTS, the browser may upgrade the request itself and label it an internal redirect. Check what the server sends with a header viewer or the redirect checker rather than the browser's network panel alone.

Sources and further reading

Statements about Google in this guide are based on the pages below, checked on 24 October 2026. The server examples are illustrations from Google's documentation, so test them in your own environment.

  1. Redirects and Google Search: permanent and temporary redirects, meta refresh, JavaScript redirects and server examples
  2. How HTTP status codes affect Google's crawlers: redirect hops, 301 and 308 as strong signals, 302 and 307 as weak signals, 404 and 410, 5xx
  3. Site moves with URL changes: mapping old URLs to equivalents and keeping redirects in place
  4. Managing crawl budget for large sites: avoid long redirect chains; soft 404s
  5. How to specify a canonical URL: redirects as canonicalisation signals
  6. Introduction to robots.txt: a blocked URL cannot be fetched, so a redirect on it is not seen
  7. Page indexing report: Page with redirect and Redirect error statuses
  8. URL Inspection tool: inspecting the final URL and the live test
  9. RFC 9110: HTTP Semantics, section 15.4 Redirection 3xx: the standard definition of each redirect status code, including when a client may change the method
Before you change URLs

Get the redirect map right first time

A clean redirect map, one hop per URL and tested before launch, protects the visibility you already have. If a redesign or replatform is coming, plan it with me.

Call WhatsApp Contact