301 vs 302 Redirects: What's the Difference?
Permanent vs temporary redirects explained: when to use each, SEO implications, how search engines handle them differently, and common mistakes that cost you rankings.
The difference between a 301 and a 302 redirect is one sentence: a 301 is permanent, a 302 is temporary. But choosing the wrong one can quietly drain your organic traffic for months.
For the complete picture on all redirect types (including 303, 307, and 308), see our HTTP Redirect Guide. This article focuses specifically on the 301 vs 302 decision, which is the one most people get wrong.
The core difference
A 301 Moved Permanently tells browsers and search engines: "This resource has permanently moved to a new URL. Update your records." [1]
A 302 Found (originally "Moved Temporarily") tells them: "This resource is temporarily at a different URL. Keep the original in your index." [1]
301: Old URL --[permanent]--> New URL
Search engines transfer link equity to new URL
Browsers cache the redirect aggressively
302: Old URL --[temporary]--> New URL
Search engines keep the old URL indexed
Browsers may or may not cache it
The practical difference comes down to two things: where search engines point your ranking signals, and which URL they keep in their index.
When to use a 301
Use a 301 redirect when the move is permanent and you never intend to use the old URL again.
Domain migration
URL restructuring
HTTP to HTTPS
Consolidating duplicate content
Removing old pages
A 301 tells Google to transfer all ranking signals to the new URL. Google confirmed in 2016 that 301 redirects pass full PageRank with no dampening factor. [2]
When to use a 302
Use a 302 redirect when you plan to bring the original URL back.
A/B testing
Maintenance pages
Geolocation redirects
Seasonal promotions
If you are unsure whether the move is temporary, it is almost certainly permanent. Default to 301.
SEO implications: where it actually matters
This is where the 301 vs 302 decision has real consequences.
| Behavior | 301 Permanent | 302 Temporary |
|---|---|---|
| Link equity transfer | Passes ~100% of link equity | May not pass link equity |
| Indexed URL | New URL replaces old in index | Old URL stays in the index |
| Crawl budget | Googlebot stops crawling old URL over time | Googlebot continues crawling both URLs |
| Browser caching | Cached aggressively (may persist for months) | Cached briefly or not at all |
| Canonicalization signal | Strong signal for new URL | Weak or no signal |
The critical row is link equity transfer. When you use a 302 for what should be a 301, you risk keeping the link equity stuck on the old URL. Google has said they will eventually figure it out, but "eventually" can mean weeks or months of lost rankings. [3]
For more on how redirects affect rankings, see How Redirects Affect SEO Rankings.
The most common mistake
Using a 302 for a permanent move because your framework or CMS defaults to it. Many web servers and frameworks return 302 by default. Always check.
How search engines actually handle them
Google's official position has evolved over the years:
Google treats long-standing 302s similarly to 301s eventually, but the transition is slower and unpredictable. [3] A 301 sends an immediate, unambiguous signal. A 302 forces Google to guess your intent. Google's John Mueller has said that while they can figure out permanent moves from 302s, "it's much easier if you just use a 301." [4]
Bing is stricter. A 302 tells Bing the move is temporary, full stop. Bing is less likely to transfer ranking signals through a 302.
Other search engines generally follow the HTTP spec more literally. A 302 means temporary. They keep the old URL.
307 and 308: the method-preserving alternatives
The HTTP specification also defines 307 (Temporary Redirect) and 308 (Permanent Redirect). These work like 302 and 301 respectively, with one key difference: they guarantee the browser will not change the request method from POST to GET.
For standard website pages (where requests are always GET), this distinction does not matter. 301 and 302 are the right choice. For API endpoints or form submissions where you need to preserve POST, use 307 or 308. For the full comparison of all redirect status codes, see HTTP Redirect Status Codes.
The decision flowchart
Is the old URL coming back?
|
+-- YES --> Use 302 (Found)
|
+-- NO ---> Is the content at the new URL equivalent?
|
+-- YES --> Use 301 (Moved Permanently)
|
+-- NO ---> Is there a relevant replacement?
|
+-- YES --> Use 301 to that page
|
+-- NO ---> Return 410 (Gone)
If you are choosing between a redirect and a canonical tag for duplicate content, see Redirect vs Canonical Tag.
Trace your redirect chains
Find redirect loops, broken chains, and unnecessary hops instantly.
Common mistakes
1. Using 302 when you mean 301
This is by far the most common error. Default configurations in Apache, Nginx, and many frameworks use 302 unless you explicitly request 301. Always verify your redirect status codes after deployment. See your server-specific guide for how to set the correct code: .htaccess, Nginx, or Cloudflare.
2. Using 301 when you mean 302
Less common but equally damaging. If you 301 a temporary promotion and then try to bring back the original URL, browsers will have cached the redirect. Users will keep getting sent to the old promotion page from their browser cache, even after you remove the redirect from the server.
3. Chaining 301s and 302s together
A redirect chain mixing status codes confuses search engines about intent. If any hop in the chain is a 302, Google may treat the entire chain as temporary.
Page A --301--> Page B --302--> Page C
^
Google may not pass full
equity to Page C
4. Not auditing after migration
After a site migration, audit every redirect. It is common for CMS plugins, CDN rules, and server configs to introduce unintended 302s. A single misconfigured redirect rule can affect hundreds of pages.
How to verify your redirects
Check your redirect status codes using curl:
curl -I -L https://example.com/old-page
Look for the HTTP/1.1 301 or HTTP/1.1 302 line in each hop of the response. If you see a 302 where you expected a 301, fix it at the source: your server config, your .htaccess, your CDN rules, or your application code. For more testing approaches, see How to Check URL Redirects and How to Trace Redirects with cURL.
For bulk checking across an entire site, see How to Check Redirects in Bulk.
The bottom line
If the move is permanent, use 301. If it is temporary, use 302. When in doubt, it is almost always a 301. The cost of a wrong 302 (lost link equity, slower indexing) far outweighs the cost of a wrong 301 (aggressive browser caching you can work around).
Before forcing any HTTPS redirects, make sure your SSL certificate is valid and your DNS records point where you expect. A redirect to a broken destination is worse than no redirect at all.
References
- IETF, "RFC 9110 - HTTP Semantics, Section 15.4: Redirection 3xx," June 2022. https://httpwg.org/specs/rfc9110.html#status.3xx
- Gary Illyes, Google, "30x redirects don't lose PageRank anymore," Twitter/X, July 2016.
- Google, "Redirects and Google Search," Google Search Central, 2024. https://developers.google.com/search/docs/crawling-indexing/301-redirects
- Google Search Central, "SEO Mythbusting: Redirects," YouTube, 2019. https://www.youtube.com/watch?v=ZHHSiGKBJMo
Never miss a broken redirect
Trace redirect chains and detect issues before they affect your users and SEO. Free instant tracing.
Try Redirect Tracer