Status Code 502
Bad Gateway
The server was acting as a gateway or proxy and received an invalid response from the upstream server.
Category
Server ErrorSpec URL
502 of RFC 9110Popularity
common
Recommended
Yes
Deprecated
No
Common Use Case
Proxy/load balancer upstream errors
Notes
Standard response for invalid responses from upstream servers.
RFC Reference
Description
The server was acting as a gateway or proxy and received an invalid response from the upstream server.
A typical server response for a 502 Bad Gateway status code looks like:
HTTP/1.1 502 Bad Gateway
Date: Sun, 22 Mar 2026 12:00:00 GMT
Server: httperrors.com
Content-Type: application/json
{
"error": {
"code": 502,
"message": "Bad Gateway"
}
}This status code is in the server error family, which signals that the request may have been valid but the server could not safely or correctly finish the work.
Historically, HTTP 502 Bad Gateway should be read in light of RFC 9110. Standards text tends to focus on precise semantics, while production systems care about retries, user experience, dashboards, proxies, browsers, and documentation. Good engineering joins those two views instead of choosing one over the other. When teams treat a status code as both a protocol message and a product decision, they produce APIs and pages that are easier to operate and easier to trust.
A practical reading of this entry is that the server is communicating something very specific: The server was acting as a gateway or proxy and received an invalid response from the upstream server. In day-to-day work, that meaning should be reflected across controllers, reverse proxies, API gateways, and frontend assumptions. If the server sends HTTP 502, but the response body, cache headers, or application behavior tell a different story, client code starts compensating for inconsistency and the whole stack becomes harder to reason about.
Because HTTP 502 sits in the server error category, developers should think about how the code interacts with frontend behavior, backend instrumentation, CDN layers, and search engine crawlers. A status code is never just a number in the network tab; it becomes part of your application's public contract.
Well-run systems also distinguish between retryable and non-retryable failures. Even when clients see the same family of server errors, your infrastructure should know whether the incident is transient, upstream, or application-specific.
In implementation terms, HTTP 502 Bad Gateway should appear at a deliberate decision point in your request handling code. Avoid choosing it late as a cosmetic label after the rest of the response is already formed. Clients may consider retry logic, but servers should still pair retries with idempotency safeguards and clear observability. If your logs show this status frequently, the surrounding context should make it obvious whether the response reflects normal traffic or a design problem.
The example attached to this code, Proxy/load balancer upstream errors, helps anchor the status in a real workflow. That matters because status codes become easier to remember when they are associated with an operational scenario rather than memorized in isolation.
A useful way to compare HTTP 502 is against other 5xx responses that point to different failure domains. Grouping every incident under a generic server error makes it harder to reason about real reliability patterns. This is one reason protocol precision pays off over time: the better your status taxonomy, the easier it becomes to debug client behavior, build metrics, and explain edge cases to other engineers.
From an operational perspective, HTTP 502 should be visible in logs, metrics, and alerts with enough surrounding metadata to explain why it happened. Popularity for this entry is listed as common, and that should influence how much defensive documentation and monitoring you add. Because the code is common, it is worth distinguishing healthy uses from suspicious spikes so routine traffic is not mistaken for a regression.
Server error responses are one of the fastest ways to damage crawler confidence because they suggest instability on the origin. If they happen repeatedly, crawlers often reduce crawl frequency and may remove pages from the index until the failures stop. For HTTP 502, the operational takeaway is that status correctness supports SEO indirectly by making crawl behavior more predictable. Pages, APIs, and edge routes should return this code only when its meaning is exactly true.
Since this code is marked as recommended, teams can confidently use it when the semantics are an exact match. The key word is exact. Recommendation does not mean convenience; it means the code is a strong standard choice when the surrounding conditions line up.
Because this code is not deprecated, it remains part of the active vocabulary that modern web systems can use. Even so, correctness still depends on discipline. A valid status code becomes harmful if teams reuse it as shorthand for several unrelated situations.
Popularity is marked as common, which is a useful implementation signal. A common code usually has better client-library support, stronger operator familiarity, and fewer surprises in logs, dashboards, and browser tooling. A rare code can still be the correct choice, but it should be selected intentionally.
The best way to think about HTTP 502 Bad Gateway is not as trivia, but as a promise. It tells the caller what happened, what should happen next, and how much confidence the client can place in the current response. The example recorded for this entry is Proxy/load balancer upstream errors, and the note says Standard response for invalid responses from upstream servers.. Together with the specification link at https://datatracker.ietf.org/doc/html/rfc9110#section-15.6.3, those details give implementers enough context to use the code intentionally rather than mechanically. That is the standard worth aiming for in production systems.
Other HTTP status codes in the Server Error category
A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.
Unhandled exceptions, server crashes
The server either does not recognize the request method, or it lacks the ability to fulfil the request.
Unsupported HTTP methods
The server cannot handle the request because it is overloaded or down for maintenance.
Server maintenance, overload
The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.
Upstream server timeout
The server does not support the HTTP protocol version used in the request.
Client using unsupported HTTP version
Transparent content negotiation for the request results in a circular reference.
Content negotiation configuration error
The server is unable to store the representation needed to complete the request.
WebDAV server storage full
The server detected an infinite loop while processing the request.
WebDAV binding loops
Further extensions to the request are required for the server to fulfil it.
HTTP Extension Framework
The client needs to authenticate to gain network access.
Captive portal authentication