---
title: Accept-Language
summary: null
url: >-
  https://www.fastly.com/documentation/reference/http/http-headers/Accept-Language
---

The Accept-Language request HTTP header indicates the natural language and locale that the client prefers. The server uses content negotiation to select one of the proposals and informs the client of the choice with the `Content-Language` response header. Browsers set required values for this header according to their active user interface language.

> **HINT:** `Accept`, `Accept-Encoding` and `Accept-Language` are designed to allow for [content negotiation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation).  For content negotiation to work properly on content served through Fastly, the `Vary` header must be correctly set.  See our blog post [Getting the most out of Vary with Fastly](https://www.fastly.com/blog/getting-most-out-vary-fastly) for a discussion of the best practices and patterns that you may find useful.

Fastly ignores this header but preserves it on requests.  Origin servers that take notice of the value of `Accept-Language` on any request to a given URL and respond with content in a language matching that requested must include a `Vary: Accept-Language` on all responses for requests to that same URL.  This enables Fastly to store each language version of the content separately and ensure each user receives the right language.

## Normalization

The number of possible permutations of `Accept-Language` values is very large, and if responses include `Vary: Accept-Language`, cache performance may noticably decline.  Normalizing the value of `Accept-Language` on inbound requests can dramatically improve cache hit ratios in this situation.

Fastly does not normalize `Accept-Language` by default, but we provide utilities to make it easy to do so in VCL services.  See `accept.language_lookup` and `accept.language_filter_basic` for more details.
