HTTP Status Codes Reference
Complete reference table for HTTP response status codes.
Back to all tools on ToolForge
1xx Informational
| Code | Status | Description |
|---|---|---|
| 100 | Continue | Initial part of request received, client should continue sending |
| 101 | Switching Protocols | Server agrees to switch protocols (e.g., WebSocket upgrade) |
| 102 | Processing | Request is being processed, no response available yet (WebDAV) |
| 103 | Early Hints | Return headers before final response (preload hints) |
2xx Success
| Code | Status | Description |
|---|---|---|
| 200 | OK | Request succeeded, response contains requested resource |
| 201 | Created | Resource successfully created, Location header points to it |
| 202 | Accepted | Request accepted for processing but not completed |
| 203 | Non-Authoritative Information | Transformed response from proxy or intermediary |
| 204 | No Content | Success but no response body (common for DELETE) |
| 205 | Reset Content | Client should reset document view (form reset) |
| 206 | Partial Content | Server delivering partial resource (range request) |
| 207 | Multi-Status | Multiple status codes in single response (WebDAV) |
| 208 | Already Reported | Members of DAV binding already listed (WebDAV) |
| 226 | IM Used | Response is result of delta applied (RFC 3229) |
3xx Redirection
| Code | Status | Description |
|---|---|---|
| 300 | Multiple Choices | Multiple options available for requested resource |
| 301 | Moved Permanently | Resource has new permanent URL, update bookmarks |
| 302 | Found | Temporary redirect, continue using original URL |
| 303 | See Other | Redirect to different URI using GET method |
| 304 | Not Modified | Use cached version, resource unchanged |
| 305 | Use Proxy | Access through proxy (deprecated for security) |
| 307 | Temporary Redirect | Temp redirect, original method preserved |
| 308 | Permanent Redirect | Perm redirect, original method preserved |
4xx Client Error
| Code | Status | Description |
|---|---|---|
| 400 | Bad Request | Invalid syntax, malformed request |
| 401 | Unauthorized | Authentication required or failed |
| 402 | Payment Required | Reserved for future use (payment systems) |
| 403 | Forbidden | Server understands request but refuses access |
| 404 | Not Found | Resource not found at specified URL |
| 405 | Method Not Allowed | HTTP method not supported for this resource |
| 406 | Not Acceptable | Cannot produce acceptable response format |
| 407 | Proxy Authentication Required | Proxy requires authentication |
| 408 | Request Timeout | Server timed out waiting for request |
| 409 | Conflict | Request conflicts with current resource state |
| 410 | Gone | Resource permanently removed, won't return |
| 411 | Length Required | Content-Length header required |
| 412 | Precondition Failed | Conditional headers failed (ETag, If-Match) |
| 413 | Payload Too Large | Request entity exceeds server limits |
| 414 | URI Too Long | Request URL exceeds server limits |
| 415 | Unsupported Media Type | Request format not supported |
| 416 | Range Not Satisfiable | Requested range is invalid for resource |
| 417 | Expectation Failed | Expect header requirement not met |
| 418 | I'm a Teapot | April Fools' joke (RFC 2324) |
| 421 | Misdirected Request | Request sent to wrong server/host |
| 422 | Unprocessable Entity | Well-formed but contains errors (WebDAV) |
| 423 | Locked | Resource is locked (WebDAV) |
| 424 | Failed Dependency | Previous request failed, this one can't proceed |
| 425 | Too Early | Server unwilling to process due to replay risk |
| 426 | Upgrade Required | Client should upgrade protocol |
| 428 | Precondition Required | Request should be conditional |
| 429 | Too Many Requests | Rate limit exceeded, slow down |
| 431 | Request Header Fields Too Large | Headers exceed server limits |
| 451 | Unavailable for Legal Reasons | Resource blocked for legal reasons |
5xx Server Error
| Code | Status | Description |
|---|---|---|
| 500 | Internal Server Error | Generic server error, no specific code applies |
| 501 | Not Implemented | Server doesn't support requested functionality |
| 502 | Bad Gateway | Upstream server returned invalid response |
| 503 | Service Unavailable | Server temporarily unable (overload/maintenance) |
| 504 | Gateway Timeout | Upstream server didn't respond in time |
| 505 | HTTP Version Not Supported | Requested HTTP version not supported |
| 506 | Variant Also Negotiates | Transparent content negotiation issue |
| 507 | Insufficient Storage | Not enough storage to complete (WebDAV) |
| 508 | Loop Detected | Infinite loop detected (WebDAV) |
| 510 | Not Extended | Further extensions required (RFC 2774) |
| 511 | Network Authentication Required | Network access requires authentication |
About HTTP Status Codes Reference
This HTTP status codes reference lists standard response codes from 1xx to 5xx with descriptions. Use the search box to quickly find specific codes or browse by category.
It is useful for API development, debugging server responses, understanding HTTP communication, and implementing proper error handling in applications.
HTTP Status Code Best Practices
Success Responses: 200 OK - Standard success for GET/PUT/PATCH 201 Created - POST created new resource 204 No Content - Success with no body (DELETE) Client Errors: 400 Bad Request - Invalid input, check validation 401 Unauthorized - Missing/invalid authentication 403 Forbidden - Authenticated but no permission 404 Not Found - Resource doesn't exist 429 Too Many Requests - Rate limited, check Retry-After Server Errors: 500 Internal Server Error - Check application logs 502 Bad Gateway - Check upstream/proxy health 503 Service Unavailable - Retry later, check status page 504 Gateway Timeout - Increase timeout or fix backend Redirects: 301 Moved Permanently - Update bookmarks/links 302 Found - Temporary, keep original URL 304 Not Modified - Use cached response
Frequently Asked Questions
- How are HTTP status codes organized?
- HTTP status codes are organized into 5 classes by first digit: 1xx (Informational - request received), 2xx (Success - processed successfully), 3xx (Redirection - further action needed), 4xx (Client Error - invalid request), 5xx (Server Error - server failed valid request). Each class has specific codes for different scenarios.
- What is the difference between PUT and PATCH responses?
- PUT (full replacement) typically returns 200 OK with updated resource or 204 No Content. PATCH (partial update) returns similar codes. Both return 201 Created if creating new resource, 400 Bad Request for invalid data, 404 Not Found if resource doesn't exist, 409 Conflict for version mismatches.
- When should I use 201 vs 200?
- Use 201 Created when a POST request successfully creates a new resource. Include Location header with the new resource URL. Use 200 OK for successful updates, retrievals, or operations that don't create new resources. 201 specifically indicates resource creation.
- What are the most common API status codes?
- REST APIs commonly use: 200 OK (success), 201 Created (resource created), 204 No Content (success, empty response), 400 Bad Request (invalid input), 401 Unauthorized (missing auth), 403 Forbidden (insufficient permissions), 404 Not Found, 429 Too Many Requests (rate limited), 500 Internal Server Error.
- What is the purpose of 304 Not Modified?
- 304 Not Modified enables efficient caching. When client sends If-None-Match (ETag) or If-Modified-Since headers, server returns 304 if resource unchanged (no body, saves bandwidth) or 200 with new content if modified. Critical for performance optimization.
- How do I handle 429 Too Many Requests?
- When receiving 429: 1) Stop sending requests immediately, 2) Check Retry-After header for wait time, 3) Implement exponential backoff, 4) Reduce request rate, 5) Consider caching responses. Prevention: implement client-side rate limiting, batch requests, use webhooks instead of polling.