The
Accept-Encoding
request HTTP header advertises which content encoding, usually a compression algorithm, the client is able to understand. Using content negotiation, the server selects one of the proposals, uses it and informs the client of its choice with the
Content-Encoding
response header.Even if both the client and the server supports the same compression algorithms, the server may choose not to compress the body of a response, if the identity value is also acceptable. Two common cases lead to this:
- The data to be sent is already compressed and a second compression won't lead to smaller data to be transmitted. This may the case with some image formats;
- The server is overloaded and cannot afford the computational overhead induced by the compression requirement. Typically, Microsoft recommends not to compress if a server use more than 80 % of its computational power.
As long as the
identity
value, meaning no encoding, is not explicitly forbidden, by an identity;q=0
or a *;q=0
without another explicitly set value for identity, the server must never send back a 406
Not Acceptable
error.| Header type | Request header |
|---|---|
| Forbidden header name | yes |
Syntax
Accept-Encoding: gzip Accept-Encoding: compress Accept-Encoding: deflate Accept-Encoding: br Accept-Encoding: identity Accept-Encoding: * // Multiple algorithms, weighted with the quality value syntax: Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5
Directives
gzip- A compression format using the Lempel-Ziv coding (LZ77), with a 32-bit CRC.
compress- A compression format using the Lempel-Ziv-Welch (LZW) algorithm.
deflate- A compression format using the zlib structure, with the deflate compression algorithm.
br- A compression format using the Brotli algorithm.
identity- Indicates the identity function (i.e. no compression, nor modification). This value is always considered as acceptable, even if not present.
*- Matches any content encoding not already listed in the header. This is the default value if the header is not present. It doesn't mean that any algorithm is supported; merely that no preference is expressed.
;q=(qvalues weighting)- Any value is placed in an order of preference expressed using a relative quality values called weight.
Examples
Accept-Encoding: gzip
Accept-Encoding: gzip, compress, br
Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1
Specifications
| Specification | Title |
|---|---|
| RFC 7231, section 5.3.4: Accept-Encoding | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context |
Browser compatibility
| Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Servo |
|---|---|---|---|---|---|---|---|
| Accept-Encoding | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
See also
- HTTP content negotiation
- Header with the result of the content negotiation:
Content-Encoding - Other similar headers:
TE,Accept,Accept-Charset,Accept-Language




