HTTP status codes

Every common HTTP status code with a plain-English meaning — grouped by class, plus the pairs developers mix up.

1xx — Informational

The request was received; processing continues.

CodeNameMeaning
100ContinueHeaders received — the client can send the request body.
101Switching ProtocolsServer is switching protocols as requested (e.g. to WebSocket).
103Early HintsPreload hints sent before the final response.

2xx — Success

The request succeeded.

CodeNameMeaning
200OKStandard success response.
201CreatedRequest succeeded and created a new resource.
202AcceptedAccepted for processing, not yet completed.
204No ContentSuccess with no response body.
206Partial ContentPartial response to a range request.

3xx — Redirection

Further action is needed to complete the request.

CodeNameMeaning
301Moved PermanentlyResource permanently moved; update links (passes SEO signal).
302FoundTemporary redirect; keep using the original URL.
303See OtherRedirect to fetch the resource with GET.
304Not ModifiedCached copy is still valid; no body sent.
307Temporary RedirectLike 302, but the HTTP method is preserved.
308Permanent RedirectLike 301, but the HTTP method is preserved.

4xx — Client Error

The request was wrong or not allowed.

CodeNameMeaning
400Bad RequestMalformed request the server can't understand.
401UnauthorizedAuthentication required or failed — you're not logged in.
403ForbiddenAuthenticated but not allowed — you can't access this.
404Not FoundNo resource exists at this URL.
405Method Not AllowedHTTP method not supported for this resource.
406Not AcceptableCan't produce a response matching the Accept headers.
409ConflictRequest conflicts with the current state (e.g. a duplicate).
410GoneResource was permanently removed.
413Payload Too LargeRequest body exceeds the server limit.
415Unsupported Media TypeBody format is not supported.
418I'm a teapotA joke code from an April Fools RFC — not a real error.
422Unprocessable EntityWell-formed but semantically invalid (validation failed).
429Too Many RequestsRate limited — slow down and retry later.

5xx — Server Error

The server failed to fulfil a valid request.

CodeNameMeaning
500Internal Server ErrorGeneric server-side failure.
501Not ImplementedServer doesn't support the functionality.
502Bad GatewayAn upstream server returned an invalid response.
503Service UnavailableServer is temporarily overloaded or down.
504Gateway TimeoutAn upstream server didn't respond in time.
505HTTP Version Not SupportedThe HTTP version is not supported.

Commonly confused

401 vs 403
401 means not authenticated ("who are you?"); 403 means authenticated but not permitted ("I know you, and you still can't").
301 vs 302
301 is permanent — browsers cache it and it transfers SEO signal. 302 is temporary — keep using the original URL.
307 vs 302
Both are temporary, but 307 guarantees the HTTP method (e.g. POST) is kept; 302 historically allowed it to change to GET.
502 vs 504
502 means the upstream gave a bad/invalid response; 504 means the upstream gave no response in time (a timeout).

Related dev tools: JWT decoder · JSON formatter · Base64 · Number base converter

Frequently asked questions

What are the 5 categories of HTTP status codes?

1xx informational, 2xx success, 3xx redirection, 4xx client error, and 5xx server error.

What is the difference between 401 and 403?

401 Unauthorized means you are not authenticated (not logged in). 403 Forbidden means you are authenticated but not permitted to access the resource.

What is a 429 error?

429 Too Many Requests means you have been rate limited. Slow your request rate and retry after the time in the Retry-After header if present.

Is HTTP 418 a real status code?

418 I'm a teapot comes from a 1998 April Fools RFC (Hyper Text Coffee Pot Control Protocol). It is not used for real errors, though some frameworks keep it as an easter egg.