301 vs 302 Redirects: Choosing the Right One

When you move a page or change a URL, you need to tell browsers and search engines where to find the new content. That's what HTTP redirects are for. But not all redirects are created equal — the two most common types, 301 and 302, send very different signals to the web.

What Is a 301 Redirect?

A 301 redirect means "Moved Permanently." It tells browsers and search engines that the original URL has been retired forever and the content now lives at a new address. Once a search engine processes a 301, it will update its index to replace the old URL with the new one.

  • Used for permanent URL changes (e.g., domain migrations)
  • Passes the majority of link equity (ranking power) to the new URL
  • Browsers cache the redirect, so repeat visitors go directly to the new URL
  • Search engines eventually de-index the old URL

What Is a 302 Redirect?

A 302 redirect means "Found" (or "Moved Temporarily"). It tells the browser to go to a different URL for now, but the original URL is still valid and may be used again in the future.

  • Used for short-term redirects (e.g., A/B testing, seasonal promotions)
  • Does not transfer link equity reliably in all search engines
  • Browsers do not cache the redirect — they always check the original URL first
  • Search engines typically keep the original URL in their index

Side-by-Side Comparison

Feature 301 Permanent 302 Temporary
HTTP Status Code 301 302
Meaning Moved Permanently Found / Moved Temporarily
SEO Link Equity Mostly passed Not reliably passed
Browser Caching Yes (cached) No (not cached)
Index Behavior Old URL replaced Old URL kept
Best Used For Permanent moves, migrations A/B tests, maintenance pages

Common Mistakes to Avoid

  1. Using 302 when you mean 301: Many developers default to 302 without realizing it. If your URL change is permanent, always use a 301.
  2. Forgetting to update internal links: Even with redirects in place, internal links pointing to old URLs create unnecessary redirect hops.
  3. Chaining redirects: Avoid sending a 301 to a URL that itself redirects — this creates a redirect chain that slows page load and dilutes SEO value.

How to Implement Them

In Apache (.htaccess):

Redirect 301 /old-page /new-page
Redirect 302 /temp-page /other-page

In Nginx:

return 301 https://example.com/new-page;
return 302 https://example.com/other-page;

The Bottom Line

When in doubt, ask yourself: "Is this URL change permanent?" If yes, use a 301. If you're unsure or the change is temporary, use a 302 — but revisit it and switch to a 301 once the decision is final. Getting this right from the start protects your SEO performance and ensures users always land where you intend.