A redirect tells a client that the resource it asked for lives at a different URL. The status code says whether that move is permanent or temporary, and that distinction has real consequences for search ranking and caching.
301 — moved permanently
A 301 says the resource has permanently moved. Search engines transfer the old URL’s ranking signals to the new one, and browsers cache the redirect aggressively — sometimes indefinitely. Use it for permanent moves: HTTP to HTTPS, a domain change, or a retired URL replaced by a new one.
302 and 307 — found / temporary
A 302 (and its stricter sibling 307) says the move is temporary. The original URL keeps its ranking, and clients keep asking for the original. Use it for genuinely temporary situations — a maintenance page, an A/B test, or a geo-based landing page.
308 — permanent, method preserved
A 308 is like a 301 but guarantees the HTTP method (for example POST) is preserved on the redirected request. It is the modern permanent redirect for non-GET requests.
The common mistake
Using a 302 for a permanent move means search engines keep the old URL indexed and never pass ranking to the new one. If a move is permanent, use 301 or 308. This tool labels every hop so you can confirm the intent at a glance.