HTTP Redirects Explained: 301 vs 302 vs 307/308, Chains & SEO

What each 3xx status code really does to the request method and caching, why redirect chains pile up, and how to trace where a URL actually ends up.

Updated July 5, 2026 · ~8 min read

You type one URL and land on a different one. Somewhere between the two, a server returned a redirect. Choose the right one and you keep your rankings, your users, and your speed. Choose the wrong one — or stack three of them in a row — and you quietly bleed link equity, crawl budget, and milliseconds on every request.

What an HTTP redirect actually is

An HTTP redirect is a server's way of saying “what you asked for lives somewhere else — go there instead.” Mechanically, it is two things working together: a 3xx status code and a Location response header that names the destination URL.

When your browser requests a page and the server replies with, say, 301 Moved Permanently plus Location: https://example.com/new, the browser reads the header and issues a fresh request to that new address. The user usually never sees the intermediate response — they just watch the address bar update. Every redirect is therefore at least one extra round trip: request, 3xx reply, then a second request to the real page.

The 3xx redirect codes compared

The 3xx family looks interchangeable but the codes differ in two decisive ways: whether the browser is allowed to change the HTTP method (for example, turning a POST into a GET) and whether the redirect is cacheable by default. Those two behaviors, plus permanence, decide which one you should reach for.

CodeMeaningMethod preserved?Cacheable?Typical SEO use
301Moved PermanentlyNo (often switched to GET)Yes, by defaultPermanent moves — passes ranking signals
302Found (temporary)No (often switched to GET)No, by defaultShort-lived detours — old URL stays indexed
303See OtherNo — forces GETNoPost/Redirect/Get after form submits; rarely for SEO
307Temporary RedirectYes — method & body keptNoTemporary move that must stay a POST/PUT
308Permanent RedirectYes — method & body keptYesPermanent move that must stay a POST/PUT

The historical quirk is that 301 and 302 predate a strict rule about methods. In practice browsers frequently rewrite a POST to a GET when following them — convenient for web pages, dangerous for APIs. The 307 and 308 codes were introduced precisely to remove that ambiguity: they guarantee the method and body survive the hop.

301 vs 302: the choice that matters most

For most websites, the entire redirect decision comes down to one question: is this move permanent or temporary?

A 301 Moved Permanently tells clients the resource has a new home for good. Browsers and search engines are allowed to cache it aggressively — sometimes for a very long time — and search engines treat the destination as the canonical URL, transferring the accumulated ranking signals from the old address to the new one. Use it when you rename a page, merge two URLs, move to HTTPS, or consolidate www and non-www.

A 302 Found (and its stricter cousin 307) says the detour is temporary. The original URL is still the real one, so search engines keep it indexed and generally do not pass link equity to the temporary destination. Use it for A/B tests, a short maintenance page, geolocation-based landing, or a limited-time promotion.

The costly mistake: shipping a 302 for a move that is actually permanent. Because a 302 keeps the old URL indexed and withholds ranking signals from the new one, a permanent migration served over 302s can stall in search results for weeks. When in doubt about a genuine move, use 301.

307 and 308: preserving the request method

Where 301/302 may quietly downgrade a POST to a GET, the modern codes are explicit:

Redirect chains and loops

A redirect chain is when a URL redirects to a second URL, which redirects to a third, before finally reaching a real page. Each arrow is a full extra round trip: http://site.comhttps://site.comhttps://www.site.comhttps://www.site.com/. Every rule — force HTTPS, force www, add a trailing slash — often lives in a separate config block, and they fire one after another instead of all at once.

Chains are rarely designed on purpose; they accumulate. Someone adds an HTTPS rule this year, a canonical-host rule the next, a migrated-page rule after that, and no one collapses them. The fix is to make the very first URL point straight to the final destination in a single hop.

A redirect loop is the pathological version: URL A redirects to B, and B redirects back to A. The browser follows the ping-pong until it hits its limit and gives up with an error like ERR_TOO_MANY_REDIRECTS. Loops usually come from conflicting rules — for example a server forcing HTTPS while a proxy or CDN in front of it terminates TLS and forwards plain HTTP, so each side thinks the other still needs redirecting.

Why every hop costs you: each redirect is a separate DNS/TCP/TLS-and-request cycle. On a slow mobile connection a three-hop chain can add hundreds of milliseconds before the real page even begins to load — and search crawlers may not follow long chains all the way to the end.

The SEO impact of redirects

Redirects are one of the most powerful SEO tools you have — and one of the easiest to misuse. The essentials:

Server vs meta refresh vs JavaScript redirects

Not every redirect is an HTTP status code. There are three ways to send a visitor elsewhere, and they are not equal for SEO:

MethodWhere it runsSEO friendliness
Server-side (3xx)Server, before the page loadsBest — explicit code, instant, fully understood by crawlers
Meta refreshIn the HTML <head>Poor — slow, ambiguous, discouraged; delayed refreshes especially
JavaScriptIn the browser after loadWeakest — requires rendering; may not pass signals reliably

A server-side 301 is the gold standard for SEO because it is unambiguous, happens before any HTML is sent, and every crawler honors it. A <meta http-equiv="refresh"> tag fires only after the browser downloads the page, and a delayed one can look like a spam technique. A JavaScript redirect requires the client to execute code and is the least reliable for passing ranking signals. Reserve meta and JS redirects for cases where you genuinely cannot configure the server.

How to trace and audit a redirect path

Because a browser hides the intermediate hops, the only way to know what really happens is to follow the chain explicitly and read the status code at each step:

  1. Start from the exact URL users or links point at — including the http and non-www variants, since that's where chains hide.
  2. Record the status code and Location header at every hop, not just the final page.
  3. Confirm the type of each hop: a permanent move should be a 301/308, never a 302/307.
  4. Count the hops. More than one means you have a chain to collapse into a single redirect.
  5. Verify the final response is a real 200 OK — not another redirect, a 404, or a loop.

On the command line you can do this with curl -sIL https://example.com, which prints the headers for every hop. For a readable, one-shot view of the entire path — every code, every Location, and the final destination — a dedicated redirect checker is faster.

Trace any redirect path in seconds

See every hop, the status code at each step, and where a URL truly ends up — catch hidden chains, loops, and mismatched 301/302 codes. Free, no signup.

Open the Redirect Checker →

Frequently asked questions

What is the difference between a 301 and 302 redirect?
A 301 is permanent: it tells browsers and search engines the resource has moved for good, so they cache the result and pass ranking signals to the new URL. A 302 is temporary: the original URL stays canonical and keeps its indexing, so link equity is generally not transferred. Use 301 for permanent moves and 302 only when the redirect is genuinely short-lived.
Do redirects hurt SEO?
A single, correct 301 does not hurt SEO and is the recommended way to preserve rankings when a URL changes. Harm comes from the wrong type (a 302 for a permanent move loses equity), long chains that waste crawl budget and add latency, or loops that block access. Keep redirects to one hop and use 301 for permanent moves.
What is a redirect chain and why is it bad?
It's when one URL redirects to a second, which redirects to a third, before reaching the real page. Each hop is an extra round trip that adds latency, consumes crawl budget, and can slow the passing of ranking signals. Chains build up as http-to-https, non-www-to-www, and trailing-slash rules stack. Collapse them so the first URL points straight to the final destination.
Is a 301 redirect permanent?
Yes in intent and effectively in practice. A 301 lets browsers and search engines cache the move aggressively, sometimes indefinitely, so visitors may keep going straight to the new URL. Don't ship a 301 for a change you expect to reverse — use a 302 or 307 for temporary moves.
How do I check where a URL redirects to?
Use a redirect checker that follows the whole path and shows every hop, the status code at each step, and the final destination. This reveals chains, mismatched permanent/temporary codes, and loops. You can also read the Location header at each step with curl -sIL, but a checker that traces the full chain at once is easier.

Related tools & guides