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 the downstream effects of choosing wrong can haunt your SEO for months.
This guide covers exactly when to use each, what search engines actually do with them, and the mistakes that quietly drain your organic traffic.
The Core Difference
A 301 Moved Permanently tells browsers and search engines: "This resource has permanently moved to a new URL. Update your records."
A 302 Found (originally "Moved Temporarily") tells them: "This resource is temporarily at a different URL. Keep the original in your index."
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
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
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
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.
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. A 301 sends an immediate, unambiguous signal. A 302 forces Google to guess your intent.
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.
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)
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.
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 bulk checking across an entire site, use a redirect tracing tool that can follow chains and report the status code at each hop.
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).
Related Articles
Every redirect is a decision. Make sure yours says what you mean.
Never miss a broken redirect
Trace redirect chains and detect issues before they affect your users and SEO. Free instant tracing.