301 vs. 302 Redirects: Which One Protects Your SEO?

· 3 min read

A redirect answers a simple question from the browser — "this URL moved; where to?" — but the status code you answer with tells search engines something more consequential: whether the move is forever. Get it right and rankings follow the content to its new address. Get it wrong and you can keep a dead URL in the index for months.

The four codes that matter

Code Meaning Method preserved? Search engines...
301 Moved permanently No (may become GET) transfer signals to the new URL
302 Found (temporary) No (may become GET) keep indexing the old URL
308 Moved permanently Yes treat like 301
307 Temporary Yes treat like 302

The 30x pairs differ on one technical axis: 307/308 forbid the browser from changing the HTTP method on the redirected request (a POST stays a POST), while the older 301/302 allow it. For ordinary page navigation this distinction is invisible — links are GETs — so 301 remains the standard choice for moved content, with 308 as its API-safe sibling.

What "permanent" buys you

A 301 tells search engines three things: stop indexing the old URL, index the new one, and transfer accumulated signals — the links, the history, the rankings — to the new address. This transfer is why redirect discipline matters. Google has stated for years that permanent redirects pass full PageRank; the old belief that "redirects leak 15%" describes a policy retired around 2016. What genuinely loses value is redirect chains: A→B→C→D wastes crawl budget, adds latency for every visitor, and raises the odds that some hop breaks later. After any migration, update internal links to point directly at the final URL — the chain you tolerate today is the outage you debug next year.

What a 302 actually says

A temporary redirect says "the content will return to this URL — keep it indexed." Legitimate uses are genuinely temporary states:

  • A/B test variants and holiday landing pages
  • Geo or language routing (send /pricing to /de/pricing while /pricing remains the canonical entry)
  • Content briefly parked during maintenance

The classic mistake is shipping a permanent migration behind 302s because the framework's redirect helper defaults to temporary. Google often eventually treats a long-lived 302 as permanent, but "eventually" can be a long time to have your old URLs competing against your new ones.

Redirects and slug changes

Every slug change is a URL death and a URL birth, which makes redirects the tax on renaming a page. Three rules keep the tax low:

  1. Redirect old → new with a 301, one hop, no chains.
  2. Preserve the query string. A visitor arriving at the old URL with ?utm_campaign=... attached should land on the new URL with those parameters intact, or your campaign attribution silently dies at the redirect boundary. Verify with a URL parser that parameters survive the hop.
  3. Keep redirects alive for years, not weeks. Links in old emails, PDFs, and other people's sites never get updated. A redirect map is permanent infrastructure.

Debugging what a URL really returns

Browsers hide redirects so well that the only honest test is looking at the raw response. curl -I https://old-url shows the status and Location header directly; follow the hops one at a time and you'll find the 302 that should be a 301, or the four-hop chain that should be one. Your rankings live and die on details exactly this boring.