The 3xx class indicates the client must take additional action to complete the request.

Table of 3xx Codes

CodeNameSummary
300Multiple ChoicesSeveral representations available.
301Moved PermanentlyPermanent redirect.
302FoundTemporary redirect (legacy semantics).
303See OtherRedirect to a different URI; use GET.
304Not ModifiedCached representation is still valid.
305Use ProxyDeprecated.
306(Unused)Reserved.
307Temporary RedirectTemporary; method preserved.
308Permanent RedirectPermanent; method preserved.

300 Multiple Choices

Rarely used on the public web; content negotiation is usually implicit.

301 Moved Permanently

Permanent relocation.
Caching: Heavily cached; clients may hardcode. Set long but deliberate TTLs.
SEO: Transfers ranking signals over time.

302 Found

Temporary redirect. Historical clients converted POST→GET; behavior varies. Prefer 307 for clear method preservation.

303 See Other

Used after non-GET actions to redirect to a resource via GET (e.g., POST/redirect/GET pattern).

304 Not Modified

Conditional request success. No body returned.
CDN: Saves bandwidth; origin must emit stable validators.

305 Use Proxy

Deprecated for security reasons.

306 Unused

Reserved; not used.

307 Temporary Redirect

Temporary and preserves method and body. Good for maintenance windows.

308 Permanent Redirect

Permanent and preserves method. Safer modern alternative to 301 for non-GET methods.

See also: dedicated redirects guide at /http/status-codes/redirects/.