October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk5 min

How Puppeteer Reads Installed Browser Metadata

Puppeteer’s cache listing and system Chrome lookup are different mechanisms. Here’s how to identify cached installs, select the right executable, and troubleshoot missing browsers.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Puppeteer’s getInstalledBrowsers() lists browsers installed in a Puppeteer cache; it does not scan the whole computer for Chrome. To resolve a system Chrome installation, select a supported channel, or pass its exact location with executablePath. These are separate discovery and launch paths.

What “installed browser metadata” means in Puppeteer

There are two common meanings of “installed browser.” Puppeteer can manage browser downloads in a cache, whose entries can be enumerated with getInstalledBrowsers(). Separately, Puppeteer can resolve a Chrome release channel at a known system location, or launch a binary whose path you provide. The cache API is not a general operating-system browser scanner.

As an Amazon Associate I earn from qualifying purchases.

List browsers in Puppeteer’s cache

The supported @puppeteer/browsers API is getInstalledBrowsers(options). Supply the cache directory you want to inspect:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import {getInstalledBrowsers} from '@puppeteer/browsers';

const browsers = await getInstalledBrowsers({
  cacheDir: '/path/to/puppeteer-cache',
});

for (const browser of browsers) {
  console.log({
    browser: browser.browser,
    buildId: browser.buildId,
    platform: browser.platform,
    executablePath: browser.executablePath,
    installationRoot: browser.path,
  });
}

Replace the example path with the cache directory used by your application. Each returned InstalledBrowser represents a cached installation and documents its browser identity, build ID, platform, executable path, installation root, and metadata methods. The class constructor is documented as internal; use the exported API rather than constructing or subclassing the model yourself. See the @puppeteer/browsers API and InstalledBrowser reference.

Metadata is not automatically the live runtime version

InstalledBrowser exposes readMetadata() and writeMetadata(metadata), but the documented API reference does not establish that readMetadata() returns a browser’s live runtime version. Do not treat it as a version probe based on its name alone. If you need the version reported by the actual binary, run that executable with its version option or launch it and inspect the browser version through Puppeteer; ensure the binary you probe is the one you intend to use.

Find or select system Chrome

For an operating-system Chrome installation, the browser utility API provides computeSystemExecutablePath(), which resolves a requested Chrome release channel to an expected executable path in known system locations. For example:

import {Browser, ChromeReleaseChannel, computeSystemExecutablePath} from '@puppeteer/browsers';

const executablePath = computeSystemExecutablePath({
  browser: Browser.CHROME,
  channel: ChromeReleaseChannel.STABLE,
});

console.log(executablePath);

This is channel-based lookup, not a scan for every browser installed by the operating system or another package manager. It can throw when the expected executable is not present. The exact channel values and function options are version-dependent; check the current function reference.

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

Choose the launch option that matches the installation

Need Mechanism What it does Limit
Enumerate Puppeteer-managed installations getInstalledBrowsers({cacheDir}) Lists browser entries and installation metadata in that cache Not a host-wide browser scan
Use Chrome at a known system location channel in launch(), or computeSystemExecutablePath() Resolves a Chrome release channel to an expected system executable Known Chrome locations only; lookup can fail
Use a custom or package-managed binary executablePath Uses the exact path supplied by the caller Compatibility with arbitrary external versions is not guaranteed

For example, with the standard puppeteer package:

import puppeteer from 'puppeteer';

// Use a known system Chrome channel:
const browser = await puppeteer.launch({channel: 'chrome'});

// Or select a specific binary instead:
// const browser = await puppeteer.launch({executablePath: '/absolute/path/to/chrome'});

await browser.close();

Use one selection method appropriate to the target installation. With puppeteer-core, provide either channel or executablePath; it does not download Chrome or choose a browser for you. Refer to the LaunchOptions reference for supported launch options.

Cache paths, packages, and configuration

The standard puppeteer package downloads Chrome for Testing by default. Puppeteer’s documentation says the default browser cache has been ~/.cache/puppeteer since v19. The current configuration API exposes cacheDirectory, and PUPPETEER_CACHE_DIR can override it. Your listing will only be useful if it points at the same cache location used for installation.

  • Check the project’s Puppeteer configuration and PUPPETEER_CACHE_DIR before concluding the cache is empty.
  • Check whether browser downloads were skipped through configuration or PUPPETEER_SKIP_DOWNLOAD.
  • Remember that puppeteer-core does not download Chrome; an empty Puppeteer cache may be expected.

Configuration details are in Puppeteer’s Configuration reference. The downloaded Chrome for Testing browser is the pairing Puppeteer supports best. External Chrome versions are not guaranteed compatible; check the current supported browsers and version mapping when compatibility matters. The documentation referenced here identifies Puppeteer 25.12.0; its compatibility mapping can change with releases.

Troubleshooting missing browsers and launch failures

The cache listing is empty

  • Confirm the cacheDir argument points to the actual Puppeteer cache.
  • Check cacheDirectory and the PUPPETEER_CACHE_DIR environment variable.
  • Confirm a browser download was not skipped and that the project uses puppeteer rather than puppeteer-core.

“Could not find Chrome” after installation

Some package managers block installation scripts, so Puppeteer’s browser download may not have run. Allow the package install script or install the browser manually using Puppeteer’s browser command, as described in the installation guide. Then inspect the cache directory configured for that project.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

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

System-channel lookup throws

The requested channel’s executable may not exist in a location Puppeteer recognizes. Install that Chrome channel in the expected system location, use a different available channel, or pass the binary’s absolute path with executablePath.

A browser launches but behaves incompatibly

Check which executable was selected and compare its version with Puppeteer’s supported browser mapping. When using an externally managed browser, test the exact Puppeteer/browser combination; compatibility is not guaranteed for every external version.

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 your goal is a website screenshot rather than browser automation or cache inspection, ScreenshotNeo is a website screenshot API and MCP server. One GET request returns an image or PDF; here is the cURL form:

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

See the ScreenshotNeo API documentation for request options. It can accept cookie and consent banners and remove more than 60 known consent platforms, newsletter popups, and chat widgets before capture; those steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and responses indicate page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for AI agents using Claude, Cursor, or another MCP client. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000.

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

Sign up for 1,000 free screenshots a month, with no card required.

Frequently Asked Questions

Does Puppeteer automatically find every browser installed on my computer?

No. Its cache listing covers Puppeteer-managed cache entries; system Chrome resolution checks known locations for a selected channel.

Does getInstalledBrowsers() tell me Chrome’s live version?

It returns documented installation metadata, but the API reference does not establish that readMetadata() reports the live runtime version.

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.

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

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.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver 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.