A 301 redirect is permanent and a 302 redirect is temporary, and for SEO the difference is about which URL Google shows, not about lost “link juice.” Google treats a 301 as a strong signal that the new URL should be canonical and indexed. A 302 is a weak signal, so Google tends to keep showing the old URL. Both pass PageRank.
So my rule is short. If the old URL is never coming back, use a 301 (or 308). If it is coming back, use a 302 (or 307). The rest of this post covers the details that actually go wrong: chains, homepage redirects, migrations and checking what your server really sends.
The Mistake Most People Make With 301 vs 302 Redirects
Most advice on this topic still argues about how much PageRank each redirect “loses.” That debate ended years ago. Choosing a redirect by imagined equity loss leads people to 301 things that should be temporary, and then wonder why a seasonal page never comes back in search.
The real decider is intent. Do you want Google to swap the old URL for the new one in its index, or keep the old one? Answer that and the code picks itself.
What Does Google Actually Say About Redirects?
I always start from Google’s own documentation, because a lot of redirect folklore is recycled from 2012. Google’s redirects and Google Search guide splits redirects into two groups:
- Permanent: Googlebot follows the redirect, “and the indexing pipeline uses the redirect as a signal that the redirect target should be canonical.” Google adds: “Use permanent redirects when you’re sure that the redirect won’t be reverted.”
- Temporary: Googlebot follows the redirect, “but the indexing pipeline doesn’t use the redirect as a signal that the redirect target should be canonical.”
Google’s HTTP status code documentation words it slightly differently. It calls a 301 a “strong signal” and a 302 a “weak signal” that the redirect target should be processed, and it lists 308 as “Equivalent to 301.” Here’s how every redirect type maps, per the same guide:
| Redirect type | How Google treats it | My take |
|---|---|---|
| 301 Moved Permanently | Permanent | Default for any permanent move |
| 308 Permanent Redirect | Permanent | Same as 301 for Google, keeps the request method |
| 302 Found | Temporary | Default for short-term moves |
| 303 See Other | Temporary | Mostly for after a form submit, rare in SEO |
| 307 Temporary Redirect | Temporary | Same as 302 for Google, keeps the request method |
| Meta refresh, 0 seconds | Permanent | Only if you can’t redirect on the server |
| Meta refresh, delayed | Temporary | Avoid, it confuses users too |
| JavaScript location | Permanent, if rendered | Last resort |
On JavaScript, Google is blunt: “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” Rendering can fail, and if it does, Google might never see the redirect at all.
Do 302 Redirects Pass PageRank?
Yes. In July 2016, Google’s Gary Illyes posted on Twitter that “30x redirects don’t lose PageRank anymore.” When asked about it, John Mueller said this wasn’t new and had been the case for a while.
What a 302 changes is canonicalization. In April 2021, Mueller explained on Twitter that “with redirects, we tend to put URLs into the same bucket, and then use canonicalization to pick which one to show.” A temporary redirect suggests the source URL might be preferred; a permanent one suggests the destination.
He also explained why a long-running 302 often ends up treated like a 301: if all internal and external links point to the destination, Google will probably pick the destination too. I read that as a warning, not permission. Relying on Google to guess your intent is slower and less predictable than saying it clearly.
The 4 Conditions That Decide Which Redirect You Need
- Is the move reversible? If there’s any real plan to bring the old URL back, it’s temporary.
- Which URL should appear in search? New URL means permanent. Old URL means temporary.
- How long will it last? A two-week promo is temporary. A rebrand is not.
- Does the request method matter? For forms and APIs that send POST requests, use 307 or 308 so the method isn’t changed.
When to Use a 301 Redirect
Best for: anyone permanently changing a URL. That covers domain changes, http to https, www to non-www, slug changes, merged articles and deleted products with a true replacement.
Strengths: Google swaps the new URL into its index, signals consolidate on one page, and every browser and crawler understands it. Browsers also cache 301s, which saves a round trip for returning visitors.
Weaknesses: that caching cuts both ways. If you 301 by mistake, some visitors keep getting redirected from their browser cache even after you remove the rule, so test before you ship.
When to Use a 302 Redirect
Best for: short-term situations where the original URL will return. Think a product page redirected to a notice during a recall, a seasonal landing page, geo or language routing to a selector page, or maintenance.
Strengths: Google keeps the original URL in results, so nothing needs to “come back” when you remove the redirect.
Weaknesses: the classic mistake is a 302 left in place for a permanent move, often because a plugin or CMS defaults to 302. The new URL then competes with a source Google still half-prefers.
What About 307 and 308 Redirects?
For Google Search, a 307 behaves like a 302 and a 308 behaves like a 301. The difference is for browsers and apps. With a 301 or 302, clients have historically been allowed to turn a POST request into a GET. A 307 or 308 keeps the method and body unchanged, which matters for forms and APIs, not for normal page moves.
One thing confuses people in Chrome DevTools. You may see a “307 Internal Redirect” from http to https that your server never sent. That’s the browser applying HSTS on its own side, not a temporary redirect Google sees.
301 vs 302: The Decision Table
| Situation | Use | Why |
|---|---|---|
| Moving to a new domain | 301 or 308 | You want the new URLs indexed |
| Switching http to https | 301 or 308 | Permanent, sitewide |
| Changing a post’s slug | 301 | The old slug is never coming back |
| Merging two articles | 301 to the one you keep | Consolidates signals |
| Product discontinued, close replacement exists | 301 to the replacement | Closest match for users |
| Product discontinued, nothing similar | Return 404 or 410 | A redirect to a weak match looks like a soft 404 |
| Seasonal or promo page | 302 | The original returns |
| Page down for maintenance | 503 status, not a redirect | Tells Google to come back later |
| A/B testing on separate URLs | 302 | Google’s testing guidance calls for temporary redirects |
| Form or API endpoint moved | 307 or 308 | Keeps the POST method |
My Verdict
A 301 is right for almost every SEO redirect, because almost every URL change is permanent. However, if the old URL will return and you want it to keep ranking, a 302 is the correct choice.
In my audits, the wrong-code problem runs one way far more than the other: 302s used for permanent moves, usually by a CMS default nobody checked. I’ve rarely found a 301 that should have been a 302. When in doubt about a permanent move, send a 301.
When the Answer Flips
- If you’re testing a new page design on a separate URL, use a 302, not a 301, so Google keeps the original.
- If the page is only down briefly, don’t redirect at all. Serve a 503 and let Google retry.
- If there’s no relevant target, don’t use either code. A redirect to an unrelated page does more harm than a clean 404.
Redirect Chains and the Homepage Trap
A chain is when URL A redirects to B, which redirects to C. Google’s HTTP documentation says its crawlers follow up to 10 redirect hops. Its site move guide is stricter: redirect to the final destination directly, and if that’s not possible, keep chains “ideally no more than 3 and fewer than 5,” because they add latency and not all browsers support long chains.
When I audit a site that has been through two or three redesigns, chains are almost guaranteed, because each rebuild adds a new layer of rules on top of the old ones. The fix is boring and effective. Update old rules so every source points straight at the final URL, and update internal links so they don’t hit a redirect at all.
The homepage trap is the other one I see weekly. Sending every deleted page to the homepage feels safe, but John Mueller has said for years that Google tends to treat mass homepage redirects as soft 404s. The redirect is effectively ignored. I cover that fix in my soft 404 guide, and chains show up alongside other crawl problems in my list of common technical SEO issues.
How Long Should Redirects Stay After a Site Migration?
Google’s site move guide says: “Keep the redirects for as long as possible, generally at least 1 year.” That gives Google time to recrawl and reassign links from other sites to your new URLs. For users, Google suggests considering keeping them indefinitely.
My advice is simpler. In my experience, the teams that regret a migration are the ones who cleaned up redirects too early. Never remove migration redirects unless they’re causing a real problem. They cost almost nothing to keep, and old backlinks will keep sending visitors through them for years.
How to Set Up 301 and 302 Redirects
On Apache, add rules to .htaccess. One gotcha: RewriteRule patterns in .htaccess see the path without its leading slash, while RedirectMatch patterns see it with the slash. Copying Google’s server-config examples straight into .htaccess is a common reason rules silently never fire.
# Permanent redirect for one exact URL
RedirectMatch 301 ^/old-page/?$ https://example.com/new-page/
# Temporary redirect
RedirectMatch 302 ^/summer-sale/?$ https://example.com/holiday-sale/
# Move a whole folder, keeping the rest of each path
RewriteEngine On
RewriteRule ^old-folder/(.*)$ https://example.com/new-folder/$1 [R=301,L]
I use RedirectMatch for single URLs because the plain Redirect directive matches prefixes, so /old-page would also redirect /old-page-2. For http to https and www to non-www, I prefer a rule at the host or server level, so every URL moves in a single hop. I’d also avoid mixing many Redirect and RewriteRule lines in one file, since they’re handled by different Apache modules and the order can surprise you.
On Nginx, use return inside the relevant server block:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
# Inside your https server block
location = /old-page/ {
return 301 https://example.com/new-page/;
}
location = /summer-sale/ {
return 302 https://example.com/holiday-sale/;
}
# Pattern-based: "permanent" sends 301, "redirect" sends 302
rewrite ^/blog/([a-z0-9-]+)/?$ /articles/$1/ permanent;
On WordPress, a redirect plugin such as Redirection, or the redirect manager built into some SEO plugins, does the same job without touching server files. Whatever you use, check which status code it defaults to. That’s where the stray 302s come from.
How Do You Check a Redirect’s Status Code?
Use curl from any terminal. The -I flag fetches headers only:
curl -I https://example.com/old-page/
A correct permanent redirect returns something like this:
HTTP/2 301
location: https://example.com/new-page/
To trace a full chain and see every hop, add -L and filter the output:
curl -sIL https://example.com/old-page/ | grep -iE "^(HTTP|location)"
A few servers answer HEAD requests differently from normal GET requests. If the results look odd, this version sends a real GET and prints the final code, hop count and destination:
curl -sL -o /dev/null -w "%{http_code} %{num_redirects} %{url_effective}\n" https://example.com/old-page/
For single URLs, Search Console’s URL Inspection tool also reports “Page with redirect” when Google has seen one.
Need a Second Pair of Eyes on a Migration?
Redirect maps for large migrations are where small mistakes get expensive: a missing wildcard, a loop between two rules, a CDN rule overriding the server. My team handles redirect planning and checks as part of our technical SEO service. You can also request a free audit if you want your current redirects checked first.
Frequently Asked Questions
Is a 302 Redirect Bad for SEO?
No. A 302 is the right code for a temporary move, and it passes PageRank like a 301. It only becomes a problem when it’s used for a permanent move, because Google may keep showing the old URL instead of the new one.
Should I Use a 301 or 308 Redirect?
Either works for Google Search, which treats a 308 as equivalent to a 301. I default to 301 because every tool and plugin supports it. Use 308 for endpoints that receive POST requests, since it keeps the request method.
Can I Change a 302 to a 301 Later?
Yes, and you should if the move turned out to be permanent. Change the rule on the server, clear any caches, and confirm with curl. Google picks up the new signal as it recrawls the URL.
How Many Redirects in a Row Are Too Many?
Google’s crawlers follow up to 10 hops, but Google’s site move guide recommends ideally no more than 3 and fewer than 5. I aim for one hop from any old URL to its final destination.
Last updated: September 2026 by Mizanur Rahman



