Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
FREEDOM251

Freedom251 › Blog › browser automation

How to Set an Indian Locale and Timezone for Puppeteer Screenshots

By Freedom251 Team · · 4 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Set Puppeteer’s page locale to en-IN and timezone to Asia/Kolkata before navigating, then capture the page with page.screenshot(). These configure regional formatting and timezone behavior separately; they do not establish an Indian IP address or guarantee that a site serves India-specific content.

Set locale and timezone before navigation

Puppeteer provides separate page methods: page.emulateLocale() and page.emulateTimezone(). For an English-language India rendering, en-IN is a practical locale choice; Asia/Kolkata is the timezone identifier for India. Await both methods before navigation when you want them in effect for the page’s initial rendering.

As an Amazon Associate I earn from qualifying purchases.

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch();
try {
  const page = await browser.newPage();

  await page.emulateLocale('en-IN');
  await page.emulateTimezone('Asia/Kolkata');
  await page.goto('https://example.com', { waitUntil: 'networkidle0' });

  await page.screenshot({ path: 'india.png', fullPage: true });
} finally {
  await browser.close();
}

This example uses ECMAScript modules and top-level await. It assumes Puppeteer is installed in a project configured to run ES modules. Replace https://example.com with the page to capture. The networkidle0 wait condition waits for network activity to become idle; if a page keeps making requests or renders important content later, wait for the specific content your screenshot requires instead.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Puppeteer documents locale and timezone emulation as separate asynchronous page methods. The official API references currently label the locale page 25.11.0 and the timezone and screenshot pages 25.12.0, so check the API available in your installed dependency and browser combination rather than assuming all deployed versions match. Locale API · Timezone API · Screenshot API

What locale and timezone emulation change

Locale: regional language and formatting preferences

page.emulateLocale('en-IN') sets the page’s emulated locale. Locale can affect browser-visible regional behavior such as language-sensitive formatting, but the API documentation describes the method generically and does not provide an India-specific example. Treat en-IN as a sensible starting value, then validate the actual page and installed runtime.

Timezone: date and time interpretation

page.emulateTimezone('Asia/Kolkata') sets the page’s emulated timezone. This is separate from locale: choosing en-IN does not itself set the clock’s timezone, and choosing Asia/Kolkata does not set the language or regional number formatting. Puppeteer accepts a timezone identifier and points to ICU’s supported timezone IDs.

Neither setting proves the visitor is physically in India

Page-level locale and timezone emulation do not provide an Indian network location. They do not guarantee that a site’s server-side response, IP-based content, geolocation, currency, or language selection will match what a real visitor in India sees. Those behaviors depend on the site and other signals; test them separately if they matter to the screenshot.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Sale
HTML and CSS: Design and Build Websites
  • HTML CSS Design and Build Web Sites
  • Comes with secure packaging
  • It can be a gift option

Wait for the right content and choose screenshot extent

After navigating, ensure that the content you need has rendered before capturing. A network-idle condition can be useful for simple pages, but it is not a guarantee that all client-side or lazy-loaded content is ready. For a known page element, wait for that selector; for a page with delayed behavior, use an appropriate wait strategy before the screenshot.

page.screenshot() captures the current page. The option fullPage: true extends the capture beyond the viewport; its documented default is false. It changes screenshot dimensions, not locale or timezone. See the screenshot API options for the available capture settings.

Validate the rendered result

For a quick local check, inspect the runtime’s resolved locale and timezone, then compare visible output against a known date, time, and locale-sensitive number. You can evaluate this in the page after applying emulation:

const regionalSettings = await page.evaluate(() => {
  const options = Intl.DateTimeFormat().resolvedOptions();
  return {
    locale: options.locale,
    timeZone: options.timeZone,
    formattedDate: new Intl.DateTimeFormat().format(new Date('2025-01-15T12:00:00Z')),
    formattedNumber: new Intl.NumberFormat().format(123456.78),
  };
});

console.log(regionalSettings);

Use this as a sanity check, not as proof that every site component is localized. Review the actual screenshot too: a site may apply its own formatting or choose content using server-side, account, or network signals.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Troubleshooting

The methods are missing or fail

Check the Puppeteer version installed by the project and consult its matching API documentation. The current API references list different version labels across locale, timezone, and screenshot pages, so do not infer compatibility from a different page’s version number. Also confirm that page is a Puppeteer Page object.

The page still shows non-Indian content

Locale and timezone emulation alone do not control IP-based or server-side localization. Check whether the site uses network location, account settings, cookies, or its own language and region controls. The Puppeteer methods establish page-level locale and timezone emulation, not a full geographic simulation.

Rank #4
Sale
Web Design with HTML, CSS, JavaScript and jQuery Set
  • Brand: Wiley
  • Set of 2 Volumes
  • A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers

The screenshot has the wrong date or number format

Confirm both emulation calls completed before navigation and capture, then inspect Intl.DateTimeFormat().resolvedOptions() and the visible output. A site may override browser formatting or render its own text; the resolved settings do not guarantee how application code formats every value.

The image is cut off or content is missing

Use fullPage: true when the desired output should extend beyond the viewport. If content is absent rather than merely below the fold, wait for the relevant selector or page behavior before capture; full-page capture does not by itself guarantee that delayed content has loaded.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

ScreenshotNeo is a screenshot API with a one-call capture request. It accepts consent banners like a visitor and removes known consent platforms, newsletter popups, and chat widgets before capture; those cleanup steps can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, and responses identify the page verdict and billing status in headers. Its MCP server offers screenshot tools for AI agents, and the free plan includes 1,000 shots per month without a card; paid plans start at $5 for 3,000 shots.

To request a screenshot, create an API key and replace the example target URL as needed:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp

See the ScreenshotNeo API documentation for request options. Sign up free for 1,000 screenshots a month with no card.

Frequently Asked Questions

How do I set the Indian timezone in Puppeteer?

Await page.emulateTimezone('Asia/Kolkata') before navigating or capturing.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Does en-IN set the timezone too?

No. Set locale and timezone separately with page.emulateLocale() and page.emulateTimezone().

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

browser automationJavaScriptlocalizationPuppeteerweb screenshots

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.