| 100 | Continue Informational | The server has received the headers; send the body. | After Expect: 100-continue, before uploading a large body. |
| 101 | Switching Protocols Informational | The server agrees to change protocol. | WebSocket handshake. |
| 102 | Processing Informational | WebDAV: request accepted, still working. | |
| 103 | Early Hints Informational | Preliminary headers, mainly Link: rel=preload, before the final response. | CDNs and Cloudflare to start loading assets early. |
| 200 | OK Success | The request succeeded. | The normal case. |
| 201 | Created Success | A new resource was created; Location header points to it. | POST to a collection in a REST API. |
| 202 | Accepted Success | Accepted for processing, not finished. | Async jobs and queues. |
| 203 | Non-Authoritative Information Success | Response modified by a proxy. | Rare. |
| 204 | No Content Success | Success with nothing to return. | DELETE, PUT, beacon endpoints, preflight responses. |
| 205 | Reset Content Success | Success; the client should reset the form. | Rare. |
| 206 | Partial Content Success | Only the requested byte range is returned. | Video streaming, resumable downloads (Range header). |
| 207 | Multi-Status Success | WebDAV: multiple status codes in an XML body. | |
| 226 | IM Used Success | Delta encoding applied. | Rare. |
| 300 | Multiple Choices Redirection | Several representations are available. | Rare. |
| 301 | Moved Permanently Redirection | The resource has a new permanent URL; the browser caches the redirect. Method may change to GET. | http→https, old URLs, www canonicalisation. Transfers SEO ranking. |
| 302 | Found Redirection | Temporary redirect; method may change to GET. | Post-login redirects, A/B tests. Not cached by default. |
| 303 | See Other Redirection | Redirect to a different resource with GET. | After a POST (post/redirect/get pattern). |
| 304 | Not Modified Redirection | The cached copy is still valid; no body. | Conditional requests with If-None-Match / If-Modified-Since. |
| 307 | Temporary Redirect Redirection | Like 302 but the method and body must not change. | Redirecting a POST without turning it into a GET; HSTS internal redirects in Chrome. |
| 308 | Permanent Redirect Redirection | Like 301 but the method and body must not change. | Permanent redirects of API endpoints. |
| 400 | Bad Request Client error | The request is malformed; the server will not process it. | Invalid JSON, bad parameters, oversized headers, invalid Host. |
| 401 | Unauthorized Client error | Authentication is required or failed. The response should say how (WWW-Authenticate). | Missing or expired token. (Should have been called Unauthenticated.) |
| 402 | Payment Required Client error | Reserved; used by some APIs for quota or billing problems. | Stripe, some SaaS APIs, Cloudflare for some plan limits. |
| 403 | Forbidden Client error | Authenticated (or not) but not allowed. | Permission denied, WAF block, directory listing disabled, Cloudflare challenges. |
| 404 | Not Found Client error | No resource at this URL. | Typos, deleted pages, wrong routes. Should return a helpful page. |
| 405 | Method Not Allowed Client error | The URL exists but not for this method; Allow header lists the valid ones. | POST to a static file, GET on a webhook endpoint. |
| 406 | Not Acceptable Client error | No representation matches the Accept headers. | Rare; strict content negotiation. |
| 407 | Proxy Authentication Required Client error | Authenticate with the proxy first. | Corporate proxies. |
| 408 | Request Timeout Client error | The server gave up waiting for the request. | Slow clients; browsers retry silently. |
| 409 | Conflict Client error | The request conflicts with the current state. | Duplicate create, version mismatch, edit collisions. |
| 410 | Gone Client error | Permanently removed, and the server knows it. | Tells search engines to drop the URL faster than 404. |
| 411 | Length Required Client error | Content-Length header missing. | Some servers for chunked uploads. |
| 412 | Precondition Failed Client error | An If-* condition failed. | Optimistic concurrency with ETags (If-Match). |
| 413 | Content Too Large Client error | Body exceeds the limit. | nginx client_max_body_size, upload limits. |
| 414 | URI Too Long Client error | The URL exceeds the limit (typically 8 KB). | Huge GET query strings; use POST. |
| 415 | Unsupported Media Type Client error | The Content-Type is not supported. | Sending form data where JSON is expected. |
| 416 | Range Not Satisfiable Client error | The Range header is outside the file. | Broken resumable downloads. |
| 417 | Expectation Failed Client error | The Expect header cannot be met. | Old proxies with Expect: 100-continue. |
| 418 | I'm a teapot Client error | April Fools RFC 2324. | Easter eggs; some sites use it to reject bots. |
| 421 | Misdirected Request Client error | Sent to a server that cannot produce a response for this host. | HTTP/2 connection reuse across hostnames with the wrong certificate. |
| 422 | Unprocessable Content Client error | Syntactically valid but semantically wrong. | Validation errors in REST APIs (Rails, Laravel, GitHub). |
| 423 | Locked Client error | WebDAV: resource is locked. | |
| 424 | Failed Dependency Client error | WebDAV: a previous request failed. | |
| 425 | Too Early Client error | The server will not process a request that might be replayed (TLS 1.3 0-RTT). | |
| 426 | Upgrade Required Client error | Switch to a different protocol. | Forcing TLS or HTTP/2. |
| 428 | Precondition Required Client error | The request must be conditional. | APIs enforcing If-Match to prevent lost updates. |
| 429 | Too Many Requests Client error | Rate limit hit; Retry-After says when to try again. | API throttling, login brute-force protection, Cloudflare rate limiting. |
| 431 | Request Header Fields Too Large Client error | Headers exceed the limit. | Huge cookies. |
| 451 | Unavailable For Legal Reasons Client error | Blocked by a legal demand. | Geo-blocking for GDPR, court orders. |
| 500 | Internal Server Error Server error | The server hit an unexpected error. | Uncaught exceptions, misconfiguration. Check the server logs, not the browser. |
| 501 | Not Implemented Server error | The server does not support the method. | Rare; PATCH on old servers. |
| 502 | Bad Gateway Server error | A proxy got an invalid response from the upstream. | App server crashed or not listening; nginx/HAProxy/Cloudflare in front of a dead backend. |
| 503 | Service Unavailable Server error | Temporarily unable to handle the request. | Maintenance, overload, all backends down. Send Retry-After. |
| 504 | Gateway Timeout Server error | The upstream did not answer in time. | Slow backend behind a proxy (proxy_read_timeout, Cloudflare’s 100 s limit). |
| 505 | HTTP Version Not Supported Server error | The HTTP version is not supported. | Rare. |
| 507 | Insufficient Storage Server error | WebDAV: out of space. | |
| 508 | Loop Detected Server error | WebDAV: infinite loop. | |
| 510 | Not Extended Server error | Further extensions required. | Rare. |
| 511 | Network Authentication Required Server error | Log in to the network first. | Captive portals in hotels and airports. |
| 520 | Cloudflare: Unknown Error Cloudflare | The origin returned something Cloudflare could not interpret (empty reply, invalid headers, > 16 KB headers). | Origin resets the connection or sends garbage. |
| 521 | Cloudflare: Web Server Is Down Cloudflare | Cloudflare could not connect to the origin on the port. | Origin firewall blocking Cloudflare IPs, web server stopped. |
| 522 | Cloudflare: Connection Timed Out Cloudflare | TCP handshake with the origin timed out. | Origin overloaded or unreachable, wrong DNS IP. |
| 523 | Cloudflare: Origin Is Unreachable Cloudflare | No route to the origin. | Wrong IP in DNS, origin network down. |
| 524 | Cloudflare: A Timeout Occurred Cloudflare | TCP connected but the origin did not send a response within 100 seconds. | Slow scripts, long reports, big uploads; move the work async. |
| 525 | Cloudflare: SSL Handshake Failed Cloudflare | TLS handshake with the origin failed. | Full (strict) mode without a valid origin certificate, cipher mismatch. |
| 526 | Cloudflare: Invalid SSL Certificate Cloudflare | Origin certificate not trusted (Full strict). | Self-signed origin cert; use a Cloudflare Origin Certificate. |
| 530 | Cloudflare: Origin DNS Error / 1xxx Cloudflare | Returned with a 1xxx error code in the body. | Tunnel down, DNS error, bans. |