Status Code 506

Variant Also Negotiates

Transparent content negotiation for the request results in a circular reference.

Details

Category

Server Error

Popularity

rare

Recommended

No

Deprecated

No

Common Use Case

Content negotiation configuration error

Notes

Indicates a circular reference in content negotiation.

RFC Reference

RFC 2295 Transparent Content Negotiation in HTTP (1998)
Describes content negotiation mechanisms in HTTP.

Description

Transparent content negotiation for the request results in a circular reference.

HTTP Response Example

A typical server response for a 506 Variant Also Negotiates status code looks like:

HTTP/1.1 506 Variant Also Negotiates
Date: Sun, 22 Mar 2026 12:00:00 GMT
Server: httperrors.com
Content-Type: application/json

{
  "error": {
    "code": 506,
    "message": "Variant Also Negotiates"
  }
}
Detailed Explanation

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 506 Variant Also Negotiates should be read in light of RFC 2295. 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: Transparent content negotiation for the request results in a circular reference. In day-to-day work, that meaning should be reflected across controllers, reverse proxies, API gateways, and frontend assumptions. If the server sends HTTP 506, 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.

The supporting note for this entry is also important: Indicates a circular reference in content negotiation. This often captures the gap between the formal specification and day-to-day engineering practice.

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 506 Variant Also Negotiates 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 normative anchor here is RFC 2295, with a direct reference at https://datatracker.ietf.org/doc/html/rfc2295#section-8.2. That RFC context matters because the exact words in the standard often settle edge cases around caching, retries, authentication, payload requirements, or intermediary behavior.

A useful way to compare HTTP 506 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 506 should be visible in logs, metrics, and alerts with enough surrounding metadata to explain why it happened. Popularity for this entry is listed as rare, and that should influence how much defensive documentation and monitoring you add. Because the code is relatively rare, every occurrence is a stronger signal that engineers and support teams will need extra context.

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 506, 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 not marked as recommended, it should usually be treated as a specialist tool rather than a default answer. That does not make it wrong. It means the burden of proof is higher: engineers should be able to explain why this code communicates the situation better than a more conventional alternative.

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.

HTTP 506 Variant Also Negotiates is not marked as deprecated, which means it remains relevant for current systems so long as its semantics map cleanly to the behavior your endpoint is actually delivering.

The best way to think about HTTP 506 Variant Also Negotiates 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 Content negotiation configuration error, and the note says Indicates a circular reference in content negotiation.. Together with the specification link at https://datatracker.ietf.org/doc/html/rfc2295#section-8.2, 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

500 Internal Server Error

A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.

Reference: RFC 9110
Example usage:
Unhandled exceptions, server crashes
Server Error
501 Not Implemented

The server either does not recognize the request method, or it lacks the ability to fulfil the request.

Reference: RFC 9110
Example usage:
Unsupported HTTP methods
Server Error
502 Bad Gateway

The server was acting as a gateway or proxy and received an invalid response from the upstream server.

Reference: RFC 9110
Example usage:
Proxy/load balancer upstream errors
Server Error
503 Service Unavailable

The server cannot handle the request because it is overloaded or down for maintenance.

Reference: RFC 9110
Example usage:
Server maintenance, overload
Server Error
504 Gateway Timeout

The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.

Reference: RFC 9110
Example usage:
Upstream server timeout
Server Error
505 HTTP Version Not Supported

The server does not support the HTTP protocol version used in the request.

Reference: RFC 9110
Example usage:
Client using unsupported HTTP version
Server Error
507 Insufficient Storage

The server is unable to store the representation needed to complete the request.

Reference: RFC 4918
Example usage:
WebDAV server storage full
Server Error
508 Loop Detected

The server detected an infinite loop while processing the request.

Reference: RFC 5842
Example usage:
WebDAV binding loops
Server Error
510 Not Extended

Further extensions to the request are required for the server to fulfil it.

Reference: RFC 2774
Example usage:
HTTP Extension Framework
Server Error
511 Network Authentication Required

The client needs to authenticate to gain network access.

Reference: RFC 6585
Example usage:
Captive portal authentication
Server Error

HTTP status code data sourced from official IETF RFCs and standards.

© 2026 The open source reference for HTTP status codes