Home/ Guides/ 301 vs 302 redirects

Guide · Redirects & SEO

301 vs 302 redirects: which to use, and why it matters.

Both send a visitor from one URL to another — but they tell search engines two completely different things. Pick the wrong one and you either bleed ranking signals or freeze a temporary page into your index. Here's the plain-English difference, the decision rule, and how to check what a link actually returns.

Updated June 22, 2026 · by slsh.me

The short answer

A 301 is permanent. A 302 is temporary.

A 301 Moved Permanently tells browsers and search engines the page has moved for good — they update their index, cache the redirect, and pass ranking signals to the new URL. A 302 Found says the move is short-term — the original URL stays indexed and the redirect isn't cached. Use the one that matches your intent: is this move forever, or just for now?

301

Permanent — "this is the new home"

  • Search engines move ranking to the new URL
  • Cached by browsers — fewer round-trips next visit
  • Old URL drops out of the index over time
  • Right for: domain moves, HTTPS, merged or renamed pages
302

Temporary — "back here soon"

  • Original URL keeps its place in search
  • Not cached by default — re-checked each time
  • Destination is treated as a stand-in, not the new home
  • Right for: A/B tests, promos, maintenance, geo routing

Want to know which one a link returns? Paste it into the free slsh.me redirect checker — it follows every hop on the server and labels each status code. And every short link you make on slsh.me is a clean, single redirect with live click analytics.

What the status code actually says.

A redirect is an HTTP response with a 3xx status code and a Location header pointing at the new URL. The browser reads the code, then fetches the location. The number isn't cosmetic — it's a signal that browsers, proxies, and search-engine crawlers all act on differently.

The two that matter day to day are 301 (Moved Permanently) and 302 (Found, historically "Moved Temporarily"). The difference is entirely about permanence: a 301 says "stop asking for the old URL, this is the new one"; a 302 says "use this for now, but keep the old URL around."

That single distinction cascades into three real consequences: whether ranking signals move to the destination, whether the redirect gets cached, and which URL stays in the search index.

Which one to use.

The decision is almost always answered by one question: is this move permanent? If yes, 301. If it's genuinely temporary, 302.

Moving a page or site for good → 301

Renamed a URL, merged two pages, switched domains, or moved everything to https://? Use a 301. It consolidates ranking on the new URL and tells browsers to skip the old one next time.

Running an A/B test or rotation → 302

Splitting traffic between variants or rotating destinations is temporary by definition. A 302 keeps the original URL indexed so search engines don't crown a test variant as the canonical page.

Promo, sale, or maintenance page → 302

A landing page that swaps back when the promotion ends, or a "we'll be right back" page, should be a 302. You want the real URL to return to the index untouched.

Geo, device, or login routing → 302

Sending visitors to a regional page, a mobile URL, or a sign-in screen is conditional and ongoing — not a permanent move of the original URL. Use a 302 so the source URL keeps its standing.

When in doubt, ask: would I want the new URL to replace the old one in Google?

If the answer is "yes, this is the new home" → 301. If it's "no, the original should stay" → 302. That intent is exactly what the status code communicates.

The SEO implications.

Link equity follows a 301. When you 301 an old URL to a new one, the ranking signals it earned — the "link equity" or PageRank from inbound links — are consolidated onto the destination. That's why a 301 is the standard tool for a permanent move: you don't want to abandon years of accumulated authority.

Google says all redirects pass PageRank. Google has publicly stated that 3xx redirects no longer lose PageRank, and that a 302 left in place long-term is eventually treated like a 301. But that's a fallback, not a strategy: a 301 signals the permanent intent immediately, so the new URL consolidates faster and there's no ambiguity about which page is canonical.

A 302 deliberately keeps the original indexed. That's a feature when the move really is temporary — but it's a quiet bug when it isn't. Use a 302 for a permanent move and you can leave the old URL competing with the new one, splitting signals across both. The classic mistake is a developer default: many frameworks emit a 302 unless you explicitly ask for a 301.

Redirect chains dilute and slow things down. Each extra hop (A → B → C) adds latency and a little risk. Keep redirects to a single hop where you can, and avoid loops. You can see the full chain for any link with a redirect checker.

The full 3xx cheat sheet.

301 and 302 cover most cases, but four codes round out the picture. 307 and 308 are the strict versions that never change the request method.

Code Name Permanent? Use it for
301Moved PermanentlyYesPermanent moves — new URL, new domain, HTTP→HTTPS. Passes ranking signals; cached.
302FoundNoTemporary moves — A/B tests, promos, maintenance, geo/login routing. Original URL stays indexed.
303See OtherNoAfter a form POST, send the browser to a result page with a GET (the Post/Redirect/Get pattern).
307Temporary RedirectNoLike 302, but guarantees the method and body are preserved — a POST stays a POST.
308Permanent RedirectYesLike 301, but guarantees the method is preserved. Useful for APIs and non-GET endpoints.

How to check what a link returns.

You can't tell a 301 from a 302 by clicking — the browser lands you on the same page either way. You have to read the HTTP response. Three quick ways:

1. A redirect checker. The fastest, no-tooling option: paste the URL into the free slsh.me redirect checker and it follows the link on the server, listing every hop with its status code — 301, 302, and any chain in between — without your browser ever touching the destination.

2. The browser dev tools. Open the Network tab, load the URL, and click the first request: the Status column shows 301 or 302 and the Location response header shows where it points.

3. The command line. curl -sI https://example.com prints the status line and headers, so you'll see HTTP/2 301 (or 302) and the location: header in one shot.

Checking a short link someone sent you? The redirect checker also flags loops, insecure http hops, and a final host that changed along the way — so you can see exactly where it lands first.

The quick checklist.

Before you ship a redirect, run it past these.

[x]The move is permanent → it's a 301 (or 308 for non-GET endpoints).
[x]The move is temporary → it's a 302 (or 307 when the method must be preserved).
[x]You didn't accept a framework's default 302 for a permanent move by accident.
[x]It's a single hop where possible — no long chains, no loops.
[x]You verified the status code with a checker or curl -I after deploying.

Check any redirect, free.

The only way to be sure a link returns the code you intended is to read the response. Paste it into the checker and see the whole chain — every status code, every hop — in one place.

The free slsh.me redirect checker follows any link on the server and shows each 301 / 302 hop, the expanded destination, and any safety flags — no signup needed.

Check a redirect with the free tool

Need a clean redirect of your own? Make a short link on slsh.me — one tidy hop, with live click analytics on every link.

One clean hop, every time.

Shorten any URL with slsh.me and you get a single, trackable redirect — no mystery chains, plus live click analytics on every link. Free.

Create a link with slsh.me

Free forever · see pricing