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

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Use Puppeteer’s en-IN locale emulation and JavaScript’s Intl.NumberFormat and Intl.DateTimeFormat to show India-oriented number and date conventions before taking a screenshot. Set the timezone separately only when dates should reflect India-local time: locale controls formatting conventions, while timezone controls the clock time represented.

Set the locale, timezone, and formatters separately

This runnable ES module example formats a number and a date explicitly, then saves a PNG with Puppeteer. Use Node.js with Puppeteer installed in your project. The chosen date is an ISO timestamp with a UTC offset, so it identifies a specific instant rather than relying on ambiguous local parsing.

import puppeteer from 'puppeteer';

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

  // Emulate an English-language Indian browser locale.
  await page.emulateLocale('en-IN');
  // Optional: use this only when displayed dates should use India-local time.
  await page.emulateTimezone('Asia/Kolkata');

  await page.setContent(`
    <!doctype html>
    <html>
      <head><meta charset="utf-8"></head>
      <body>
        <div id="output"></div>
        <script>
          const amount = 1234567.89;
          const date = new Date('2026-10-03T12:00:00Z');
          const numberText = new Intl.NumberFormat('en-IN').format(amount);
          const dateText = new Intl.DateTimeFormat('en-IN', {
            year: 'numeric', month: 'long', day: 'numeric',
            timeZone: 'Asia/Kolkata'
          }).format(date);
          document.querySelector('#output').textContent = numberText + ' | ' + dateText;
        </script>
      </body>
    </html>
  `);

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

The example deliberately does not assert a literal rendered date or punctuation. Exact output can depend on the browser runtime, its ICU/locale data, formatter options, and timezone. Inspect the saved image or read the rendered text in the same deployment runtime where the screenshot will be produced.

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

Choose the date and number conventions you actually need

Locale controls regional presentation

en-IN requests English-language India conventions, including locale-sensitive grouping and date presentation. If the page is in another language, choose the appropriate language-and-region locale instead of assuming en-IN is universal.

Timezone controls the represented local time

page.emulateTimezone('Asia/Kolkata') changes the browser’s emulated timezone; it does not replace locale selection. For formatter-controlled output, set timeZone: 'Asia/Kolkata' directly in Intl.DateTimeFormat. If a timestamp must stay in another timezone, specify that zone instead and do not convert it merely to make the locale Indian.

Explicit formatters versus the browser default

  • Explicit locale: Passing 'en-IN' to each Intl formatter makes the requested formatting visible in code and reproducible regardless of the emulated browser default.
  • Browser default: Omitting the formatter locale can be appropriate when the page should follow the browser environment set by emulateLocale(). It makes the formatting choice less obvious at the call site.

These are independent choices: decide whether formatting should be pinned in application code, and separately decide which timezone the date should represent.

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

Capture a page or just one element

Puppeteer’s screenshot guide says, “For capturing screenshots use Page.screenshot().” The example uses that method for a page image. For a particular element, locate it and use ElementHandle.screenshot(); Puppeteer documents that it attempts to scroll a hidden element into view before capturing it. The page screenshot API also supports full-page capture and clipping, so select the image bounds that suit the output.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
// Full document rather than only the viewport:
await page.screenshot({ path: 'full-page.png', fullPage: true });

// Capture one matching element:
const output = await page.$('#output');
if (!output) throw new Error('Expected #output element was not found');
await output.screenshot({ path: 'output.png' });

See the Puppeteer screenshots guide and the Page.screenshot() API reference for screenshot options.

Apply the settings when capturing an existing website

Emulate locale and timezone before navigation when the application may read browser locale or timezone during startup. Then inspect the page’s own date and number formatting: Puppeteer changes the browser environment, but it does not rewrite text already rendered by a site or guarantee that every application honors the emulated values.

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: 'site.png', fullPage: true });
} finally {
  await browser.close();
}

Replace the example URL with the page you control or are authorized to capture. If the application has its own language or timezone setting, confirm that setting too; browser emulation alone is not proof that its displayed values changed.

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

Troubleshoot unexpected output

  • Grouping or date wording is not what you expected: Check the locale passed to each formatter and the formatter options. Verify the actual rendered result in the same browser runtime used for production; locale data and runtime versions can affect exact output.
  • The date is several hours off: Check the timestamp’s offset and the formatter’s timeZone. Locale selection does not set the timezone.
  • An existing website still shows its old formatting: Emulate locale and timezone before goto(), then verify whether the site reads those settings or applies its own preferences.
  • The element screenshot is empty or missing: Confirm the selector matches an element and that the content has rendered before calling its screenshot method. For delayed pages, wait for the relevant selector before capture.
  • The screenshot is cropped to the visible area: Use fullPage: true for the full document, or provide a clip when a specific rectangle is intended.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If you need a screenshot endpoint rather than a local Puppeteer script, ScreenshotNeo is a website screenshot API and MCP server. One GET request returns an image or PDF; it does not offer a Puppeteer-style locale-emulation setting, so set the target page’s own locale and date formatting if those visible values must be Indian-formatted.

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

For API setup and parameters, see the ScreenshotNeo documentation. Example cURL request:

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

Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card, and paid plans start at $5 for 3,000.

Create a free ScreenshotNeo account.

Frequently Asked Questions

Does emulateLocale('en-IN') change the browser timezone?

No. Use Puppeteer’s separate timezone emulation method or specify a timezone in the date formatter.

Will Puppeteer convert a website’s existing date strings to Indian formats?

No. Locale emulation changes browser settings, but the site must use those settings or its own formatting logic for its displayed text to change.

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

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.