HTTP 302 Found (Temporary Redirect)
The resource temporarily lives at a different URL — used for A/B tests, login flows, geo redirects, and short-term maintenance. Originally the URL should be restored.
Check a URL for HTTP 302
Paste any URL to see whether it currently returns 302. Runs a live HTTP probe and follows redirects.
TL;DR
A 302 means "temporary detour, keep using the original URL next time." Use it for genuine short-term redirects: A/B tests, login flows, geo redirects, brief maintenance. Don't use it for permanent moves — Google will eventually treat long-standing 302s as 301s, but until it does, you're leaking ranking equity. If method preservation matters (POST stays POST), use 307 instead.
What does HTTP 302 mean?
HTTP 302 Found is the "temporary redirect" code. Unlike 301, it tells search engines that the original URL should remain canonical — they should keep indexing it and not transfer ranking signals to the new URL. This makes 302 the correct choice when the move genuinely is temporary: A/B testing, geolocation-based redirects, login flows that send users to /auth and back, or short maintenance windows where the URL will return. Historically, some old HTTP clients changed POST requests to GET during a 302 redirect (a spec-versus-practice mismatch). When method preservation matters, use 307 (temporary) or 308 (permanent) instead.
Common Causes
- •A/B testing redirect to a variant page
- •Geolocation: /pricing → /pricing/uk for UK visitors
- •Login required: /dashboard → /auth?return=/dashboard
- •Short-term maintenance redirect to a status page
- •Mobile/desktop split when serving different URLs per device
- •Default behaviour of Express.js res.redirect() (sends 302 unless you specify 301)
- •Marketing campaign URL temporarily pointing to a landing page
How to Fix It
- 1.If the move is actually permanent, switch to 301 — Google will transfer ranking signals
- 2.If you need POST/PUT/DELETE to survive the redirect, use 307 instead of 302
- 3.Make sure the redirect destination returns 200 OK — a 302 pointing to a 404 wastes both clicks and crawl budget
- 4.Don't leave a 302 in place for years if the original URL will never return — Google's reclassification to 301 is slow and unreliable
- 5.For login redirects, include a return parameter so users land on the page they wanted after authenticating
- 6.Limit redirect chains: a 302→302→200 still drops crawl efficiency at each hop
SEO Impact
Google does not transfer ranking signals through a 302 — the original URL stays canonical and keeps its rankings. This is correct behaviour when the move is genuinely temporary. When it is not temporary, you are leaking ranking equity until Google decides to treat the 302 as a 301 (which it does, eventually, for redirects that have been in place for a long time — but the delay can be months). Always use 301 for permanent moves.
History & Context
HTTP 302 has a confused history. The HTTP/1.0 spec (RFC 1945, 1996) defined it as "Moved Temporarily" but didn't specify whether the request method should be preserved during the redirect. In practice, most clients silently changed POST to GET — which was useful for the Post/Redirect/Get pattern but technically wrong. HTTP/1.1 (RFC 2616, 1999) renamed 302 to "Found", left the ambiguity in place, and introduced 303 (always-GET) and 307 (always-preserve-method) to clear up the confusion.
Real-World Examples
A/B testing platforms
Optimizely, Google Optimize (legacy), and VWO use 302 redirects to send a fraction of visitors to variant URLs without telling Google the original page has moved.
Express.js default behaviour
res.redirect('/login') in Express sends a 302 by default — fine for login flows but a common source of accidental "temporary" redirects on permanent URL changes. Use res.redirect(301, ...) to be explicit.
Geolocation-based redirects
Booking.com, Airbnb, and many e-commerce sites use 302 to send EU visitors to their .eu or country-specific subdomain on first visit — the original URL stays canonical for Google, the geo redirect is just user-facing routing.
Explicit 302 vs 301 in Express.js
javascript
// Express.js — temporary redirect (302, the default)
app.get('/dashboard', (req, res) => {
if (!req.user) return res.redirect('/auth?return=/dashboard');
// ...
});
// Permanent redirect (301) — be explicit when the move is permanent
app.get('/old-pricing', (req, res) => {
res.redirect(301, '/pricing');
});
// Method-preserving temporary redirect (307) — POST stays POST
app.post('/api/v1/upload', (req, res) => {
res.redirect(307, '/api/v2/upload');
});Frequently Asked Questions about HTTP 302
What does HTTP 302 mean?
HTTP 302 Found is a temporary redirect. It tells the client to use a different URL for this request only, and to keep using the original URL for future requests. Search engines do not transfer ranking signals through a 302.
When should I use 302 instead of 301?
Use 302 when the move is genuinely temporary: A/B tests, login flows, geo redirects, short-term maintenance. Use 301 for any permanent move — domain change, URL restructure, HTTPS migration, content consolidation.
Does a 302 redirect pass SEO value?
No — Google keeps the original URL canonical and does not transfer ranking signals to the redirect target. If the move is actually permanent, switch to 301 to preserve ranking equity. Google will eventually reclassify long-standing 302s as 301s, but the delay can be months.
What is the difference between 302 and 307?
Both are temporary redirects. 302 is ambiguous about whether the HTTP method (POST/PUT/DELETE) should be preserved — in practice most clients change POST to GET. 307 guarantees the method is preserved. Use 307 when redirecting POST/PUT/DELETE requests; 302 is fine for GET.
Why does Express.js return 302 by default?
Because res.redirect(url) treats the redirect as temporary unless told otherwise. To make it permanent, use res.redirect(301, url) explicitly. The default is a frequent source of accidental temporary redirects on URLs that have permanently moved.
Will a 302 redirect hurt my SEO?
Only if you use it for a permanent move. Google will eventually treat long-standing 302s as 301s, but during that transition (which can take months), the original URL keeps the ranking and the new URL doesn't accumulate equity. For permanent moves, always use 301.
What is the difference between 302 and 303?
302 is ambiguous about method preservation; 303 always forces the next request to be a GET. 303 is the correct response after a POST when you want to redirect the user to a confirmation page that should be re-fetchable on refresh (the Post/Redirect/Get pattern).
Related Status Codes
Free Website Tools
Check your site for common issues that cause HTTP errors: