599 Network Connect Timeout Error 5xx
A non-standard status code, sometimes used by proxies and load balancers to indicate the connection to an upstream server timed out.
What does 599 mean?
599 Network Connect Timeout Error is a non-standard status code, used by some proxies, load balancers, and HTTP client libraries to indicate that a connection attempt to an upstream server timed out — distinct from 504 (Gateway Timeout), which is specifically about timing out while waiting for a response after a connection was already established.
599 represents an even earlier failure point: the connection itself — the TCP handshake, or establishing a connection within a configured time limit — never successfully completed. The request was never even sent in any meaningful sense, because there was no connection to send it over.
How 599 "behaves"
- It's most commonly seen in proxy/load-balancer logs or HTTP client library error reporting, rather than as a response a typical end-user would directly encounter
- It represents a connection-establishment failure, not a response-content or response-timing issue with an established connection
- Different tools/libraries may use 599 differently — since it's non-standard, its exact meaning can vary slightly depending on the specific software reporting it; the common thread is "couldn't establish a connection within the timeout"
Common causes
If you're operating the infrastructure:
- The upstream server (the one your proxy/load balancer is trying to reach) is down, unreachable, or not accepting connections (e.g., the listening process has crashed, or a firewall is blocking the connection)
- Network-level issues between the proxy and the upstream — routing problems, DNS resolution failures, or network partitions
- The upstream server is so overloaded it's not accepting new connections at all (distinct from accepting a connection but being slow to respond, which would more likely produce 504)
If you're calling an API (and your HTTP client reports 599):
- The target server/host is unreachable — check DNS resolution, network connectivity, and whether the target server is actually running and listening on the expected port
- A firewall (yours, the target's, or something in between) is blocking the connection
- The target server is experiencing a severe outage where it's not even accepting connections, as opposed to accepting connections but responding slowly
If you're a website visitor:
- Extremely unlikely to see "599" directly — you'd more likely see a generic browser connection error ("can't reach this site," "connection timed out") without any HTTP status code at all, since 599 is more of an internal proxy/client-library reporting convention than something rendered to end users
How to fix it
As an API/infrastructure operator:
- Check whether the upstream server is actually running and accepting connections — this is a more fundamental check than checking response times, since 599 indicates the connection itself never succeeded
- Verify network connectivity and DNS resolution between the proxy/load balancer and the upstream server
- Check firewall rules — connections being actively blocked (rather than just slow) would manifest this way
As an API consumer:
- If your HTTP client reports 599, this points to a connectivity issue reaching the target server entirely — distinct from the target server being slow (which would more likely manifest as a timeout after connecting, like 504, or a client-side read-timeout error)
- Verify the target host/port is correct and reachable from your network — try basic connectivity tests (can you reach the host at all?) separate from the specific HTTP request
As a website visitor:
- Try again later — if a site is completely unreachable (not just slow), this often indicates a significant outage on their end
- Check whether the issue is specific to this site or affects your connectivity generally (try other sites) to rule out your own network as the cause
599 vs 504 vs 502
| 599 Network Connect Timeout | 504 Gateway Timeout | 502 Bad Gateway | |
|---|---|---|---|
| Standard? | No | Yes | Yes |
| What failed | The connection itself never established | A connection was established, but the response didn't arrive in time | A connection attempt got an invalid response (or immediate refusal) |
| Typical cause | Upstream completely unreachable/down | Upstream reachable but too slow to respond | Upstream reachable but returned something invalid, or refused quickly |
Real-world examples
Some HTTP client libraries and proxy software use 599 (or codes in the 59x range generally) as internal conventions for categorizing different kinds of network-level failures that occur before receiving any HTTP response — useful for distinguishing "couldn't even connect" from "connected but got an error response" in logs/monitoring, even though neither scenario involves an actual HTTP response with this status code being sent anywhere.
SEO implications
If search engine crawlers experience connection-level failures (the equivalent of what 599 represents) when trying to reach a site — as opposed to receiving any HTTP response, even an error one — this is treated similarly to other severe availability issues, potentially affecting crawl frequency and indexing if persistent, since from the crawler's perspective the site appears completely unreachable rather than merely returning errors.
FAQ
Is 599 something I'd see in a browser?
Very unlikely as literally "599" — browsers typically show generic connection-error messages ("can't reach this site") for connection-level failures, without surfacing a specific status code, since no HTTP response (with any status code) was actually received.
What's the key difference between 599 and 504?
599 means the connection to the upstream server never succeeded at all. 504 means a connection was established, but the response took too long to arrive after that. They represent different stages of failure — 599 earlier (connecting), 504 later (waiting for a response after connecting).
Why would different tools report 599 differently?
Because it's non-standard — there's no official specification dictating exactly what 599 means or when it should be used, so different proxy/client-library implementations have adopted it somewhat independently for "connection-level timeout/failure" scenarios, with potentially subtle differences in exact triggering conditions.
If my monitoring shows 599 errors, where should I look first?
Start with basic connectivity — is the target server running, listening on the expected port, and reachable over the network (DNS resolution, firewall rules, routing)? 599 points to a more fundamental issue than "the server is slow," so connectivity-level checks are the right starting point.
Is 599 related to DNS issues?
DNS resolution failures could certainly contribute to a connection never being established (if the hostname can't be resolved to an IP at all, there's nothing to connect to) — depending on the specific tool, this might be categorized under 599 or reported as a distinct DNS-specific error, again varying by implementation since there's no standard governing this.
Fun fact
599 sits at the very edge of the entire HTTP status code numbering space (the 5xx range officially runs up to 599 as its conceptual ceiling) — and fittingly, it's used by some tools to represent failures that occur at the very edge of what "HTTP" even covers: situations where the network connection that HTTP itself depends on never came together in the first place, making it almost a symbolic "off the map" code for "this failed before HTTP could even begin."