Aug 10, 2026
301, 302, 307 and 308: Which Redirect, and When
Four redirect codes get used interchangeably and they are not interchangeable. Picking the wrong one can permanently cache a destination in browsers you'll never reach, or silently convert a form submission into a broken request.
The two axes
Redirects vary on two independent things: permanent or temporary, and does the method survive.
- 301 — permanent, method may change
- 302 — temporary, method may change
- 307 — temporary, method preserved
- 308 — permanent, method preserved
"Method preserved" means a POST stays a POST. With 301 and 302, browsers have historically converted POST to GET, which is why 307 and 308 exist.
Permanent means permanent
This is the one that bites people. A 301 tells the browser this will never change — and browsers cache it aggressively, often indefinitely, sometimes surviving a cache clear.
If you 301 a short link and later want to repoint it, everyone who clicked it before may keep landing on the old destination forever. You cannot fix that from the server. You have shipped a decision you can't undo.
For a link shortener this is disqualifying, which is why LinkForge's redirect engine returns 302. The destination stays editable for the life of the link — that's the whole feature.
When each is right
301 — permanent structural change. You moved a page on your own site and the old URL will never be used again. It passes ranking signal to the new URL, which is the point. Use it for site restructures, never for campaign links.
302 — anything you might change. Short links, campaigns, A/B tests, seasonal offers, temporary maintenance pages. The default for a shortener.
307 — temporary, but a POST must survive. API endpoints, form handlers, anything where converting POST to GET would break the request.
308 — permanent, and a POST must survive. Rare. Mostly moved API endpoints. This is what LinkForge's middleware uses to send content paths from the short domain to the app domain: permanent, and it won't mangle a request method.
The SEO angle, briefly
A 301 passes ranking signal to the destination. A 302 is treated as temporary and generally doesn't consolidate signal the same way.
This leads people to reach for 301 everywhere, which is a mistake for links. Short links are for sharing and measurement, not for SEO. You don't want ranking signal flowing through a campaign link, and you very much want the ability to repoint it. Use 301 for permanent moves on your own site; use 302 for links you share.
Chains, and why they cost you
Each hop adds latency and another chance to fail. Redirect chains also get treated as suspicious by link scanners, since the pattern is common in phishing.
Wrap the final destination, not another redirect. If you're already using an affiliate cloak or a platform wrapper, be aware you may be at three hops before you add yours.
How to check what you're actually serving
Look at the response headers rather than trusting a setting:
curl -sI https://yourlink.example/abc
The status line tells you the code and the location header tells you the destination. Worth doing once on any link you're about to print, because the cost of discovering a 301 after distribution is that you can never change it.
The short version
Use 302 for anything you share. Use 301 only for permanent moves on your own site. Use 307 or 308 when a request method has to survive. And be very careful with permanent redirects on anything you might want to edit — permanent means it, and the browser will hold you to it.
Create a link you can repoint later — 302 by default, destination editable for the life of the link.