HTTP Status Code Reference
Complete list of HTTP status codes with descriptions, use cases, and examples. 100% client-side.
62 status codes
Switching Protocols
The requester has asked the server to switch protocols, and the server has agreed.
Processing
The server has received and is processing the request, but no response is available yet.
Early Hints
Used to return some response headers before the final HTTP message.
OK★ Common
The request succeeded and the response contains the requested data.
Created★ Common
The request succeeded and a new resource was created.
Accepted
The request has been accepted for processing, but processing is not complete.
Non-Authoritative Information
The request succeeded but the response came from a local or third-party copy, not the origin server.
No Content★ Common
The request succeeded but there is no content to return.
Reset Content
The request succeeded and the client should reset the document view (clear a form, reset state).
Partial Content
The server is delivering only part of the resource, due to a Range header sent by the client.
Multi-Status
The response body contains multiple status codes for different sub-requests.
Already Reported
Used inside a 207 Multi-Status response to avoid repeating the same information.
IM Used
The server has fulfilled a GET request and the response is an instance manipulation (delta encoding).
Multiple Choices
The request has more than one possible response — the client should choose.
Moved Permanently★ Common
The resource has moved permanently. Clients should use the new URL from now on.
Found★ Common
The resource is temporarily at a different URL. Clients should keep using the original URL.
See Other
The response can be found at another URL using a GET request.
Not Modified★ Common
The resource has not been modified since the last request. The client should use its cached copy.
Use Proxy
The requested resource must be accessed through the specified proxy.
Temporary Redirect
Like 302 but preserves the original HTTP method (POST stays POST, not converted to GET).
Permanent Redirect
Like 301 but preserves the HTTP method and body.
Bad Request★ Common
The server cannot process the request due to malformed syntax or invalid data.
Unauthorized★ Common
Authentication is required and has failed or not been provided.
Payment Required
Reserved for future use. Originally for paid services.
Forbidden★ Common
The client is authenticated but does not have permission to access the resource.
Not Found★ Common
The requested resource could not be found on the server.
Method Not Allowed
The request method is not supported for the target resource.
Not Acceptable
The resource cannot produce a response matching the Accept header.
Proxy Authentication Required
The client must first authenticate with the proxy.
Request Timeout
The server timed out waiting for the request.
Conflict★ Common
The request conflicts with the current state of the target resource.
Gone
The resource was available in the past but has been permanently removed.
Length Required
The server requires a Content-Length header but the request did not include one.
Precondition Failed
A condition in the request headers (like If-Match or If-Unmodified-Since) evaluated to false.
Content Too Large★ Common
The request body is larger than the server is willing or able to process.
URI Too Long
The URI provided was longer than the server can interpret.
Unsupported Media Type
The request body format is not supported by the server.
Range Not Satisfiable
The Range header cannot be satisfied by the resource.
Expectation Failed
The server cannot meet the requirements of the Expect request header.
I'm a teapot
An April Fools' joke from RFC 2324 (Hyper Text Coffee Pot Control Protocol).
Misdirected Request
The request was directed to a server that cannot produce a response for the given authority.
Unprocessable Content★ Common
The server understands the request but cannot process it due to semantic errors.
Locked
The source or destination resource of a method is locked.
Failed Dependency
The request failed because a previous request in a batch failed.
Too Early
The server is unwilling to risk processing a request that might be replayed.
Upgrade Required
The client should switch to a different protocol (usually TLS or HTTP/2).
Precondition Required
The origin server requires the request to be conditional.
Too Many Requests★ Common
The user has sent too many requests in a given amount of time (rate limited).
Request Header Fields Too Large
The server refuses the request because header fields are too large.
Unavailable For Legal Reasons
The resource is unavailable for legal reasons (censorship, DMCA, court order).
Internal Server Error★ Common
The server encountered an unexpected condition and cannot fulfill the request.
Not Implemented
The server does not support the functionality required to fulfill the request.
Bad Gateway★ Common
The server, while acting as a gateway or proxy, received an invalid response from an upstream server.
Service Unavailable★ Common
The server is not ready to handle the request — overloaded or under maintenance.
Gateway Timeout★ Common
The server, while acting as a gateway or proxy, did not get a timely response from an upstream server.
HTTP Version Not Supported
The server does not support the HTTP protocol version used in the request.
Variant Also Negotiates
The server has an internal configuration error: content negotiation is not properly configured.
Insufficient Storage
The server cannot store the representation needed to complete the request.
Loop Detected
The server detected an infinite loop while processing the request.
Not Extended
Further extensions to the request are required for the server to fulfill it.
Network Authentication Required
The client needs to authenticate to gain network access.
📖 Most Commonly Used Codes
🔒 100% private: Reference data is bundled locally. Follows IANA registry and RFC 9110.
About HTTP Status Code Reference
HTTP status codes are three-digit numbers returned by servers in response to client requests. They indicate the outcome of the request: success (2xx), redirection (3xx), client error (4xx), or server error (5xx). Every REST API, website, and web service uses them. Knowing which code to return — and interpreting what a client receives — is fundamental to web development. This reference lists all standard HTTP status codes from the IANA registry and RFC 9110, with descriptions, common use cases, and best-practice guidance. Search by code, filter by category, and copy with one click.
How It Works
- Browse by category (1xx, 2xx, 3xx, 4xx, 5xx) or see all codes.
- Search by number (e.g., "404") or name (e.g., "not found").
- Click any row to copy the code number.
- Read the description and use cases for each code.
✨ Key Features
- ✓All 60+ standard HTTP status codes
- ✓Organized by category: 1xx, 2xx, 3xx, 4xx, 5xx
- ✓Search by number or name
- ✓Detailed descriptions
- ✓Common use cases for each code
- ✓Real-world examples
- ✓Categorized with icons (success, error, redirect, etc.)
- ✓One-click copy
- ✓Common codes flagged as "most used"
- ✓100% client-side — no data sent to any server
🎯 Common Use Cases
- →Choosing the right status code for an API endpoint
- →Debugging why a client received a specific error
- →Documenting API responses in OpenAPI/Swagger
- →Writing tests that assert status codes
- →Configuring nginx/Apache to return proper codes
- →Learning REST API best practices
- →Reviewing server logs to understand error patterns
- →Teaching HTTP fundamentals
💡 Advanced Tips & Pro Insights
- ▸2xx = success. Use 200 (OK) for successful GET/PUT, 201 (Created) for POST that creates, 204 (No Content) for DELETE or PUT without response body.
- ▸3xx = redirect. Use 301 (Moved Permanently) for permanent URL changes, 302 or 307 (Temporary) for temporary, and 304 (Not Modified) with ETag caching.
- ▸4xx = client error. 400 (Bad Request) for malformed requests, 401 (Unauthorized) when auth is missing, 403 (Forbidden) when auth is valid but permission denied, 404 (Not Found) for missing resources, 429 (Too Many Requests) for rate limits.
- ▸5xx = server error. 500 (Internal Server Error) is the generic fallback. Use more specific codes like 502 (Bad Gateway), 503 (Service Unavailable), and 504 (Gateway Timeout) when applicable.
- ▸Never return 200 with an error body — this breaks clients and monitoring. Always use the appropriate 4xx/5xx code.
- ▸401 vs 403: 401 means "you are not authenticated" (login required); 403 means "you are authenticated but not authorized" (permission denied).
Frequently Asked Questions
Is this HTTP status reference free?▾
Yes, this HTTP status code reference is completely free with no signup, email, or usage limits.
Is my data safe?▾
Yes, 100% safe. All lookups happen in your browser. Nothing is sent to any server.
What is an HTTP status code?▾
An HTTP status code is a three-digit number returned by a server in the HTTP response. It indicates the outcome of the request: 2xx for success, 3xx for redirects, 4xx for client errors, and 5xx for server errors.
What is the difference between 401 and 403?▾
401 Unauthorized means the client is not authenticated — credentials are missing or invalid. 403 Forbidden means the client is authenticated but does not have permission to access the resource.
What is the difference between 301 and 302?▾
301 Moved Permanently is a permanent redirect that clients and search engines should cache. 302 Found (and 307 Temporary Redirect) is a temporary redirect that should not be cached.
Should I return 200 or 201 for a POST that creates a resource?▾
Return 201 Created. Include a Location header with the URL of the new resource, and optionally the created resource in the body. Use 200 OK if the POST does not create a resource (e.g., a search that returns results).
What status code means rate limited?▾
429 Too Many Requests. Include a Retry-After header indicating how long the client should wait before retrying.
Can I use custom status codes?▾
The HTTP specification reserves codes for specific meanings. You can use non-standard codes in the 2xx–5xx range (like 599 for specific business logic), but this can break clients and proxies. Stick to standard codes when possible.