# 301 vs 302 Redirects for SEO: Which One to Use and When

> 301 vs 302 redirects explained: how Google treats permanent and temporary redirects, when to use 301, 302, 307 or 308, and how to find and fix wrong redirects.

URL: https://seorecheck.com/blog/301-vs-302-redirects-seo · Published: 2026-10-27 · [Українська](https://seorecheck.com/ua/blog/301-vs-302-redirects-seo.md), [Español](https://seorecheck.com/es/blog/301-vs-302-redirects-seo.md)

The difference between a 301 and a 302 redirect is permanence. A **301** tells search engines a URL has moved for good, so Google treats the new URL as the one to index. A **302** says the move is temporary, so Google keeps the old URL in its index. In the 301 vs 302 redirect choice, use a 301 for any change you won't undo.

Picking the wrong one is one of the most common technical SEO mistakes we see. It rarely breaks a site overnight. Instead, the wrong URL stays in search results for months, and nobody can work out why the new page never takes over.

## What is the difference between a 301 and a 302 redirect?

Both codes send visitors and crawlers from one URL to another, and in a browser they look exactly the same. The difference is what they tell search engines about which URL should be indexed.

Google's [redirects documentation](https://developers.google.com/search/docs/crawling-indexing/301-redirects) says that with a permanent redirect, "the indexing pipeline uses the redirect as a signal that the redirect target should be canonical." With a temporary redirect, Googlebot still follows it, but "the indexing pipeline doesn't use the redirect as a signal that the redirect target should be canonical."

In other words:

- **301 Moved Permanently**: "The old URL is gone. Index the new one."
- **302 Found**: "Send people over there for now, but keep the old URL. It's coming back."

Google's [HTTP status code reference](https://developers.google.com/search/docs/crawling-indexing/http-network-errors) puts it even more simply: a 301 is a "strong" signal that the redirect target should be processed, and a 302 is a "weak" signal.

## How does Google treat 301, 302, 307 and 308?

There are four redirect status codes you're likely to meet, plus 303. Google groups them into two families. The permanent ones (301, 308) are strong canonical signals, and the temporary ones (302, 303, 307) are weak ones.

| Status code | Meaning | Google treats it as | Typical use |
|---|---|---|---|
| 301 Moved Permanently | Permanent move | Strong signal: target becomes canonical | Changed URLs, HTTP→HTTPS, domain moves, merged pages |
| 308 Permanent Redirect | Permanent move, method kept | Same as 301 | Permanent moves where POST requests must stay POST |
| 302 Found | Temporary move | Weak signal: source usually stays canonical | Short promotions, A/B tests, temporary maintenance pages |
| 307 Temporary Redirect | Temporary move, method kept | Same as 302 | Temporary moves for forms and APIs |
| 303 See Other | Go to a different resource (as GET) | Same as 302 | After a form submission ("thank you" page) |

Google states directly that [307 is handled like 302 and 308 like 301](https://developers.google.com/search/docs/crawling-indexing/http-network-errors). For SEO, 301 and 308 are interchangeable, and so are 302 and 307.

### What's the difference between 307 and 308?

The difference only matters for non-GET requests, such as a form POST. According to [MDN's 308 reference](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/308), with a 308 "the request method and the body will not be modified", while older clients sometimes wrongly turn a redirected POST into a GET after a 301. For ordinary pages that people and crawlers load with GET, that never comes up. Choose based on permanence, not on the number.

## Does a 302 redirect hurt SEO?

A 302 doesn't hurt SEO when the move really is temporary. That's exactly what it's for. The damage comes from using a 302 for a permanent change. Google then has no strong signal to switch to the new URL, so the old address may stay indexed and the new one may struggle to take its place.

The typical symptoms:

- Search results keep showing the old URL (or the old domain) weeks after a move.
- In Search Console, the URL Inspection tool reports the old URL as the Google-selected canonical.
- The new URL shows up as a duplicate, or as "Page with redirect" coverage that never resolves the way you expected.
- Reports split traffic and links between two addresses for the same content.

Because a 302 is a weak signal rather than an instruction, Google can still end up picking the target as canonical if other signals point there, such as internal links, a [canonical tag](https://seorecheck.com/blog/canonical-tag-guide) or the sitemap. But you're leaving the outcome to chance. Google's [canonicalization guide](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) says signals "can stack and thus become more effective when combined". A permanent redirect that agrees with your canonicals and sitemap is the reliable way to do it.

## When should you use a 301 redirect?

Use a 301 (or 308) whenever the old URL won't come back. Google's advice is to "use permanent redirects when you're sure that the redirect won't be reverted" ([source](https://developers.google.com/search/docs/crawling-indexing/301-redirects)). That covers most of the redirects a business website ever needs.

Common cases:

1. **Changing a page's URL**: for example, `/services/web-design-london` becomes `/web-design/london`.
2. **HTTP to HTTPS**, and choosing between `www` and non-`www`.
3. **Domain moves and rebrands**: `oldbrand.com/*` → `newbrand.com/*`, page to page.
4. **Merging content**: two thin articles combined into one stronger guide.
5. **Removing a product or service for good** when a close replacement exists. If no relevant page exists, a 404 or 410 is more honest than redirecting everything to the homepage.
6. **Trailing slashes and URL case**: `/Pricing` → `/pricing`.

For site moves, Google's [site move guide](https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes) recommends server-side permanent redirects "such as 301 and 308". It also says to keep them "for as long as possible, generally at least 1 year" so that signals can move to the new URLs.

## When should you use a 302 redirect?

Use a 302 (or 307) only when you plan to bring the original URL back and want it to stay in search results meanwhile. If you can't name the date or event that will undo the redirect, it probably isn't temporary.

Good uses of a temporary redirect:

- **A seasonal or short campaign**: `/offers` points to `/black-friday` for two weeks, then goes back.
- **Short maintenance**: a product page is unavailable for a few days and visitors are sent to a holding page.
- **A/B tests** that send part of the traffic to a variant URL.
- **Redirects based on login or session**, such as sending logged-out visitors from `/account` to `/login`.
- **Device or language suggestions** where the original URL stays the main version. For multilingual sites, set up [hreflang](https://seorecheck.com/blog/hreflang-guide) correctly rather than relying on automatic redirects alone.

A common trap: many CMS plugins, hosting panels and frameworks default to 302 when you add a redirect. A redirect created "temporarily" during a redesign often stays for years. If you're auditing an older site, assume some 302s exist that should have been 301s.

## Do 301 redirects pass link equity?

Google doesn't publish a percentage, and old claims that a 301 "loses 15% of PageRank" have no source in Google's documentation. What Google does document is that a permanent redirect is a strong signal that the target should become canonical. Keeping redirects for at least a year is meant to let Google move ranking signals to the new URLs, according to the [site move guide](https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes).

In practice, the bigger risks are not the redirect type but:

- **Redirecting to an irrelevant page.** Sending a deleted product to the homepage gives Google no equivalent content, so it may be treated as a [soft 404](https://seorecheck.com/blog/404-errors-seo-impact).
- **Removing redirects too early.** Old backlinks and bookmarks start hitting 404s.
- **Leaving internal links pointing to old URLs.** Every internal click and crawl takes an extra hop. Update links at the source; our [internal linking guide](https://seorecheck.com/blog/internal-linking-seo-guide) covers how to find them.

## Which redirect method should you use: server-side, meta refresh or JavaScript?

Use a server-side HTTP redirect whenever you can. Google says a server-side redirect "has the highest chance of being interpreted correctly" ([source](https://developers.google.com/search/docs/crawling-indexing/301-redirects)). An instant meta refresh is read as permanent, a delayed meta refresh as temporary, and JavaScript redirects are the last resort because they depend on rendering succeeding.

Examples of a permanent redirect at server level:

```apache
# Apache (.htaccess)
Redirect 301 /old-page /new-page
```

```nginx
# Nginx
location = /old-page {
    return 301 /new-page;
}
```

If you only control the HTML, an instant meta refresh (`<meta http-equiv="refresh" content="0; url=https://example.com/new-page">`) is the next best option.

## How many redirects in a chain are too many?

Point every redirect straight at the final URL. Google's crawlers follow up to 10 hops, according to its [status code documentation](https://developers.google.com/search/docs/crawling-indexing/http-network-errors). The site move guide, though, recommends redirecting "to the final destination directly" and keeping chains ideally to no more than 3 hops, and fewer than 5, because of the delay for users.

Chains usually build up over time: `http://` → `https://` → `www` → a new slug → a new folder. Each migration adds one more hop. Fix them by updating each old rule so it points directly to the current URL, and look for loops (A → B → A), which never resolve.

## How do you check whether a redirect is 301 or 302?

You can check any URL in seconds from the command line or with a crawler:

```bash
curl -sI https://example.com/old-page
# HTTP/2 301
# location: https://example.com/new-page
```

Add `-L` to follow the full chain and see every hop. For a whole site:

1. **Crawl the site** with an audit tool and filter responses by 3xx status. Export the source URL, status code, target and number of hops.
2. **Flag every 302/307** and ask: will this be undone? If not, change it to a 301.
3. **Flag chains and loops**, and redirects pointing to 404s or noindexed pages.
4. **Find internal links to redirected URLs** and update them to the final URL.
5. **Check your [XML sitemap](https://seorecheck.com/blog/xml-sitemap-seo-guide)**: it should list only final, 200-status URLs.
6. **Confirm in Search Console** with URL Inspection that Google has chosen the new URL as canonical. Our guide to [Search Console errors](https://seorecheck.com/blog/google-search-console-errors-explained) explains the "Page with redirect" status.

If you'd rather not run the crawl yourself, a [free SEORecheck audit](https://seorecheck.com/request) lists the redirects it finds on your pages, with status codes, chains and internal links pointing to redirected URLs. You can see what that looks like in the [sample report](https://seorecheck.com/sample).

Redirect rules often break during redesigns, CMS migrations and plugin updates, so add redirect checks to your [SEO regression testing](https://seorecheck.com/blog/seo-regression-testing-website-updates) routine after every release.

## Common 301 vs 302 mistakes (and fixes)

| Mistake | What happens | Fix |
|---|---|---|
| 302 used for a permanent URL change | Old URL stays indexed; new URL doesn't take over | Change it to 301/308 |
| Everything redirected to the homepage | Treated as soft 404s; relevance lost | Redirect to the closest equivalent page, or return 404/410 |
| Redirect chains after several migrations | Slower for users, more crawl hops | Point every old URL straight to the final URL |
| Redirects removed after a few months | Backlinks and bookmarks hit 404s | Keep them for at least a year, ideally indefinitely |
| Canonical tag points to the redirecting URL | Mixed signals | Canonicalize to the final URL |
| Sitemap lists redirected URLs | Wasted crawls, weaker signals | List only final 200 URLs |
| JavaScript-only redirect | May not be seen if rendering fails | Move the redirect to the server |

## Key takeaways

- **301/308 = permanent**: a strong signal that the new URL should be indexed. **302/307 = temporary**: Google generally keeps the old URL.
- For SEO, 301 and 308 behave the same, and so do 302 and 307. The method-preserving codes only matter for non-GET requests.
- Use a 302 only when you know when the original URL will come back.
- Prefer server-side redirects, point them straight to the final URL, and keep them for at least a year.
- Make redirects, canonical tags, internal links and the sitemap all point to the same final URL.
- Recheck redirects after every migration or redesign. Wrong defaults and chains build up quietly.

---

## Want to know what to fix on your site?

Get a free SEO audit preview: your score and real issues, with evidence from your pages.

- [Get a free SEO audit preview](https://seorecheck.com/request)
- [See a sample report](https://seorecheck.com/sample)
