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.
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
#1 Best Overall
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.
Rank #2
- 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:
Rank #3
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.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →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
- 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.
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:
Best Value
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.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Does en-IN set the timezone too?
No. Set locale and timezone separately with page.emulateLocale() and page.emulateTimezone().
Quick Recap
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.

