301 vs 302 Redirects: SEO Impact Explained Simply
301 vs 302 redirect: plain-English guide to permanent vs temporary redirects, real SEO impact, when to use each, and how to implement them on any server.
A 301 is permanent. A 302 is temporary. That's the version you'll see repeated on every SEO blog, and it's correct but useless on its own. The interesting question is what "permanent" and "temporary" actually mean to Google, to a browser, to a server, and to your site's rankings six months after you flip the switch.
Pick the wrong one and you get one of two failure modes: a temporary redirect that quietly tells Google to keep the old URL indexed forever, or a permanent redirect that gets cached so aggressively you can't undo it without users hitting dead pages for weeks. Neither is fatal, but both waste time and rankings.
This guide breaks down what each code does, how Google really treats them in 2026 (spoiler: not how most SEO articles claim), when to use each in practical scenarios, and how to implement them on Apache, Nginx, WordPress, Cloudflare, and at the URL-shortener layer. We'll cover 307 and 308 too, since those come up more often than they used to.
A 301 redirect is permanent and tells search engines to replace the old URL with the new one in their index, passing link equity to the destination. A 302 redirect is temporary and tells search engines to keep the original URL indexed because the move isn't final. Google treats long-running 302s the same as 301s after a while, but you should still pick the code that matches your actual intent.
Table of Contents
- 301 vs 302: The 60-Second Answer
- What Is a 301 Redirect?
- What Is a 302 Redirect?
- 301 vs 302: Side-by-Side Comparison
- The Real SEO Impact of Each
- When to Use a 301 Redirect
- When to Use a 302 Redirect
- How to Implement 301 and 302 Redirects
- What About 307 and 308?
- 301 vs 302 in URL Shorteners
- Common Mistakes to Avoid
- How to Check Which Redirect a URL Uses
- Frequently Asked Questions
301 vs 302: The 60-Second Answer
A 301 redirect says "this page has moved for good, update your records." A 302 redirect says "this page is temporarily somewhere else, but the original is coming back." Both bounce the visitor to a new URL with no visible difference at the browser level. The difference lives in the HTTP response code, and that single number changes how browsers cache the redirect and how search engines decide which URL to keep in their index.
If your move is permanent, use 301. If the original URL will be back, use 302. That's the rule. Everything else is footnotes.
The footnotes do matter though, because the failure modes are sneaky: 301s get cached so persistently that "undoing" them is harder than you'd expect, and 302s used by mistake on permanent moves can leave the old URL indexed for months while Google figures out which one to trust. Pick the right code the first time and you avoid both.
What Is a 301 Redirect?
A 301 redirect is an HTTP response status code that tells browsers and search engines that a resource has been permanently moved to a new URL. The server responds with a 301 Moved Permanently header and includes the new location, prompting the client to fetch the destination URL instead. Search engines treat this as a signal to replace the old URL with the new one in their index, passing along the original URL's ranking signals.
In plain English: the page lives at a new address now. Forever. Stop asking about the old one.
A 301 has a few behaviors worth knowing. Browsers cache it aggressively, often without an explicit expiration, which means once a user's browser sees a 301 it may never request the original URL again. Search engines consolidate ranking signals on the destination, treating the new URL as the canonical version of the content. Internal links to the old URL still work, but they trigger a redirect hop, which is fine occasionally and bad at scale.
When you see a 301 in the wild, the most common cause is a site migration. You moved from example.com/old-blog/post to example.com/blog/post and set up a 301 so every old link still works. You moved from HTTP to HTTPS, from www to non-www, or from one domain to another, same idea each time.
What Is a 302 Redirect?
A 302 redirect is an HTTP response status code that signals a resource has been temporarily moved to a different URL. The server returns 302 Found (originally called "Moved Temporarily") along with the new location header. Browsers do not cache the redirect by default, and search engines preserve the original URL in their index because the move is expected to be reversed.
The whole point of a 302 is that the original URL is coming back. Maybe in a day, maybe in a month, but the move isn't final.
This is the right call for a handful of specific situations: a homepage promo that runs for two weeks, an A/B test where half the traffic goes to a variant, geo-routing where European visitors see a different page than American ones, or a maintenance page during a deploy. In each of those cases, you don't want Google to drop the original URL from its index, because the original URL is still the canonical one.
Here's where most SEO blogs go wrong. They claim 302s "lose link equity" or "don't pass PageRank." That hasn't been true for a long time. Google's Gary Illyes confirmed publicly that 30x redirects don't lose PageRank, and John Mueller has reiterated multiple times that long-running 302s are treated identically to 301s by Google's canonicalization system. The "302s are bad for SEO" claim is genuinely outdated. We covered this in more detail in our URL shorteners and SEO breakdown if you want the full citation trail.
That said, intent still matters. Use 302 when you mean temporary. Use 301 when you mean permanent. Misusing 302 doesn't tank your rankings, but it does confuse your own analytics and complicate eventual cleanup.
301 vs 302: Side-by-Side Comparison
| Feature | 301 (Permanent) | 302 (Temporary) |
|---|---|---|
| HTTP message | Moved Permanently | Found / Moved Temporarily |
| Intended meaning | Old URL is gone, use new URL | Old URL is coming back |
| Browser caching | Aggressive (often indefinite) | None, or very short |
| Search index | Replaces old URL with new | Keeps old URL indexed |
| PageRank flow | Passes to destination | Passes to destination |
| Easy to reverse? | No - browsers cache it | Yes - no caching |
| Best for | Site migrations, HTTPS, domain moves | A/B tests, promos, maintenance |
| Request method preserved? | Often converted to GET | Often converted to GET |
The two rows worth lingering on: browser caching and easy to reverse. The first is why a botched 301 is so painful to undo, since each user's browser locally remembers the redirect even after you've removed it on the server. The second is the operational reason you'd ever pick 302 in cases where SEO impact is identical.
The Real SEO Impact of Each
Here's the part SEO articles oversell. In 2026, Google's stated position is that both 301 and 302 redirects pass essentially full PageRank to the destination. Backlinks pointing at the old URL flow link equity to the new one regardless of which redirect code you use. There is no 15% PageRank loss, no penalty, no link-juice tax. Those numbers got passed around for years and were never accurate to begin with.
What does affect SEO is canonicalization and indexing behavior, which are different from PageRank. (Gary Illyes' original confirmation that 30x redirects don't lose PageRank was covered widely back in 2016 and has been restated multiple times since.) A 301 tells Google "treat the new URL as the canonical, drop the old one." A 302 tells Google "keep the old one indexed, the new one is just a visitor for now." If you used 302 when you meant 301, Google may keep showing the old URL in search results for weeks or months while it figures out the move is actually permanent. You won't lose ranking, but you'll see the wrong URL in the SERP for a while.
The bigger SEO risk isn't the choice between 301 and 302. It's redirect chains. Two or three hops in a row (e.g. old-domain.com → www.new-domain.com → https://www.new-domain.com → https://www.new-domain.com/new-path) slow down Googlebot, increase the chance of timeouts, and look messy. Use a single hop wherever possible. Point each old URL directly at its final destination.
Honestly? Most people pick the wrong code, then later worry about whether they bled some imaginary percentage of link juice. That worry is misplaced. Pick the code that matches reality, avoid chains, and you've solved 95% of redirect SEO.
For a deeper dive on the broader topic, our URL shorteners and SEO truth piece walks through what actually does and doesn't matter for redirected traffic. It quotes the relevant Google engineers directly.
When to Use a 301 Redirect
Use a 301 anytime the old URL is dead to you. Common cases:
- Site migrations. You rebuilt the blog at
/blog/instead of/news/. Every old article needs a 301 to its new path. Skip this and your backlinks die in a 404. - HTTP to HTTPS. The classic. After enabling SSL, redirect every
http://URL to itshttps://counterpart with a 301. - Non-www to www (or vice versa). Pick one canonical version of your domain and 301 the other.
- Domain changes. You bought
betterdomain.comand moved offoldname.com. 301 the entire old domain to the new one, mapping paths where possible. - Consolidating duplicate pages. Two URLs serving the same content? Pick one, 301 the other. This is the simplest fix for accidental duplicate content.
- Removing or merging content. A blog post got absorbed into a bigger guide. 301 the old post to the new guide so the inbound links keep working.
- Vanity URLs and branded short links. A printed
yourbrand.co/launchURL that will always go to the launch landing page. 301 is the right default.
The cleanest signal a 301 is right: if a user typed the old URL six months from now, would you ever want them to see the original page? If no, it's a 301.
When to Use a 302 Redirect
Reserve 302 for redirects that are genuinely temporary. The list is shorter than people think:
- A/B tests on a stable URL. You want
/pricingto remain the canonical URL but split traffic between variants for two weeks. 302 to each variant. - Seasonal or campaign promos.
/black-fridayredirects to/black-friday-2026/landing-pagefor one month, then goes back to a regular page. - Geo or device routing.
/downloadsends iOS users to the App Store and Android users to Google Play. The canonical URL is/download; the destinations are situational. - Maintenance pages during a deploy. While you're upgrading, send everyone to a maintenance page. Don't 301, because the original URL is coming back in 20 minutes.
- Login walls. Asking a logged-out user to authenticate before reaching a page is a textbook 302 - the destination they typed is still real, it's just gated for now.
- Inventory states. An out-of-stock product temporarily redirected to a parent category, planned to come back once restocked.
If the destination's role might change next month, 302 is safer. You can flip the destination without fighting browser caches.
How to Implement 301 and 302 Redirects
The right way depends on where your redirect logic lives. Here are the most common setups.
Apache (.htaccess)
The classic Apache shortcut uses the Redirect directive. The first number is the status code.
# 301 permanent redirect
Redirect 301 /old-page.html https://example.com/new-page.html
# 302 temporary redirect
Redirect 302 /promo https://example.com/black-friday-landing
# Whole-folder permanent redirect with mod_rewrite
RewriteEngine On
RewriteRule ^old-blog/(.*)$ /blog/$1 [R=301,L]
The R=301 flag inside a RewriteRule is how you set the status code when using mod_rewrite. Without it, mod_rewrite defaults to 302.
Nginx
Nginx redirects live in server blocks using return.
# 301 permanent redirect
location /old-page {
return 301 https://example.com/new-page;
}
# 302 temporary redirect
location /maintenance {
return 302 https://example.com/we-will-be-right-back;
}
# Rewrite with explicit code
rewrite ^/old-blog/(.*)$ /blog/$1 permanent; # 301
rewrite ^/promo$ /campaigns/spring redirect; # 302
The shortcuts permanent and redirect map to 301 and 302 respectively, which is one of the small Nginx readability wins over Apache.
WordPress
WordPress doesn't ship with a redirect manager, so you pick one of three paths:
- A plugin like Redirection or Rank Math. Easiest. Set the source URL, destination URL, and pick 301 or 302 from a dropdown.
- Edit
.htaccessdirectly if you're on Apache hosting. Same syntax as above. Be careful, broken.htaccessrules can take the whole site down. - Code it in PHP for one-offs.
add_action('template_redirect', function () {
if (is_singular() && get_the_ID() === 123) {
wp_redirect('https://example.com/new-page', 301);
exit;
}
});
Most WordPress sites do fine with a plugin. Reserve direct code for cases where you need conditional logic the plugin can't express.
Cloudflare and other edge platforms
Cloudflare Rules, Vercel vercel.json, Netlify _redirects, and similar edge tools all expose 301 vs 302 explicitly. The benefit of edge-level redirects is speed: the redirect resolves at the nearest edge node without ever touching your origin server. For high-traffic redirects this matters.
# Vercel example
[[redirects]]
source = "/old-blog/:slug"
destination = "/blog/:slug"
permanent = true # 301; set false for 302
Node.js / Express
app.get('/old-page', (req, res) => {
res.redirect(301, 'https://example.com/new-page');
});
app.get('/promo', (req, res) => {
res.redirect(302, 'https://example.com/spring-sale');
});
The pattern repeats across frameworks: explicitly pass the status code, don't rely on framework defaults.
What About 307 and 308?
These are the modern siblings of 302 and 301 respectively, and they're worth understanding even if you rarely set them yourself.
A 307 Temporary Redirect is functionally a strict 302. The difference: 307 guarantees the request method (GET, POST, etc.) is preserved when the client follows the redirect. With 302, some older clients converted POST requests to GET, which can break form submissions. 307 forbids that conversion.
A 308 Permanent Redirect is the strict version of 301 for the same reason. 308 enforces method preservation.
Google's Search Central documentation on redirects confirms that 301 and 308 are treated equivalently for SEO purposes, and the same applies to 302 and 307. From a ranking and indexing standpoint, you can use either pair. From a technical correctness standpoint, prefer 308/307 when method preservation matters (think APIs and form submissions). For typical browser navigation, 301 and 302 remain fine.
There's also 303 See Other, which is the right code for "after a POST, redirect the browser to a GET on this other URL." It's most common in form-submission flows where you don't want a browser refresh to re-submit the form. Rarely a concern for content URLs.
301 vs 302 in URL Shorteners
Shorteners are a special case because the "old URL" (the short link) was never meant to be canonical in the first place. The question becomes: do you want Google to treat the destination as the canonical (301), or do you want to retain the option to change the destination later without browser cache problems (302)?
Most general-purpose shorteners use 301 by default, since that's the fastest behavior on repeat clicks (the browser caches it) and provides the cleanest SEO signal. Some allow 302 as an upgrade for dynamic links where the destination needs to change occasionally.
At U2L AI, we use 301 (permanent) by default on the free plan, which makes free short links cache-friendly and SEO-clean for static use cases like vanity URLs and printed materials. On Pro and above, you can opt into 302 (temporary) for dynamic links where you want to change destinations without users hitting cached old destinations. Both flow through our global edge network with 330+ locations so the redirect happens close to wherever the click originated, which is one reason we're one of the fastest URL shorteners available. If you want the full feature breakdown, the features page covers what's available on each plan.
If you're using a shortener for a campaign you might tweak later (A/B tested landing pages, link routing by country, QR codes already printed at scale), 302 is the cleaner operational choice. For everything else, 301 wins. For the deeper context on why this barely affects rankings either way, our piece on how URL shorteners affect SEO walks through the actual mechanics and quotes Google's own engineers.
Common Mistakes to Avoid
A few patterns we see repeatedly:
- Defaulting to 302 by accident. Several frameworks, including older versions of mod_rewrite and stock Express, default to 302 if you don't specify a code. If you mean 301, type 301 explicitly. Don't trust defaults.
- Redirect chains.
/old→/middle→/finalinstead of/old→/finaldirectly. Update every link to point at the final destination. - Redirect loops. A redirects to B, B redirects back to A. Most servers detect and abort these, but they still burn user time and crawl budget before failing.
- Soft 404s. Redirecting every removed page to your homepage instead of letting the URL return a real 404. Google calls these "soft 404s" and they're worse for SEO than honest 404s.
- Forgetting query strings.
/?utm_source=emaildoesn't always get carried through a redirect unless you configure it. Test with parameters before announcing a campaign. - Skipping the HTTPS redirect on www and non-www both. You need 301s from
http://example.com,http://www.example.com, and ideallyhttps://www.example.com(or non-www, whichever isn't canonical) to one canonical version. - Using JavaScript or meta-refresh redirects for SEO-sensitive moves. These work for users but search engines treat them more cautiously. Stick to HTTP redirects.
Each one is easy to avoid once you're looking for it. The hardest part is auditing existing redirects to find what's already broken.
How to Check Which Redirect a URL Uses
Three quick methods to confirm what a URL is actually returning:
Browser DevTools. Open the Network tab, paste the URL, hit enter, and look at the status column. You'll see 301, 302, 307, or 308 on the first request, followed by 200 on the destination.
curl. From a terminal:
curl -I https://example.com/old-page
The HTTP/1.1 301 Moved Permanently line tells you the code, and the Location: header tells you the destination.
Online redirect checkers. Tools like httpstatus.io or redirect-checker.org show the full redirect chain in one click. Useful for spotting chains you didn't realize existed.
If you're auditing a site migration, run a crawler like Screaming Frog or Sitebulb over the old URL list. Any URL returning the wrong code, or chaining through multiple hops, will show up immediately.
Frequently Asked Questions
What is the main difference between 301 and 302 redirects?
A 301 redirect tells search engines and browsers the move is permanent, prompting them to replace the old URL with the new one. A 302 redirect tells them the move is temporary, so the old URL should remain indexed. Behavior at the browser is the same; the difference is in caching and how search engines update their index.
Is a 302 redirect bad for SEO?
No. Google's engineers have publicly confirmed that 302 redirects pass full PageRank to the destination, and long-running 302s are treated the same as 301s by Google's canonicalization system. The "302 hurts SEO" claim is outdated folklore from before 2016.
Can I change a 301 redirect later?
You can change it server-side at any time, but browsers and search engines may have cached the original 301 indefinitely. Returning the old URL to a new behavior can take weeks or months to fully propagate. This is why 301 should only be used when you're truly committed to the move.
When should I use a 302 instead of a 301?
Use 302 when the destination is temporary: A/B tests, seasonal promos, maintenance pages, geo or device routing, login walls, or inventory-state redirects. The original URL is the canonical version and will return soon.
Do 301 redirects pass PageRank?
Yes, essentially all of it. Google's Gary Illyes confirmed in 2016 that 30x redirects don't lose PageRank, and that position has held since. The old "15% PageRank loss" claim was never an official Google number.
What's the difference between 301 and 308?
Both are permanent redirects. The difference: 308 strictly preserves the HTTP request method (GET stays GET, POST stays POST), while 301 historically allowed clients to switch POST to GET. For ranking and indexing, Google treats them equivalently. Use 308 when method preservation matters, such as API redirects.
Will using the wrong redirect type tank my rankings?
No. Using 302 when you meant 301 (or vice versa) won't cost you ranking signals directly. The actual cost is that Google may keep the wrong URL indexed for longer than you'd like, leading to confusing analytics and a delay in cleanup. Pick the correct code for accuracy, not for fear of penalty.
How do redirect chains affect SEO?
Each extra hop in a chain adds latency, increases the chance of timeouts, and uses crawl budget inefficiently. Googlebot will follow up to about five hops, but the longer the chain the higher the risk something breaks. Always point each old URL directly at its final destination.
Pick the Right Code, Move On
The 301 vs 302 question gets way more airtime than it deserves. Once you know the basics - permanent vs temporary, how each affects caching and indexing, and the fact that Google passes PageRank through both - the right choice for any given redirect is usually obvious. Use 301 by default. Use 302 when you genuinely mean temporary. Avoid chains. Don't trust framework defaults. That's it.
If you're using a URL shortener for campaign links, QR codes, or branded short URLs, the redirect type matters less than picking a shortener that handles the rest correctly: HTTPS, edge speed, safety checks, no chains. Create a free U2L AI account and your short links default to 301, run on a global edge network, and ship with the operational details handled out of the box. For a deeper read on related topics, our complete guide to link tracking covers how redirects intersect with analytics, and our walkthrough on shortening URLs gets you from zero to your first branded short link in under a minute.