> ## Documentation Index
> Fetch the complete documentation index at: https://docs.driver.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Location, timezone and language

> Pass a country; the network, timezone and language agree. Override timezone and language only within that country.

Pass a two-letter `country` and the session runs on a machine egressing from that country, with a timezone and browser language that belong there. The three always agree, which is what sites check. Default `US`.

<CodeGroup>
  ```json Request theme={"dark"}
  { "country": "DE" }
  ```

  ```typescript TypeScript theme={"dark"}
  const session = await createSession({ country: "DE" });
  ```

  ```python Python theme={"dark"}
  session = create_session(country="DE")
  ```
</CodeGroup>

## Overriding timezone and language

Set `timezone` (IANA name) or `language` (BCP-47) when the country's default isn't what you want. Both must come from that country's lists on [Countries](/docs/options/countries), or the request is a `400`: `Unsupported timezone "Europe/Berlin" for country US.` An unknown `country` fails the same way: `Unsupported country "XX".` Without `timezone`, you get the country's dominant zone, and where Driver runs a managed network there, traffic is routed through that region so the network and the clock agree.

```json theme={"dark"}
{ "country": "CA", "timezone": "America/Vancouver", "language": "fr-CA" }
```

US sessions are always `en-US`; any other `language` is rejected. Elsewhere, leaving `language` out gets the country's primary language. Chrome reports the nearest variant it ships: `fr-CA` came back as `navigator.language` `fr-FR`, with `fr` and `en-US` as fallbacks.

`Accept-Language` follows the same choice. A `de-DE` session sends `de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7`.

Hosted sessions get matching text-to-speech voices where available; where none exists, Web Speech is disabled so that surface can't contradict the rest.

## With your own proxy

A `proxyUrl` without `timezone` or `language` makes Driver geolocate the proxy's exit and derive country and timezone from it. A `country` you pass must match that exit. See [Proxies](/docs/options/proxies).

## Availability

No free machine in the requested country is a `503` with `Retry-After: 2`. Back off with a cap, then tell the user or pick another country.

## Related

* [Countries](/docs/options/countries): every supported country with its timezones and languages
* [Browser types](/docs/options/browser-types)
* [Best practices](/docs/start/best-practices): don't override timezone or locale from your script
