HTTP Status Codes
Complete reference of HTTP status codes. Search, filter by category, and learn when to use each code.
How it works: Browse all HTTP status codes below. Use the search bar to find specific codes by number or name, or filter by category (1xx-5xx). Click any code to copy it.
Showing 34 of 34 status codes
Continue
click to copyThe server has received the request headers and the client should proceed to send the request body.
Switching Protocols
click to copyThe server is switching protocols as requested by the client (e.g., upgrading to WebSocket).
Processing
click to copyThe server has received and is processing the request, but no response is available yet (WebDAV).
Early Hints
click to copyUsed to return some response headers before the final HTTP message, allowing the browser to preload resources.
OK
click to copyThe request succeeded. The meaning depends on the HTTP method: GET returns the resource, POST returns the result of the action.
Created
click to copyThe request succeeded and a new resource was created. Typically used as a response to POST requests.
Accepted
click to copyThe request has been accepted for processing, but the processing has not been completed. Used for async operations.
No Content
click to copyThe server successfully processed the request but returns no content. Common response for DELETE operations.
Partial Content
click to copyThe server is delivering only part of the resource due to a Range header sent by the client.
Multi-Status
click to copyA multi-status response conveys information about multiple resources where multiple status codes might be appropriate (WebDAV).
Moved Permanently
click to copyThe resource has been permanently moved to a new URL. Search engines will update their links. Use for permanent URL changes.
Found
click to copyThe resource temporarily resides at a different URL. The client should continue to use the original URL for future requests.
See Other
click to copyThe response can be found at another URL using a GET request. Often used after POST to redirect to a confirmation page.
Not Modified
click to copyThe resource has not been modified since the last request. Used for caching — the client can use its cached version.
Temporary Redirect
click to copyThe resource temporarily resides at a different URL. Unlike 302, the request method must not change (POST stays POST).
Permanent Redirect
click to copyThe resource has been permanently moved. Unlike 301, the request method must not change (POST stays POST).
Bad Request
click to copyThe server cannot process the request due to malformed syntax, invalid parameters, or missing required fields.
Unauthorized
click to copyAuthentication is required. The client must provide valid credentials (API key, token, or login) to access this resource.
Forbidden
click to copyThe server understood the request but refuses to authorize it. Authentication won't help — the user lacks permission.
Not Found
click to copyThe requested resource could not be found on the server. The URL may be incorrect or the resource may have been deleted.
Method Not Allowed
click to copyThe HTTP method used is not supported for this resource. For example, using POST on a read-only endpoint.
Request Timeout
click to copyThe server timed out waiting for the request. The client took too long to send the complete request.
Conflict
click to copyThe request conflicts with the current state of the server. Common in version control or when trying to create a duplicate resource.
Gone
click to copyThe resource is no longer available and will not be available again. Unlike 404, this is a permanent condition.
Payload Too Large
click to copyThe request body is larger than the server is willing to accept. Common for file upload limits.
Unsupported Media Type
click to copyThe media type of the request body is not supported. For example, sending XML when only JSON is accepted.
I'm a Teapot
click to copyThe server refuses to brew coffee because it is, permanently, a teapot. An April Fools' joke from RFC 2324 that became a real HTTP status code.
Unprocessable Entity
click to copyThe server understands the content but cannot process it. Used for validation errors — the syntax is correct but the data is invalid.
Too Many Requests
click to copyThe user has sent too many requests in a given time period (rate limiting). Check the Retry-After header for when to retry.
Internal Server Error
click to copyThe server encountered an unexpected condition that prevented it from fulfilling the request. A generic server-side error.
Not Implemented
click to copyThe server does not support the functionality required to fulfill the request. The method may not be recognized.
Bad Gateway
click to copyThe server, acting as a gateway or proxy, received an invalid response from an upstream server.
Service Unavailable
click to copyThe server is temporarily unable to handle the request due to maintenance or overloading. Usually temporary.
Gateway Timeout
click to copyThe server, acting as a gateway or proxy, did not receive a timely response from an upstream server.
What Are HTTP Status Codes?
HTTP status codes are three-digit numbers returned by web servers to indicate the result of a client's request. They are grouped into five categories: 1xx (Informational), 2xx (Success), 3xx (Redirection), 4xx (Client Error), and 5xx (Server Error). Understanding these codes is essential for web development, API design, and debugging network issues.
Most Common HTTP Status Codes
The most frequently encountered status codes are 200 OK (request succeeded), 301 Moved Permanently (resource permanently relocated), 404 Not Found (resource doesn't exist), 403 Forbidden (access denied), and 500 Internal Server Error (server-side failure). These five codes account for the vast majority of HTTP responses you'll encounter in everyday web browsing and API development.
HTTP Status Codes in REST APIs
REST APIs use status codes to communicate the result of operations. A well-designed API returns 200 for successful GET requests, 201 for successful POST (resource created), 204 for successful DELETE (no content to return), 400 for invalid input, 401 for authentication failures, 403 for authorization failures, 404 for missing resources, and 422 for validation errors. Consistent status code usage makes APIs predictable and easier to consume.
Status Code Best Practices
- Always return the most specific status code — 404 is better than generic 400
- Use 201 Created (not 200) when a new resource is created via POST
- Return 204 No Content for successful DELETE operations
- Use 429 Too Many Requests with a Retry-After header for rate limiting
- Never return 200 with an error message in the body — use proper 4xx/5xx codes
- Use 301 for permanent redirects (SEO-friendly) and 307 for temporary ones