UrlEdge
Back to Blog
2026-03-15 UrlEdge Editorial7 min read

301 vs 302 vs 307 vs 308 Redirects: Which One Should You Use?

Use 301 or 308 for permanent moves, and 302 or 307 for temporary ones. The key question is whether the HTTP method must stay unchanged.

Directional road sign used to represent choosing the correct redirect status code

If you are deciding between 301 vs 302 vs 307 vs 308 redirects, start here:

  • use 301 for a permanent move when normal page requests are involved
  • use 308 for a permanent move when the HTTP method and body must stay unchanged
  • use 302 for a temporary move when normal page requests are involved
  • use 307 for a temporary move when the HTTP method and body must stay unchanged

For most websites, that means 301 is still the default answer for permanent page migrations. The moment you are handling forms, APIs, or any request where a POST must remain a POST, you need to pay closer attention to 307 and 308.

If you are making this decision during a replatform or host move, pair this article with our website migration redirect checklist. Redirect status codes matter most when the surrounding migration plan is also clean.

The shortest practical explanation

The two decisions you are really making are:

  1. Is this change permanent or temporary?
  2. Does the original request method need to stay exactly the same?

That gives you a simple decision table:

IntentMethod/body preservation needed?Best choice
Permanent page moveUsually no301
Permanent API or form endpoint moveYes308
Temporary campaign, maintenance, or testUsually no302
Temporary API or form endpoint moveYes307

[!TIP] If you are redirecting normal web pages, do not overcomplicate it. Most teams should default to 301 for permanent moves and 302 for temporary ones.

What 301 means

A 301 Moved Permanently redirect tells clients and crawlers that the requested resource has a new long-term location.

Typical use cases:

  • moving /old-page to /new-page
  • migrating from old-domain.com to new-domain.com
  • consolidating duplicate URLs
  • forcing one canonical host

Why teams use 301 so often:

  • browsers understand it well
  • SEO teams expect it
  • it matches common site-migration intent
  • it works well for content URLs, landing pages, and docs

If you are doing a classic site move, 301 is still the safest default. See Google's guidance for site moves with URL changes.

If that move also needs to preserve old paths and campaign parameters, see how to redirect a domain without losing paths or UTM parameters.

What 302 means

A 302 Found redirect signals that the resource has moved temporarily.

Typical use cases:

  • short-term campaign routing
  • sending traffic to a temporary landing page
  • maintenance mode
  • quick rollback-friendly experiments

The biggest mistake with 302 is not technical. It is organizational. Teams use 302 for a move that is actually permanent, then forget about it for six months.

If the move is permanent, say so with a permanent code. Do not rely on search engines or browsers to infer your true intent.

What 307 means

A 307 Temporary Redirect is the temporary version that preserves the original request method and body.

That matters when the original request is not just a simple page load.

Examples:

  • redirecting a temporary API endpoint
  • moving form submissions during maintenance
  • routing traffic through a temporary staging edge without changing request semantics

If a POST request must remain a POST, 307 is the safer temporary choice than 302.

What 308 means

A 308 Permanent Redirect is the permanent version that preserves the original request method and body.

Typical use cases:

  • permanently moving API endpoints
  • versioning service URLs while preserving non-GET behavior
  • migrating application endpoints that must not degrade into GET behavior

For classic page migrations, 308 is valid, but many teams still prefer 301 because it is the more familiar SEO and content-migration code. For request-sensitive endpoint changes, 308 is the clearer signal.

The easy way to choose the right one

Use this decision tree:

Choose 301 when:

  • the change is permanent
  • the request is a normal page visit
  • you are migrating URLs for SEO, docs, product pages, or blogs

Choose 302 when:

  • the change is temporary
  • you expect to remove or change the redirect later
  • the request is a normal page visit

Choose 307 when:

  • the change is temporary
  • a form or API request method must stay unchanged

Choose 308 when:

  • the change is permanent
  • a form or API request method must stay unchanged

Common real-world examples

Example 1: Site migration

https://oldbrand.com/pricing -> https://newbrand.com/pricing

Use 301.

Example 2: Temporary launch page

https://yourbrand.com -> https://yourbrand.com/waitlist

Use 302 if the homepage will come back soon.

Example 3: API version move

POST /api/v1/orders -> POST /api/v2/orders

Use 308 if the move is permanent and the request method must remain unchanged.

Example 4: Temporary checkout reroute

POST /checkout -> POST /checkout-maintenance

Use 307 if you must preserve request semantics during a short-term change.

The SEO question everyone asks

Does 302 pass SEO value?

The better question is: does the code match the real intent of the move?

Google has long said that multiple redirect types can be processed, but you should still use the code that reflects whether the move is temporary or permanent. In practice:

  • if the move is permanent, use 301 or 308
  • if the move is temporary, use 302 or 307

Trying to "hack" intent with the wrong code usually creates more confusion than advantage.

The performance question teams forget

The status code choice matters less than the redirect architecture around it. A perfect 301 is still bad if it creates:

  • a three-hop redirect chain
  • HTTP -> HTTPS -> non-www -> final path
  • inconsistent mobile and desktop behavior
  • stale internal links that keep calling old URLs

That is why redirect QA matters just as much as choosing the code itself. If you want a fast check, test the full redirect path here.

If you are cleaning up legacy infrastructure, you should also look for redirect chains and loops before launch.

What to use in UrlEdge

If you are using UrlEdge for marketing pages, site migrations, docs moves, or domain consolidation:

If you are redirecting API or form traffic and method preservation matters, document that clearly before rollout. The risk there is usually not SEO. It is breaking application behavior.

Common mistakes

Using 302 for a permanent move

This is the most common mistake on the web. It usually happens because a redirect was created in a hurry and never revisited.

Using 301 for a short-term campaign

If you know a redirect is temporary, keep it temporary. Otherwise your future rollback becomes harder and your intent becomes muddled.

Ignoring request method semantics

If the original request is not just a page load, 307 and 308 stop being edge cases.

Fixing the code but leaving chains in place

One clean redirect is better than several technically correct redirects stacked together.

FAQ

Is 308 better than 301 for SEO?

Not by default. For normal page migrations, 301 is still the most common and practical choice. Use 308 when method preservation is part of the requirement.

Is 307 just a newer 302?

Not exactly. The key difference is that 307 is stricter about preserving the original request method and body.

Can I use 302 for A/B testing?

Yes, temporary testing is one of the clearest use cases for 302 style routing, especially when you know the final destination can change.

What should I use for a blog migration?

Usually 301. Pair it with a redirect map, updated internal links, and validation for chains and broken paths.

Authoritative references

Ready to optimize your redirects?

Start using UrlEdge today to manage your traffic at the edge.

Get Started

Related Articles

View all