The short version
- 301 = permanent. Use it whenever the move is not coming back. This is almost always the right choice.
- 302 = temporary. Use it only when the original URL will genuinely return.
- The expensive mistakes are not 301-vs-302 — they are redirect chains, redirecting everything to the homepage, and forgetting redirects entirely.
- Redirect to the closest equivalent page. A redirect to an irrelevant page is treated much like a 404.
This question gets more attention than it deserves, because the answer is nearly always 301 and the genuinely damaging redirect mistakes are elsewhere. Still, the distinction is real and worth getting right.
The distinction
Note the browser caching row, which causes real operational pain. A 301 is cached aggressively, so if you set one by mistake, visitors who already hit it may keep being redirected even after you remove it. Test redirects in a private window, and be cautious about setting a 301 you are not certain about.
The mistakes that actually cost traffic
- No redirect at all. Deleting or moving a page without one turns every link and ranking pointed at it into a 404. This is the most common and most expensive mistake.
- Redirecting everything to the homepage. A mass redirect of unrelated URLs to the root is treated much like a soft 404. Redirect to the closest equivalent page instead.
- Redirect chains. A → B → C → D wastes crawl and dilutes signals. Point A directly at D.
- Redirect loops. A → B → A. The page becomes unreachable for everyone.
- Forgetting internal links. After redirecting, update the internal links that pointed at the old URL. Redirects are a safety net, not a substitute.
Crawl your site with Screaming Frog after any restructure — it reports chains, loops and internal links still pointing at redirected URLs. That single crawl catches all five of the above.
Redirect types you will also meet
Three others come up often enough to be worth knowing. A 307 is the modern temporary redirect that preserves the request method; you will see it on HTTPS upgrades driven by HSTS rather than by your own configuration. A 308 is its permanent equivalent. And a meta refresh or JavaScript redirect is not an HTTP redirect at all — it works for users and is a weaker, slower signal for everything else.
Prefer server-level HTTP redirects wherever you can. They are faster, unambiguous, and they work for consumers that never execute JavaScript. Google’s guidance on consolidating duplicate URLs covers the related question of when a canonical is the better instrument than a redirect — broadly, redirect when the old URL should stop existing, canonicalise when both need to remain reachable.
One practical note on where redirects live. Rules in a web server configuration or edge layer are fast and centralised but invisible to anyone reading the application code. Rules in a WordPress plugin or application router are easier for non-developers to manage and easier to lose track of. Whichever you choose, keep them in one place — a site with redirects split across a CDN, a server config and a plugin is where chains and loops quietly accumulate.
Migrations are where this becomes catastrophic
The largest permanent traffic losses in SEO mostly come from botched redirect mapping during a migration or replatform. Map every old URL to its closest new equivalent before launch, test the map on staging, and crawl the old URL list immediately after going live. See when to hire — migrations are on that list for exactly this reason.