HTTP Status Codes

HTTP 406 Not Acceptable

406
LowWeb ServerReference page

Not Acceptable — the server cannot produce a response matching the request headers

A 406 Not Acceptable response appears when the server understands the request but cannot generate a representation that satisfies the client's declared preferences. It is tied to content negotiation, where headers such as Accept or Accept-Language limit which response formats are considered valid. In practice, 406 is less common than related 4xx responses because many applications fall back to a default representation instead of rejecting the request.

Visual summary

A quick reference view of how HTTP 406 works: The client requests a specific format, but the server only has incompatible formats to offer.

HTTP 406 visual summary showing the client requests a specific format, but the server only has incompatible formats to offer.
Visual summary: 406 means the server cannot produce a response in a format acceptable to the client.

What 406 Means

The shortest useful reading of this status code.

Not Acceptable means the server cannot produce a response matching the request headers.

This status falls into the 4xx class, indicating a client-side error outcome for the request.

Quick read

Not Acceptable

the server cannot produce a response matching the request headers

How to fix 406

General informational guidance, not professional advice. Commands can affect your system or data — back up first and proceed at your own risk. FixerCode is an independent reference, not affiliated with any vendor mentioned.

  1. Reproduce the negotiated request

    Send the same Accept header as the failing client and confirm the server is rejecting the requested response format.

    curl -I -H "Accept: application/xml" https://example.com/api/resource
  2. Compare with a supported format

    Use a response format the endpoint normally supports. If this returns a non-406 response, the issue is likely the negotiation header rather than the route.

    curl -I -H "Accept: application/json" https://example.com/api/resource
  3. Review language and charset limits

    Narrow Accept-Language or charset preferences can trigger 406 on strict servers. Compare the failing request with a simpler request that omits those constraints.

  4. Align the response representation

    If the client really needs the requested representation, add that response format server-side. Otherwise, adjust the client to ask for a representation the endpoint can return.

Technical Context

How this status behaves without turning the page into a repair guide.

Standard usage

A 406 response is about representation matching, not about whether the URL exists or whether the request body is valid. The server has enough information to process the request, but it cannot choose a response format that fits the negotiation rules supplied by the client.

Technical nuance

That makes 406 different from 415 and 422. A 415 focuses on an unsupported request media type sent to the server, while a 422 points to content that was parsed successfully but still fails application rules. A 406 instead focuses on the response representation the client is willing to receive.

Related HTTP Codes

Nearby HTTP status codes help clarify how 406 differs inside the same response family.

Common Causes

Unsupported media type requested in the Accept header

A common condition that triggers a 406 response when the web server evaluates the transaction.

Unsupported language or charset preference in the request

A common condition that triggers a 406 response when the web server evaluates the transaction.

Strict content negotiation rules with no acceptable fallback

A common condition that triggers a 406 response when the web server evaluates the transaction.

Typical Scenarios

01

An API request asks for application/xml on an endpoint that only returns JSON

02

A client sends narrow language or charset preferences that the server cannot satisfy

03

A proxy or custom client sets strict Accept headers that exclude the server's default response format

What To Know

A 406 is usually limited to requests with unusually strict Accept, Accept-Language, or related negotiation headers. When only one client or integration sees the error, the difference is often in those request preferences rather than in overall site availability.

Frequently Asked Questions

Common interpretation questions about HTTP 406.

It means the server understood the request but could not return a response in a format that matched the client's declared preferences.

No. A 415 concerns the format of the request sent to the server. A 406 concerns the format of the response the client is willing to accept.

Many applications ignore narrow negotiation preferences and return a default format anyway. A 406 usually appears only when content negotiation is enforced more strictly.