diff --git a/browsers/location.mdx b/browsers/location.mdx
new file mode 100644
index 00000000..60ac612f
--- /dev/null
+++ b/browsers/location.mdx
@@ -0,0 +1,111 @@
+---
+title: "Browser Location"
+description: "Set a browser session's timezone and locale, or use the defaults for its region"
+---
+
+Each browser session has one timezone and one formatting locale. By default, both come from the [region](/browsers/regions) the browser runs in, for example `America/New_York` and `en-US` for a browser in `us-east`. Set either field to override it for the session.
+
+The setting applies across browser contexts, pages, frames, workers, `Intl`, `navigator.language`, `navigator.languages`, and future `Accept-Language` headers. Updating it doesn't restart Chromium or reload pages.
+
+
+Location controls timezone and language behavior. It doesn't set geolocation coordinates, grant geolocation permission, change the system clock, translate browser UI, or guarantee a bot-detection outcome.
+
+
+## Set location when creating a browser
+
+Set either field independently. An omitted field uses the default for the browser's region.
+
+
+```typescript TypeScript
+import Kernel from '@onkernel/sdk';
+
+const kernel = new Kernel();
+const browser = await kernel.browsers.create({
+ location: {
+ timezone: 'Europe/Berlin',
+ locale: 'de-DE',
+ },
+});
+
+console.log(browser.location);
+```
+
+```python Python
+from kernel import Kernel
+
+kernel = Kernel()
+browser = kernel.browsers.create(
+ location={
+ "timezone": "Europe/Berlin",
+ "locale": "de-DE",
+ },
+)
+
+print(browser.location)
+```
+
+
+`timezone` accepts IANA identifiers such as `America/Los_Angeles`. `locale` accepts BCP 47 tags such as `en-US` or `de-DE` that the browser formats dates and numbers for with that exact region. KERNEL normalizes spelling and deprecated codes, so `en-us` becomes `en-US` and `iw-IL` becomes `he-IL`. An unsupported value such as `en-QQ` returns a `400` with code `invalid_browser_location`.
+
+## Update a running browser
+
+Use `browsers.update()` to change the location of a running browser:
+
+
+```typescript TypeScript
+// Set a field to override it. Fields you leave out keep their current value.
+await kernel.browsers.update(browser.session_id, {
+ location: {
+ timezone: 'America/Los_Angeles',
+ locale: 'en-US',
+ },
+});
+
+// Set a field to null to go back to the default for the browser's region.
+await kernel.browsers.update(browser.session_id, {
+ location: { timezone: null },
+});
+```
+
+```python Python
+# Set a field to override it. Fields you leave out keep their current value.
+kernel.browsers.update(
+ browser.session_id,
+ location={
+ "timezone": "America/Los_Angeles",
+ "locale": "en-US",
+ },
+)
+
+# Set a field to None to go back to the default for the browser's region.
+kernel.browsers.update(
+ browser.session_id,
+ location={"timezone": None},
+)
+```
+
+
+## Read effective location
+
+Browser responses include the timezone and locale the browser is using, and whether each one is your override or the region's default:
+
+```json
+{
+ "location": {
+ "timezone": "America/Los_Angeles",
+ "locale": "en-US",
+ "timezone_source": "override",
+ "locale_source": "metro"
+ }
+}
+```
+
+## How changes take effect
+
+- Open tabs pick up a change right away, without reloading.
+- New tabs and frames start with the current timezone and locale.
+- Date and number formatters a page already created keep their original settings. Create a new one, such as `new Intl.DateTimeFormat()`, to use the new values.
+- Requests already in progress keep their original language. Later requests use the new one.
+- A timezone or locale you set yourself through Playwright or Puppeteer, such as Playwright's `timezoneId`, takes precedence on the pages it applies to.
+- The location lasts for the browser session. Profiles don't save it.
+- A pooled browser you release with `reuse: true` keeps its location for the next acquirer, just as it keeps cookies and open tabs. Release it with `reuse: false` to get a fresh browser instead.
diff --git a/introduction/configure.mdx b/introduction/configure.mdx
index c0b41925..061814f0 100644
--- a/introduction/configure.mdx
+++ b/introduction/configure.mdx
@@ -91,6 +91,7 @@ browser = kernel.browsers.create(
Often agents don't require these, but they're there when you do:
- **[Regions](/browsers/regions):** run browsers in `us-east`, `eu-west`, or `ap-southeast`, closer to your code and your users.
+- **[Location](/browsers/location):** set the browser's timezone and locale.
- **[Extensions](/browsers/extensions):** load unpacked Chrome extensions into a browser.
- **[Chrome policies](/browsers/chrome-policies):** apply Chrome enterprise policies, such as startup pages and bookmarks.
- **[Private networking](/browsers/private-networking):** reach services behind a VPN or tunnel from inside the browser session.