/ HTTP Headers


The Accept-Charset HTTP header is part of the HTTP protocol that allows a client to indicate which character sets it can understand. It plays a crucial role in ensuring correct character encoding for content exchange between client and server.

The Purpose of Accept-Charset

This request header is used in content negotiation, where the client specifies the character sets it can interpret. This is particularly important when handling languages that contain non-ASCII characters.


The Accept-Charset header uses the following syntax:

Accept-Charset: <charset>

Where <charset> denotes the preferred character sets. It’s possible to specify multiple character sets separated by commas. Additionally, you can use quality factors (q) to indicate preference:

Accept-Charset: <charset>, <charset>;q=<quality_factor>

Possible Values

The Accept-Charset header supports a wide variety of character sets. Some common ones include:

  • utf-8
  • iso-8859-1
  • * (any character set)

How it Works: Request and Response

Let’s consider how Accept-Charset operates in a real-world scenario:


Suppose a client can handle UTF-8 and ISO-8859-1 character sets, but prefers UTF-8. It might send a request like this:

GET /document HTTP/1.1
Host: example.com
Accept-Charset: utf-8, iso-8859-1;q=0.9

Here, the client indicates a preference for utf-8 but can also accept iso-8859-1, albeit with a lower preference.


The server uses the Accept-Charset header to select the appropriate character set for the response. If possible, it will deliver the response in the preferred character set.

Here’s an example response to the above request:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>

In this response, the server indicates that it’s sending HTML content encoded using UTF-8. If the server cannot deliver a response in a character set acceptable to the client, it may send a 406 Not Acceptable status code.


The Accept-Charset header is part of the HTTP/1.1 specification and is widely supported across browsers and servers. However, due to UTF-8’s widespread acceptance as a universal character set, the Accept-Charset header is not used as frequently as before.


The Accept-Charset HTTP header plays a vital role in content negotiation, allowing clients to specify which character sets they can handle. This contributes to a smoother, more efficient content exchange between the client and server, especially when dealing with non-ASCII characters. While Accept-Charset may not be as prevalent in modern applications, its proper use can still make a difference in specific use cases.

Was this helpful?

Thanks for your feedback!