Home / Blog / 301 vs 302 Redirects: Which One to Use and When It Matters

301 vs 302 Redirects: Which One to Use and When It Matters

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…

301 vs 302 Redirects: Which One to Use and When It Matters

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 typeHow Google treats itMy take
301 Moved PermanentlyPermanentDefault for any permanent move
308 Permanent RedirectPermanentSame as 301 for Google, keeps the request method
302 FoundTemporaryDefault for short-term moves
303 See OtherTemporaryMostly for after a form submit, rare in SEO
307 Temporary RedirectTemporarySame as 302 for Google, keeps the request method
Meta refresh, 0 secondsPermanentOnly if you can’t redirect on the server
Meta refresh, delayedTemporaryAvoid, it confuses users too
JavaScript locationPermanent, if renderedLast 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

  1. Is the move reversible? If there’s any real plan to bring the old URL back, it’s temporary.
  2. Which URL should appear in search? New URL means permanent. Old URL means temporary.
  3. How long will it last? A two-week promo is temporary. A rebrand is not.
  4. 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

SituationUseWhy
Moving to a new domain301 or 308You want the new URLs indexed
Switching http to https301 or 308Permanent, sitewide
Changing a post’s slug301The old slug is never coming back
Merging two articles301 to the one you keepConsolidates signals
Product discontinued, close replacement exists301 to the replacementClosest match for users
Product discontinued, nothing similarReturn 404 or 410A redirect to a weak match looks like a soft 404
Seasonal or promo page302The original returns
Page down for maintenance503 status, not a redirectTells Google to come back later
A/B testing on separate URLs302Google’s testing guidance calls for temporary redirects
Form or API endpoint moved307 or 308Keeps 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

Put this guide to work.

Want help applying it? Start with a free audit of your site. We’ll show you what to fix first.

Get a free SEO audit