HTTP Status Codes Explained (Full List)
A clear reference to HTTP status codes — what 200, 301, 404, 500 and the rest actually mean, grouped by class, with plain-English explanations.
Every time your browser or an app asks a web server for something, the server answers with a three-digit HTTP status code that says how the request went. The first digit tells you the class of the response: 1xx is informational, 2xx means success, 3xx is a redirect, 4xx is a client error (something was wrong with the request), and 5xx is a server error (the request was fine, but the server failed to handle it). The tables below list the codes you’re most likely to meet, with a plain-English explanation of each.
1xx — Informational
These are interim responses. The server has received the request and is telling the client to keep going; a final response will follow.
| Code | Name | What it means |
|---|---|---|
| 100 | Continue | The initial part of the request was received and the client should continue sending the rest of it. |
| 101 | Switching Protocols | The server agrees to switch protocols (for example, upgrading the connection to WebSocket). |
2xx — Success
The request was received, understood, and processed successfully.
| Code | Name | What it means |
|---|---|---|
| 200 | OK | The standard success response. The request worked and the body contains the result. |
| 201 | Created | The request succeeded and a new resource was created (common after a POST). |
| 202 | Accepted | The request was accepted for processing, but the work isn’t finished yet (asynchronous handling). |
| 204 | No Content | Success, but there’s no body to return (often used after a delete or update). |
| 206 | Partial Content | The server is delivering only part of the resource, as requested by a Range header (used for resuming downloads and streaming). |
3xx — Redirection
The client needs to take an extra step — usually following the request to a different URL — to complete it.
| Code | Name | What it means |
|---|---|---|
| 301 | Moved Permanently | The resource has a new permanent URL. Browsers and search engines should update their links. |
| 302 | Found | The resource is temporarily at a different URL. Keep using the original URL for future requests. |
| 303 | See Other | Look at another URL with a GET request, typically to show a result page after a form submission. |
| 304 | Not Modified | The cached copy is still current, so the server sends no body and the client reuses what it has. |
| 307 | Temporary Redirect | Like 302, but the request method (e.g. POST) must not change when following the redirect. |
| 308 | Permanent Redirect | Like 301, but the request method must be preserved when following the redirect. |
4xx — Client errors
Something was wrong with the request itself, so the server is refusing or unable to fulfil it. Fixing these usually means changing what the client sends.
| Code | Name | What it means |
|---|---|---|
| 400 | Bad Request | The server couldn’t understand the request, often due to malformed syntax or invalid data. |
| 401 | Unauthorized | Authentication is required and has either not been provided or has failed. (You’re not signed in.) |
| 403 | Forbidden | The server understood the request but refuses to authorize it. (You’re signed in, but not allowed.) |
| 404 | Not Found | The requested resource doesn’t exist at that URL — the most familiar error of them all. |
| 405 | Method Not Allowed | The HTTP method (GET, POST, etc.) isn’t supported for this resource. |
| 408 | Request Timeout | The server timed out waiting for the client to finish sending the request. |
| 409 | Conflict | The request conflicts with the current state of the resource (for example, an edit collision). |
| 410 | Gone | The resource used to exist but has been permanently removed, with no forwarding address. |
| 418 | I’m a teapot | An April Fools’ joke code from 1998 that returns when a teapot is asked to brew coffee. Not for real use. |
| 422 | Unprocessable Content | The request was well-formed but contained semantic errors, so it couldn’t be processed (common in APIs for validation failures). |
| 429 | Too Many Requests | The client has sent too many requests in a given time and is being rate-limited. |
5xx — Server errors
The request was valid, but the server failed to fulfil it. These are problems on the server’s side, not the client’s.
| Code | Name | What it means |
|---|---|---|
| 500 | Internal Server Error | A generic, catch-all message: something went wrong on the server and there’s no more specific detail. |
| 501 | Not Implemented | The server doesn’t support the functionality needed to fulfil the request. |
| 502 | Bad Gateway | A server acting as a gateway or proxy got an invalid response from an upstream server. |
| 503 | Service Unavailable | The server is temporarily unable to handle the request, often due to overload or maintenance. |
| 504 | Gateway Timeout | A gateway or proxy didn’t get a timely response from the upstream server it needed. |
Quick tips
A few pairs of codes are easy to mix up. Here’s how to tell them apart:
- 301 vs 302: Use 301 when a page has moved for good — it tells browsers and search engines to update their links and pass on ranking. Use 302 for a temporary move where you want everyone to keep using the original URL.
- 401 vs 403: 401 means “I don’t know who you are” — you need to authenticate (log in). 403 means “I know who you are, but you still can’t have this” — you’re authenticated but lack permission.
- 502 vs 503: 502 Bad Gateway points to a broken or unexpected response coming from an upstream server behind a proxy. 503 Service Unavailable means the server is up but deliberately not serving right now (overloaded or under maintenance) and is usually a temporary condition.