HTTP status codes
Every response your server sends carries a three-digit code, and it is the fastest diagnosis available: it tells you which side failed and usually why. Here is what each one means and what to do about it.
Success (2xx)
200 OK
The request succeeded and the server returned the page or data you asked for. This is the response a healthy w…
201 Created
The request succeeded and something new exists as a result — normally a record created through an API. The res…
204 No Content
The request succeeded and there is deliberately nothing to send back. Common for DELETE calls, form submission…
206 Partial Content
The server is sending only part of the file because the client asked for a byte range. Video players and downl…
Redirection (3xx)
301 Moved Permanently
The resource has a new permanent home. Browsers cache this aggressively and search engines pass almost all ran…
302 Found
A temporary redirect. The original URL keeps its ranking because search engines expect the content to come bac…
303 See Other
Tells the client to fetch a different URL with GET, whatever method the original request used. It is the corre…
304 Not Modified
The file has not changed since the browser last fetched it, so the server sends headers only and the browser r…
307 Temporary Redirect
Like 302, but the method and body must be preserved — a POST stays a POST. Also what browsers use internally w…
308 Permanent Redirect
The permanent equivalent of 307: the move is permanent and the method must not change. Use it when a POST endp…
Client errors (4xx)
400 Bad Request
The server could not understand the request at all — malformed syntax, an oversized header, or an invalid char…
401 Unauthorized
Authentication is required and either was not supplied or was not accepted. Despite the name it means unauthen…
403 Forbidden
The server understood the request and refuses to fulfil it. Authentication would not help; you are simply not …
404 Not Found
The URL does not exist on this server. A handful of 404s is normal on any site; a sudden spike after a deploy …
405 Method Not Allowed
The URL exists but not for that HTTP method — a GET to an endpoint that only accepts POST, for instance.…
408 Request Timeout
The client took too long to send the complete request, so the server gave up waiting.…
410 Gone
Like 404, but deliberate and permanent: the content existed and has been removed on purpose, and is not coming…
413 Payload Too Large
The request body exceeded what the server will accept — almost always a file upload.…
418 I'm a Teapot
A joke status from an April Fools specification, returned by a teapot asked to brew coffee. It occasionally ap…
429 Too Many Requests
You are being rate-limited. The server is working; it has simply decided you are asking too often.…
451 Unavailable For Legal Reasons
Access is blocked because of a legal demand — a court order, a takedown, or a regional restriction.…
Server errors (5xx)
500 Internal Server Error
The application hit an unhandled error. The response tells you nothing useful; the server log tells you everyt…
501 Not Implemented
The server does not support the functionality needed to fulfil the request — typically an HTTP method it does …
502 Bad Gateway
A proxy or load balancer could not get a valid response from the application behind it. The front door is fine…
503 Service Unavailable
The server is temporarily unable to handle the request — overloaded, or deliberately in maintenance mode. It i…
504 Gateway Timeout
A proxy waited for the application and gave up. Something behind the front end is taking longer than the timeo…
507 Insufficient Storage
The server cannot store what is needed to complete the request. In practice: the disk is full.…
508 Loop Detected
The server detected an infinite loop while processing the request, usually in a redirect or a rewrite rule.…
521 Web Server Is Down
A Cloudflare status code: Cloudflare reached your origin but the connection was refused. Your server, not Clou…
522 Connection Timed Out
Another Cloudflare code: the connection to your origin server timed out. Packets are being dropped rather than…
523 Origin Is Unreachable
Cloudflare could not reach the origin at all — typically a DNS problem at the Cloudflare layer, with the origi…
525 SSL Handshake Failed
Cloudflare could not complete a TLS handshake with your origin server, usually because the origin certificate …