The 406 error code, Not Acceptable, shows up when your browser or app tells the server which formats, languages or encodings it can handle, and the server has nothing that matches the list. The page may be fine. The two sides simply cannot agree on how to deliver it.
Visitors usually see it in rare cases, such as an old browser, a script blocker or a security filter that reads the request wrongly. Developers hit it much more in API work, where a call names one reply type such as JSON and the server can only give another. The sections below handle both groups in order of ease.
Common causes
1Request asks for a format the server lacks
How to tellAPI call returns 406 and the Accept header lists one type only
What fixes itChange the Accept header to a type the server provides
2Security filter blocks the request
How to tellPlain page works elsewhere but fails on one site's form or search
What fixes itRetry with simple text; owner reviews the firewall rule
3Very old or unusual browser
How to tellWorks in another browser or on another phone
What fixes itUpdate the browser or use a current one
4Add on changes request headers
How to tellPage opens in a private tab without add ons
What fixes itTurn off the add on for that site
5Language or encoding not supported
How to tellAppears after changing the browser language settings
What fixes itReset the browser's language list to default
6App or script sending wrong headers
How to tellApp or tool fails; the same site opens in a browser
What fixes itFix the app version or the headers in your code
How to fix it, step by step
Reload and try once more
Pressing F5 costs nothing. If a filter misread one request, a fresh request often passes.
Load the page in an incognito tab
This starts without add ons and stored settings. If the page loads, one of them was altering what the browser sent.
Try a different browser or phone
If a second browser opens the page, the first has an old version or odd setting. If none opens it, the site's setup is probably at fault.
Install pending updates
On a phone use its store, and on a computer the browser's About page, to fetch the latest build, then test again.
Reset the language setting
In the browser's language settings, keep your main language at the top and remove unusual extras. Then reload the page.
Simplify what you type in a form
Some firewalls block requests that contain symbols, code like text or very long strings. Retry with plain words and no special characters, particularly in search boxes and comment forms.
Tell the site owner
Send the page link, the time and what you did. If it comes from an app, include the app version.
What the 406 error code means
When a client asks for something, it can send headers such as Accept, Accept-Language and Accept-Encoding. These are like a shopping list of what the client can use. A server practising content negotiation compares the list against what it can offer. A 406 means the lists did not meet at any point, and the server decided not to send a different kind of reply anyway.
A developer calls an endpoint asking only for an XML reply, but the service answers with JSON only. The response is 406 Not Acceptable. Adding JSON to the Accept header fixes it.
406 compared with 415 and 400
| Code | Who is the problem about | Example |
|---|---|---|
| 406 | The format you want back | Accept header lists a type the server lacks |
| 415 | The format you sent | Uploading a body type the server rejects |
| 400 | The request is unreadable | Broken syntax |
| 405 | The method you used | Using POST where only GET works |
See 415 Unsupported Media Type, 400 Bad Request and 405 Method Not Allowed.
How to fix HTTP 406 error code in an API
- Look at the
Acceptheader you send and compare it with the types the API documents. - Remove a too narrow value, or use the generic wildcard if the service allows any type.
- Check
Accept-LanguageandAccept-Encodingas well. - Test the same call in a plain tool and compare the headers sent.
- On your own server, make sure a default format exists, so clients with no match still get a reply.
When a firewall causes the 406
On many shared hosts, a security module checks each request against a set of rules. A request that looks like an attack, even if it is only a long comment with quotes, may be rejected with a 406. The page content is not the cause. The owner can check the firewall log for the rule number and whitelist the false match. Visitors can only simplify the text and try again, and the broader steps for web faults are in apps and websites not working.
If a device label shows a code like 406,10025 in a robot or smart gadget's app, that is that product's own number, not this web code. Check its manual or maker's support.
Frequently asked questions
What does error code 406 mean?
It means the server cannot provide a response in any of the formats, languages or encodings the client says it accepts.
How do I fix a 406 error in my browser?
Reload, try a private window, update or switch the browser, reset language settings and simplify what you typed in a form.
Is the 406 error code my fault?
Sometimes. Old software or an add on can cause it. Often the cause is a server rule or a mismatch in an API call that only the developer can fix.
What is the difference between 406 and 415?
A 406 is about the format you asked to receive. A 415 is about the format of the data you sent.
Does a 406 error code mean the page is missing?
No. A missing page gives 404. In a 406 the page may exist, but it cannot be delivered in an acceptable form.