Complete Guide
HTTP Status Codes Guide
An HTTP status code is the three-digit number a server returns with every response to say what happened to the request — 2xx succeeded, 3xx redirected, 4xx the request was wrong, 5xx the server failed. This guide covers all 92 codes, standard and non-standard, with what each one means, what commonly causes it, and how to fix it.
HTTP Status Code Categories
SwipePopular HTTP Codes
SwipeHTTP Status Codes Cheat Sheet
One-page quick reference for all HTTP status codes.
All HTTP Status Codes (92)
1xx Informational (4)
| Code | Status | Description | Learn More |
|---|---|---|---|
| 100 | Continue | The server has received the request headers and the client should proceed to send the body. | View details |
| 101 | Switching Protocols | The requester has asked the server to switch protocols and the server has agreed. | View details |
| 102 | Processing | The server has received and is processing the request, but no response is available yet (WebDAV). | View details |
| 103 | Early Hints | Used to return some response headers before the final HTTP message, letting the client preload resources. | View details |
Continue
The server has received the request headers and the client should proceed to send the body.
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 (WebDAV).
Early Hints
Used to return some response headers before the final HTTP message, letting the client preload resources.
2xx Success (10)
| Code | Status | Description | Learn More |
|---|---|---|---|
| 200 | OK | The request has succeeded and the server returned the requested data. | View details |
| 201 | Created | The request succeeded and a new resource was created as a result. | View details |
| 202 | Accepted | The request has been accepted for processing, but the processing is not complete. | View details |
| 203 | Non-Authoritative Information | The returned metadata is from a local or third-party copy, not the origin server. | View details |
| 204 | No Content | The server successfully processed the request and is not returning any content. | View details |
| 205 | Reset Content | The server processed the request and asks the client to reset the document view. | View details |
| 206 | Partial Content | The server is delivering only part of the resource due to a range header sent by the client. | View details |
| 207 | Multi-Status | Conveys information about multiple resources where several status codes apply (WebDAV). | View details |
| 208 | Already Reported | Members of a DAV binding were already enumerated and are not repeated (WebDAV). | View details |
| 226 | IM Used | The server fulfilled a GET request; the response is a representation of instance manipulations applied. | View details |
OK
The request has succeeded and the server returned the requested data.
Created
The request succeeded and a new resource was created as a result.
Accepted
The request has been accepted for processing, but the processing is not complete.
Non-Authoritative Information
The returned metadata is from a local or third-party copy, not the origin server.
No Content
The server successfully processed the request and is not returning any content.
Reset Content
The server processed the request and asks the client to reset the document view.
Partial Content
The server is delivering only part of the resource due to a range header sent by the client.
Multi-Status
Conveys information about multiple resources where several status codes apply (WebDAV).
Already Reported
Members of a DAV binding were already enumerated and are not repeated (WebDAV).
IM Used
The server fulfilled a GET request; the response is a representation of instance manipulations applied.
3xx Redirection (8)
| Code | Status | Description | Learn More |
|---|---|---|---|
| 300 | Multiple Choices | The request has more than one possible response; the user or agent should choose one. | View details |
| 301 | Moved Permanently | The resource has been permanently moved to a new URL given in the response. | View details |
| 302 | Found | The resource is temporarily located at a different URL; keep using the original URL for future requests. | View details |
| 303 | See Other | The response can be found under another URL using a GET method. | View details |
| 304 | Not Modified | The resource has not been modified since the version specified by the request headers. | View details |
| 305 | Use Proxy | The requested resource must be accessed through the proxy given in the Location header (deprecated). | View details |
| 307 | Temporary Redirect | The resource is temporarily at a different URL and the request method must not change. | View details |
| 308 | Permanent Redirect | The resource is permanently at a new URL and the request method must not change. | View details |
Multiple Choices
The request has more than one possible response; the user or agent should choose one.
Moved Permanently
The resource has been permanently moved to a new URL given in the response.
Found
The resource is temporarily located at a different URL; keep using the original URL for future requests.
See Other
The response can be found under another URL using a GET method.
Not Modified
The resource has not been modified since the version specified by the request headers.
Use Proxy
The requested resource must be accessed through the proxy given in the Location header (deprecated).
Temporary Redirect
The resource is temporarily at a different URL and the request method must not change.
Permanent Redirect
The resource is permanently at a new URL and the request method must not change.
4xx Client Errors (45)
| Code | Status | Description | Learn More |
|---|---|---|---|
| 400 | Bad Request | The server cannot process the request due to a client error such as malformed syntax. | View details |
| 401 | Unauthorized | Authentication is required and has failed or has not yet been provided. | View details |
| 402 | Payment Required | Reserved for future use, sometimes used by APIs to signal a payment or quota requirement. | View details |
| 403 | Forbidden | The server understood the request but refuses to authorize it. | View details |
| 404 | Not Found | The requested resource could not be found on the server. | View details |
| 405 | Method Not Allowed | The request method is known by the server but is not supported by the target resource. | View details |
| 406 | Not Acceptable | The resource cannot produce a response matching the Accept headers sent in the request. | View details |
| 407 | Proxy Authentication Required | The client must first authenticate itself with the proxy. | View details |
| 408 | Request Timeout | The server timed out waiting for the client to finish sending the request. | View details |
| 409 | Conflict | The request conflicts with the current state of the target resource. | View details |
| 410 | Gone | The resource requested is no longer available and will not be available again. | View details |
| 411 | Length Required | The request did not specify the length of its content, which the resource requires. | View details |
| 412 | Precondition Failed | One or more conditions in the request header fields evaluated to false. | View details |
| 413 | Content Too Large | The request body is larger than the server is willing or able to process. | View details |
| 414 | URI Too Long | The URI requested by the client is longer than the server is willing to interpret. | View details |
| 415 | Unsupported Media Type | The media format of the requested data is not supported by the server. | View details |
| 416 | Range Not Satisfiable | The range specified by the Range header cannot be fulfilled. | View details |
| 417 | Expectation Failed | The expectation given in the Expect request header could not be met by the server. | View details |
| 418 | I'm a teapot | The server refuses to brew coffee because it is, permanently, a teapot (an April Fools joke). | View details |
| 419 | Page ExpiredLaravel | Used by the Laravel framework when a CSRF token is missing or has expired. | View details |
| 420 | Enhance Your CalmTwitter | Returned by the Twitter API v1 when the client is being rate limited. | View details |
| 421 | Misdirected Request | The request was directed at a server that is not able to produce a response. | View details |
| 422 | Unprocessable Content | The request was well-formed but could not be processed due to semantic errors. | View details |
| 423 | Locked | The resource that is being accessed is locked (WebDAV). | View details |
| 424 | Failed Dependency | The request failed because it depended on another request that failed (WebDAV). | View details |
| 425 | Too Early | The server is unwilling to risk processing a request that might be replayed. | View details |
| 426 | Upgrade Required | The client should switch to a different protocol given in the Upgrade header. | View details |
| 428 | Precondition Required | The origin server requires the request to be conditional to prevent lost updates. | View details |
| 429 | Too Many Requests | The user has sent too many requests in a given amount of time (rate limiting). | View details |
| 430 | Request Header Fields Too LargeShopify | Used by Shopify instead of 429 when too many URLs are requested within a time frame. | View details |
| 431 | Request Header Fields Too Large | The server refuses the request because its header fields are too large. | View details |
| 440 | Login Time-outIIS | The client session has expired and the user must log in again (Microsoft IIS). | View details |
| 444 | No Responsenginx | nginx closes the connection without sending any response headers, used to deter malware. | View details |
| 449 | Retry WithIIS | The request should be retried after performing the appropriate action (Microsoft IIS). | View details |
| 450 | Blocked by Windows Parental ControlsMicrosoft | Returned when Windows Parental Controls are turned on and block access to the page. | View details |
| 451 | Unavailable For Legal Reasons | The resource is unavailable for legal reasons, such as censorship or a takedown. | View details |
| 460 | Client Closed ConnectionAWS ELB | AWS ELB: the client closed the connection before the load balancer could respond. | View details |
| 463 | Too Many IPs in X-Forwarded-ForAWS ELB | AWS ELB: the X-Forwarded-For header has more than 30 IP addresses. | View details |
| 464 | Incompatible Protocol VersionsAWS ELB | AWS ELB: the protocol versions between the client and origin are incompatible. | View details |
| 494 | Request Header Too Largenginx | nginx returns this when request headers exceed the configured buffer size. | View details |
| 495 | SSL Certificate Errornginx | nginx returns this when client SSL certificate verification fails. | View details |
| 496 | SSL Certificate Requirednginx | nginx returns this when a required client SSL certificate is not provided. | View details |
| 497 | HTTP Request Sent to HTTPS Portnginx | nginx returns this when a plain HTTP request is sent to an HTTPS port. | View details |
| 498 | Invalid TokenEsri | Returned by ArcGIS for Server when a token is expired or otherwise invalid. | View details |
| 499 | Client Closed Requestnginx | Used by nginx when the client closes the connection while nginx is still processing the request. | View details |
Bad Request
The server cannot process the request due to a client error such as malformed syntax.
Unauthorized
Authentication is required and has failed or has not yet been provided.
Payment Required
Reserved for future use, sometimes used by APIs to signal a payment or quota requirement.
Forbidden
The server understood the request but refuses to authorize it.
Not Found
The requested resource could not be found on the server.
Method Not Allowed
The request method is known by the server but is not supported by the target resource.
Not Acceptable
The resource cannot produce a response matching the Accept headers sent in the request.
Proxy Authentication Required
The client must first authenticate itself with the proxy.
Request Timeout
The server timed out waiting for the client to finish sending the request.
Conflict
The request conflicts with the current state of the target resource.
Gone
The resource requested is no longer available and will not be available again.
Length Required
The request did not specify the length of its content, which the resource requires.
Precondition Failed
One or more conditions in the request header fields evaluated to false.
Content Too Large
The request body is larger than the server is willing or able to process.
URI Too Long
The URI requested by the client is longer than the server is willing to interpret.
Unsupported Media Type
The media format of the requested data is not supported by the server.
Range Not Satisfiable
The range specified by the Range header cannot be fulfilled.
Expectation Failed
The expectation given in the Expect request header could not be met by the server.
I'm a teapot
The server refuses to brew coffee because it is, permanently, a teapot (an April Fools joke).
Page Expired
Used by the Laravel framework when a CSRF token is missing or has expired.
Enhance Your Calm
Returned by the Twitter API v1 when the client is being rate limited.
Misdirected Request
The request was directed at a server that is not able to produce a response.
Unprocessable Content
The request was well-formed but could not be processed due to semantic errors.
Locked
The resource that is being accessed is locked (WebDAV).
Failed Dependency
The request failed because it depended on another request that failed (WebDAV).
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 given in the Upgrade header.
Precondition Required
The origin server requires the request to be conditional to prevent lost updates.
Too Many Requests
The user has sent too many requests in a given amount of time (rate limiting).
Request Header Fields Too Large
Used by Shopify instead of 429 when too many URLs are requested within a time frame.
Request Header Fields Too Large
The server refuses the request because its header fields are too large.
Login Time-out
The client session has expired and the user must log in again (Microsoft IIS).
No Response
nginx closes the connection without sending any response headers, used to deter malware.
Retry With
The request should be retried after performing the appropriate action (Microsoft IIS).
Blocked by Windows Parental Controls
Returned when Windows Parental Controls are turned on and block access to the page.
Unavailable For Legal Reasons
The resource is unavailable for legal reasons, such as censorship or a takedown.
Client Closed Connection
AWS ELB: the client closed the connection before the load balancer could respond.
Too Many IPs in X-Forwarded-For
AWS ELB: the X-Forwarded-For header has more than 30 IP addresses.
Incompatible Protocol Versions
AWS ELB: the protocol versions between the client and origin are incompatible.
Request Header Too Large
nginx returns this when request headers exceed the configured buffer size.
SSL Certificate Error
nginx returns this when client SSL certificate verification fails.
SSL Certificate Required
nginx returns this when a required client SSL certificate is not provided.
HTTP Request Sent to HTTPS Port
nginx returns this when a plain HTTP request is sent to an HTTPS port.
Invalid Token
Returned by ArcGIS for Server when a token is expired or otherwise invalid.
Client Closed Request
Used by nginx when the client closes the connection while nginx is still processing the request.
5xx Server Errors (25)
| Code | Status | Description | Learn More |
|---|---|---|---|
| 500 | Internal Server Error | The server encountered an unexpected condition that prevented it from fulfilling the request. | View details |
| 501 | Not Implemented | The server does not support the functionality required to fulfil the request. | View details |
| 502 | Bad Gateway | The server, acting as a gateway or proxy, received an invalid response from the upstream server. | View details |
| 503 | Service Unavailable | The server is not ready to handle the request, often due to overload or maintenance. | View details |
| 504 | Gateway Timeout | The server, acting as a gateway, did not get a timely response from the upstream server. | View details |
| 505 | HTTP Version Not Supported | The HTTP version used in the request is not supported by the server. | View details |
| 506 | Variant Also Negotiates | The server has an internal configuration error in transparent content negotiation. | View details |
| 507 | Insufficient Storage | The server is unable to store the representation needed to complete the request (WebDAV). | View details |
| 508 | Loop Detected | The server detected an infinite loop while processing the request (WebDAV). | View details |
| 509 | Bandwidth Limit ExceededApache/cPanel | Used by many servers (Apache, cPanel) to signal that bandwidth limits have been exceeded. | View details |
| 510 | Not Extended | Further extensions to the request are required for the server to fulfil it. | View details |
| 511 | Network Authentication Required | The client needs to authenticate to gain network access (e.g. captive portals). | View details |
| 520 | Web Server Returned an Unknown ErrorCloudflare | Cloudflare returns this when the origin server returns an empty, unknown or unexpected response. | View details |
| 521 | Web Server Is DownCloudflare | Cloudflare cannot reach the origin server because it refused the connection. | View details |
| 522 | Connection Timed OutCloudflare | Cloudflare timed out trying to establish a TCP connection to the origin server. | View details |
| 523 | Origin Is UnreachableCloudflare | Cloudflare could not reach the origin server, often due to a bad DNS record. | View details |
| 524 | A Timeout OccurredCloudflare | Cloudflare established a connection but the origin did not respond before the timeout. | View details |
| 525 | SSL Handshake FailedCloudflare | Cloudflare could not complete the SSL/TLS handshake with the origin server. | View details |
| 526 | Invalid SSL CertificateCloudflare | Cloudflare could not validate the SSL certificate on the origin web server. | View details |
| 527 | Railgun ErrorCloudflare | An error occurred in the Cloudflare Railgun connection between Cloudflare and the origin. | View details |
| 529 | Site is overloadedQualys | Used by Qualys SSLLabs when the site cannot process the request due to overload. | View details |
| 530 | Site is frozenCloudflare/Pantheon | Used by Pantheon and returned by Cloudflare alongside a 1xxx error indicating an origin error. | View details |
| 561 | UnauthorizedAWS ELB | AWS ELB: an error returned when the identity provider returns an authentication error. | View details |
| 598 | Network Read Timeout ErrorProxy | Used by some HTTP proxies to signal a network read timeout behind the proxy. | View details |
| 599 | Network Connect Timeout ErrorProxy | Used by some HTTP proxies to signal a network connect timeout behind the proxy. | View details |
Internal Server Error
The server encountered an unexpected condition that prevented it from fulfilling the request.
Not Implemented
The server does not support the functionality required to fulfil the request.
Bad Gateway
The server, acting as a gateway or proxy, received an invalid response from the upstream server.
Service Unavailable
The server is not ready to handle the request, often due to overload or maintenance.
Gateway Timeout
The server, acting as a gateway, did not get a timely response from the upstream server.
HTTP Version Not Supported
The HTTP version used in the request is not supported by the server.
Variant Also Negotiates
The server has an internal configuration error in transparent content negotiation.
Insufficient Storage
The server is unable to store the representation needed to complete the request (WebDAV).
Loop Detected
The server detected an infinite loop while processing the request (WebDAV).
Bandwidth Limit Exceeded
Used by many servers (Apache, cPanel) to signal that bandwidth limits have been exceeded.
Not Extended
Further extensions to the request are required for the server to fulfil it.
Network Authentication Required
The client needs to authenticate to gain network access (e.g. captive portals).
Web Server Returned an Unknown Error
Cloudflare returns this when the origin server returns an empty, unknown or unexpected response.
Web Server Is Down
Cloudflare cannot reach the origin server because it refused the connection.
Connection Timed Out
Cloudflare timed out trying to establish a TCP connection to the origin server.
Origin Is Unreachable
Cloudflare could not reach the origin server, often due to a bad DNS record.
A Timeout Occurred
Cloudflare established a connection but the origin did not respond before the timeout.
SSL Handshake Failed
Cloudflare could not complete the SSL/TLS handshake with the origin server.
Invalid SSL Certificate
Cloudflare could not validate the SSL certificate on the origin web server.
Railgun Error
An error occurred in the Cloudflare Railgun connection between Cloudflare and the origin.
Site is overloaded
Used by Qualys SSLLabs when the site cannot process the request due to overload.
Site is frozen
Used by Pantheon and returned by Cloudflare alongside a 1xxx error indicating an origin error.
Unauthorized
AWS ELB: an error returned when the identity provider returns an authentication error.
Network Read Timeout Error
Used by some HTTP proxies to signal a network read timeout behind the proxy.
Network Connect Timeout Error
Used by some HTTP proxies to signal a network connect timeout behind the proxy.
How to Use HTTP Status Codes
Return the most specific status code for each situation: 2xx for success, 3xx for redirects, 4xx when the client must fix the request, and 5xx when the server failed. Accurate codes make your APIs predictable, your redirects SEO-friendly, and your errors debuggable. Click any code above for causes, fixes, examples and REST API references.