HTTP status codes
What each HTTP status code means, why servers send it, how to fix it, and what it tells an uptime monitor. Start with the overview of all classes.
1xx Informational
100 Continue
HTTP 100 Continue is an interim reply telling a client to go ahead and send the request body. You see it on large uploads that use Expect.
101 Switching Protocols
HTTP 101 Switching Protocols means the server agreed to change protocols on the connection, most often to upgrade an HTTP/1.1 request to WebSocket.
103 Early Hints
HTTP 103 Early Hints is an interim response that lets a browser start loading CSS, fonts or scripts while the server is still building the page.
2xx Success
200 OK
HTTP 200 OK means the request succeeded and the response carries the result. It is the normal answer for pages, files and API reads.
201 Created
HTTP 201 Created means a request succeeded and made at least one new resource, usually after an API POST or PUT, with a Location header to it.
202 Accepted
HTTP 202 Accepted means the server took the request for processing but has not finished it. APIs use it for queued jobs, exports and batch work.
204 No Content
HTTP 204 No Content means the request succeeded and the server has nothing to send back. Common for API deletes, saves and health checks.
206 Partial Content
HTTP 206 Partial Content means the server sent only the byte range the client asked for. You see it with video streaming, resumed downloads and PDFs.
3xx Redirection
301 Moved Permanently
HTTP 301 Moved Permanently means a URL has a new permanent address given in the Location header. Used for HTTPS, www and site migrations.
302 Found
HTTP 302 Found is a temporary redirect to the URL in the Location header. Seen on login walls, language and A/B routing, and default framework redirects.
303 See Other
HTTP 303 See Other sends the client to a different URL to fetch the result with GET. It is the standard redirect after a form POST succeeds.
304 Not Modified
HTTP 304 Not Modified means a cached copy is still valid, so the server sends no body. It only answers conditional requests with ETag or a date.
307 Temporary Redirect
HTTP 307 Temporary Redirect sends the client to another URL for now and requires the same method and body, so a POST stays a POST.
308 Permanent Redirect
HTTP 308 Permanent Redirect means a URL moved for good and clients must resend the same method and body to the new URL given in Location.
4xx Client errors
400 Bad Request
400 Bad Request means the server rejected a request it considers malformed, such as broken JSON, an invalid header or an oversized cookie.
401 Unauthorized
401 Unauthorized means the request lacks valid credentials for the resource. Learn how it differs from 403 and why a 401 must send WWW-Authenticate.
403 Forbidden
403 Forbidden means the server understood the request but refuses it, often due to WAF or bot rules, file permissions or a disabled directory listing.
404 Not Found
404 Not Found means the server has nothing at the requested URL. See common causes like broken routes, wrong document roots and soft 404s.
405 Method Not Allowed
405 Method Not Allowed means the URL exists but does not accept the HTTP method used, such as POST to a static file. The Allow header lists valid ones.
408 Request Timeout
408 Request Timeout means the server gave up waiting for the client to finish sending its request, often from slow uploads or idle connections.
409 Conflict
409 Conflict means a request clashes with the resource's current state, such as a duplicate record or an edit made against an outdated version.
410 Gone
410 Gone means a resource was removed on purpose and is not expected to return. Learn when to use it instead of 404 or a 301 redirect.
413 Content Too Large
413 Content Too Large means the request body exceeds what the server accepts, usually an upload hitting nginx's client_max_body_size or a CDN limit.
414 URI Too Long
414 URI Too Long means the requested URL is longer than the server will accept, usually from huge query strings or a redirect loop that keeps growing.
415 Unsupported Media Type
415 Unsupported Media Type means the server rejected the request body's format, usually because Content-Type is missing or not one the endpoint accepts.
421 Misdirected Request
HTTP 421 means the request reached a server that cannot answer for that hostname, usually after HTTP/2 connection reuse or a TLS/SNI mismatch.
422 Unprocessable Content
HTTP 422 means the server parsed the request body but rejected its content as invalid, typically an API validation error on a POST or PUT.
429 Too Many Requests
HTTP 429 means a client hit a rate limit and must slow down, often with a Retry-After header saying how long to wait before trying again.
431 Request Header Fields Too Large
HTTP 431 means the server refused a request because its headers were too big, most often from oversized or accumulated cookies on one domain.
451 Unavailable For Legal Reasons
HTTP 451 means access to a page is blocked because of a legal demand, such as a court order or regional law, and may apply only in some countries.
5xx Server errors
500 Internal Server Error
Full guide: causes, diagnosis and fixes.
501 Not Implemented
HTTP 501 means the server does not support the functionality a request needs, usually an unknown HTTP method or a transfer coding it cannot handle.
502 Bad Gateway
Full guide: causes, diagnosis and fixes.
503 Service Unavailable
Full guide: causes, diagnosis and fixes.
504 Gateway Timeout
Full guide: causes, diagnosis and fixes.
505 HTTP Version Not Supported
HTTP 505 means the server refuses the major HTTP version used in the request, usually because of an outdated client, a proxy or a malformed request line.
511 Network Authentication Required
HTTP 511 means the network you are on wants you to log in or accept terms first, as on hotel or airport Wi-Fi, before it lets traffic reach the site.