100 Continue Standard
Interim response: the server will accept the body the client announced with Expect: 100-continue.
Common causes Clients such as curl send Expect: 100-continue before large uploads.
RFC 9110 15.2.1
Tools / Network
Type a code (502), a class (4xx) or a word (timeout).
What you type is calculated only in your browser and is not sent to a server.
Interim response: the server will accept the body the client announced with Expect: 100-continue.
Common causes Clients such as curl send Expect: 100-continue before large uploads.
RFC 9110 15.2.1
The server switches to the protocol named in the Upgrade header.
Common causes Opening a websocket connection (Upgrade: websocket).
proxy_http_version 1.1 and the Upgrade / Connection headers passed on.RFC 9110 15.2.2
Interim WebDAV response: the request is still being processed.
Common causes Long-running WebDAV operations; rarely seen today.
RFC 2518
Interim response carrying Link headers so the browser can preload resources before the final response.
Common causes CDNs and servers that send preload hints.
early_hints directive.RFC 8297
Temporary registration for resumable uploads: the server supports resuming this upload.
Common causes Servers implementing the resumable-upload draft.
draft-ietf-httpbis-resumable-upload-05
The request succeeded.
RFC 9110 15.3.1
A new resource was created, usually named in the Location header.
Common causes POST or PUT to an API that creates something.
RFC 9110 15.3.2
Accepted for processing, but not finished yet.
Common causes Asynchronous jobs and queues.
RFC 9110 15.3.3
Success, but a transforming proxy changed the content from the origin’s 200 response.
Common causes Proxies that rewrite responses.
RFC 9110 15.3.4
Success with no body.
Common causes DELETE or PUT APIs, CORS preflight (OPTIONS) replies.
RFC 9110 15.3.5
Success; the client should reset the document view (for example clear a form).
Common causes Rare.
RFC 9110 15.3.6
Only the byte range asked for with Range is sent.
Common causes Video streaming, resumed downloads (curl -C -).
RFC 9110 15.3.7
WebDAV: the body holds a separate status for each of several resources.
Common causes WebDAV clients (PROPFIND).
RFC 4918
WebDAV: members already listed earlier in the same multi-status response are not repeated.
Common causes WebDAV bindings.
RFC 5842
The response is a delta (instance manipulation) of the current resource.
Common causes Delta encoding; rare.
RFC 3229
Several representations are available; the client may choose.
Common causes Rare.
RFC 9110 15.4.1
Permanent redirect to the URL in Location. Clients may change POST to GET when following.
Common causes HTTP → HTTPS, www → bare domain, moved pages.
return 301 … or rewrite … permanent.redirect with code 301.RFC 9110 15.4.2
Temporary redirect to Location. Clients may change POST to GET when following.
Common causes Login redirects, temporary moves.
return 302 … or rewrite … redirect.redirect with code 302 (the default).RFC 9110 15.4.3
Fetch the result from Location with GET.
Common causes Post/redirect/get after a form submission.
redirect with code 303.RFC 9110 15.4.4
The cached copy is still valid; no body is sent.
Common causes Conditional requests with If-None-Match or If-Modified-Since.
RFC 9110 15.4.5
Deprecated: access through a proxy.
Common causes Not used.
RFC 9110 15.4.6
Reserved; was used in an earlier draft and is no longer used.
RFC 9110 15.4.7
Temporary redirect that keeps the method and body.
Common causes HSTS internal redirects in browsers, API moves.
redirect with code 307.RFC 9110 15.4.8
Permanent redirect that keeps the method and body.
Common causes Moved API endpoints.
redirect with code 308.RFC 9110 15.4.9
The server cannot process the request because it is malformed.
Common causes Broken syntax or JSON, invalid headers, oversized headers or cookies.
large_client_header_buffers buffer (page “Request Header Or Cookie Too Large”, internally 494), plain HTTP sent to an HTTPS port (internally 497), client-certificate errors (495 · 496).RFC 9110 15.5.1
Authentication is required or failed; the response carries WWW-Authenticate.
Common causes Missing or wrong credentials, expired tokens.
auth_basic without valid credentials.RFC 9110 15.5.2
Reserved for future use.
Common causes Some APIs use it for billing limits.
RFC 9110 15.5.3
The server understood the request but refuses it.
Common causes Access rules, file permissions, blocked by a firewall or WAF.
deny rules, files nginx cannot read, or a directory without an index file and autoindex off.http-request deny rule.RFC 9110 15.5.4
The resource does not exist (or the server will not say it does).
Common causes Wrong path, deleted page, wrong root or routing.
RFC 9110 15.5.5
The method is not allowed for this resource; the response lists allowed ones in Allow.
Common causes POST to a static file, wrong verb for an API route.
RFC 9110 15.5.6
No representation matches the Accept* headers.
Common causes Strict content negotiation.
RFC 9110 15.5.7
A proxy needs credentials (Proxy-Authenticate).
Common causes Corporate proxies.
RFC 9110 15.5.8
The server gave up waiting for the complete request.
Common causes Slow or stalled clients, idle keep-alive connections.
client_header_timeout or client_body_timeout expired.RFC 9110 15.5.9 · Manual: Read a HAProxy log line — status code and termination state
The request conflicts with the current state of the resource.
Common causes Edit conflicts, duplicate keys, version mismatches.
RFC 9110 15.5.10
The resource is gone permanently.
Common causes Deliberately removed pages or API versions.
RFC 9110 15.5.11
The server requires a Content-Length header.
Common causes Bodies sent without a length.
RFC 9110 15.5.12
A condition in If-Match / If-Unmodified-Since was false.
Common causes Optimistic locking with ETags.
RFC 9110 15.5.13
The request body is larger than the server accepts.
Common causes Big uploads or JSON bodies over a size limit.
client_max_body_size (default 1m).h1-accept-payload-with-any-method).RFC 9110 15.5.14
The request URI is longer than the server accepts.
Common causes Huge query strings, redirect loops that keep appending parameters.
large_client_header_buffers buffer.RFC 9110 15.5.15
The body format (Content-Type or Content-Encoding) is not supported.
Common causes Sending JSON without Content-Type: application/json, or form data to a JSON API.
RFC 9110 15.5.16
The requested byte range is outside the resource.
Common causes Resuming a download of a file that changed or shrank.
RFC 9110 15.5.17
The server cannot meet the Expect header.
Common causes Expect: 100-continue to servers or proxies that refuse it.
RFC 9110 15.5.18
Reserved. Known as “I’m a teapot” from the April Fools’ RFC 2324; RFC 9110 reserves it so it is not assigned.
Common causes Joke or easter-egg responses.
RFC 9110 15.5.19
The request reached a server that cannot answer for this host.
Common causes Reused HTTP/2 connections for another hostname, SNI and Host mismatch.
RFC 9110 15.5.20
The syntax is fine but the content cannot be processed.
Common causes Validation errors in APIs.
RFC 9110 15.5.21
WebDAV: the resource is locked.
Common causes Files locked by another client.
RFC 4918
WebDAV: the action failed because another action it depended on failed.
RFC 4918
The server will not process a request that might be replayed (TLS early data).
Common causes TLS 1.3 0-RTT requests.
RFC 8470
The client must switch to another protocol named in Upgrade.
RFC 9110 15.5.22
The server requires a conditional request (If-Match).
Common causes APIs that prevent lost updates.
RFC 6585
Rate limit exceeded; Retry-After may say when to retry.
Common causes API quotas, bots, retry storms.
limit_req_status 429 (the default is 503).RFC 6585
Header fields are too large.
Common causes Huge cookies or tokens.
RFC 6585
nginx closes the connection without sending anything (return 444;). It appears only in nginx’s access log.
Common causes Blocking unwanted hosts or scanners. The client sees an empty reply (curl: “Empty reply from server”).
nginx: ngx_http_rewrite_module · ngx_http_request.h
Blocked for legal reasons.
Common causes Court orders, regional restrictions.
RFC 7725
nginx’s internal code for a request header larger than one large_client_header_buffers buffer. The client gets 400; error_page 494 can catch it.
Common causes Large cookies or tokens.
nginx: ngx_http_request.h
An error occurred while verifying the client certificate. Sent to the client as 400; usable with error_page.
Common causes Mutual TLS with an invalid or untrusted client certificate.
nginx: ngx_http_ssl_module · ngx_http_special_response.c
The client did not present a required certificate. Sent to the client as 400; usable with error_page.
Common causes ssl_verify_client on without a client certificate.
nginx: ngx_http_ssl_module · ngx_http_special_response.c
A plain HTTP request was sent to an HTTPS port. Sent to the client as 400; error_page 497 https://$host$request_uri; redirects it.
Common causes http://example.com:443/, wrong port in a proxy or health check.
nginx: ngx_http_ssl_module · ngx_http_special_response.c
The client closed the connection before nginx sent the response header. Logged only; nothing is sent.
Common causes Client or upstream-proxy timeouts shorter than a slow backend, users leaving the page. Cloudflare logs it too.
nginx: ngx_http_request.h
A generic server-side failure.
Common causes Application exceptions, misconfiguration.
RFC 9110 15.6.1 · Manual: Find which paths return 5xx in an Nginx access log
The server does not support the functionality needed (for example the method).
Common causes Unknown methods or transfer codings.
RFC 9110 15.6.2
A proxy or gateway got an invalid response (or none) from the upstream server.
Common causes Backend down, connection refused, crashed app, oversized upstream headers.
connect() failed (111: Connection refused), upstream prematurely closed connection, upstream sent too big header, no live upstreams.http-response deny rule matched.RFC 9110 15.6.3 · Manual: Tell the cause of an Nginx 502 Bad Gateway from error.log
The server cannot handle the request right now; Retry-After may say when.
Common causes Overload, maintenance, no healthy backend, rate limiting.
limit_req and limit_conn reject with 503 by default (limit_req_status).monitor fail.RFC 9110 15.6.4 · Manual: Read a HAProxy log line — status code and termination state
A proxy or gateway did not get a response from the upstream server in time.
Common causes Slow backend queries, long jobs, network problems.
upstream timed out in error.log — the backend did not answer within proxy_read_timeout (default 60s) or the connect timeout.RFC 9110 15.6.5 · Manual: Read a HAProxy log line — status code and termination state
The HTTP version of the request is not supported.
Common causes Garbage on the connection, non-HTTP clients.
RFC 9110 15.6.6
Content-negotiation misconfiguration: the chosen variant negotiates again.
Common causes Rare.
RFC 2295
WebDAV: not enough storage to complete the request.
Common causes Full disks or quotas on WebDAV servers.
RFC 4918
WebDAV: an infinite loop was detected while processing.
RFC 5842
Obsolete: further extensions were required.
Common causes Not used.
RFC 2774 · Status change of HTTP experiments to Historic
The client must sign in to the network first.
Common causes Captive portals on public Wi-Fi.
RFC 6585
The origin returned an empty, unknown or unexpected response to Cloudflare.
Common causes Origin crashes, firewalls blocking Cloudflare IPs, headers over 128 KB, responses without a status line, HTTP/2 misconfiguration.
Cloudflare docs: Error 520
The origin refused the connection from Cloudflare.
Common causes Web server not running, Cloudflare IPs blocked, nothing listening on 80 (Flexible) or 443 (Full).
Cloudflare docs: Error 521
Cloudflare timed out contacting the origin: no SYN+ACK within 19 seconds, or no ACK for the request within 90 seconds.
Common causes Firewalls rate-limiting or dropping Cloudflare IPs, overloaded origin, wrong origin IP in DNS.
Cloudflare docs: Error 522
Cloudflare cannot reach the origin — there is no route to its IP.
Common causes Wrong A/AAAA record, routing problems (on AWS, an overly broad route capturing 172.64.0.0/13).
Cloudflare docs: Error 523
Cloudflare connected, but the origin sent no HTTP response within the Proxy Read Timeout (125 s by default).
Common causes Long-running requests, overloaded origin.
Cloudflare docs: Error 524
The TLS handshake between Cloudflare and the origin failed (SSL mode Full or Full (strict)).
Common causes No valid certificate, port 443 closed, no SNI support, no shared cipher suites.
Cloudflare docs: Error 525
Cloudflare cannot validate the origin certificate (SSL mode Full (strict)).
Common causes Expired, self-signed or wrong-name certificate, incomplete chain.
Cloudflare docs: Error 526
Cloudflare cannot resolve the origin hostname; the body contains a 1xxx error code.
Common causes See the 1xxx error in the page (for example 1016 Origin DNS error).
Cloudflare docs: Error 530
This list holds the 64 standard codes of the IANA HTTP Status Code Registry and 14 non-standard codes specific to nginx and Cloudflare. Each code has its IANA name and RFC, its meaning, common causes, and — as written in each vendor’s official documentation — when nginx, HAProxy or Cloudflare sends it. Search by code, class (4xx) or word, and use the buttons to keep one class or vendor.
| Search | Result |
|---|---|
502 | Bad Gateway — in nginx the error.log line (connect() failed (111: Connection refused) and others) tells the cause |
499 | nginx only — the client closed the connection before the response; logged only |
522 | Cloudflare only — no TCP connection to the origin within 19 seconds |
418 | The IANA name is (Unused) — “I’m a teapot” comes from the April Fools’ RFC 2324 |
599 | Unassigned in the IANA registry — no standard meaning |
The 64 assigned codes of the registry CSV downloaded from IANA were compared character by character (code, name, reference), along with the 11 unassigned ranges, and the vendor codes were checked not to overlap the registry — all matched. The nginx codes rest on the nginx source (ngx_http_request.h, ngx_http_special_response.c) and nginx.org documentation, HAProxy on the “status codes HAProxy may emit by itself” table of its configuration manual, and Cloudflare on its per-error documentation.
curl -sS -o /dev/null -w '%{http_code}\n' https://example.com/ prints only the status code. Add -I or -i to see headers and -L to follow redirects.
They are internal nginx codes; the client receives 400 with a reason page (for example “Request Header Or Cookie Too Large”). They exist so you can catch the case with error_page, such as error_page 497 https://$host$request_uri;.
No. The whole list is in this page and search runs in your browser. The search text is not sent to a server, the address bar, the visitor statistics or the ads. Details are on the privacy page.