October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCOctober 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

Puppeteer Installed Browser Metadata Explained

Puppeteer’s installed-browser metadata lists builds in a chosen managed cache, with browser, build ID, platform, installation root, and executable path.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Puppeteer’s installed-browser metadata is an inventory of browser builds in a specific Puppeteer-managed cache—not a scan of every browser installed on your computer. Use getInstalledBrowsers({cacheDir}) from @puppeteer/browsers to retrieve records, or run npx @puppeteer/browsers list to list cached browsers from the terminal.

What does “installed browser metadata” mean in Puppeteer?

In the @puppeteer/browsers package, installed-browser metadata describes browser builds managed in a browser cache. The getInstalledBrowsers() API returns a promise of InstalledBrowser[] for the cache directory you specify. It does not search the whole machine for every browser installation. The official API reference describes its result as metadata about browsers installed in the cache directory.

This distinction matters when a browser is available to launch but does not appear in the inventory: it may be a regular system installation or a binary outside the cache being enumerated. Conversely, a cache record identifies a managed installation but does not guarantee that it will be compatible with every Puppeteer version or launch configuration.

How do I list browsers installed by Puppeteer?

Use the command line

The documented CLI command lists browsers in the Puppeteer browser cache:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npx @puppeteer/browsers list

Run it in the environment whose cache you want to inspect. If the CLI is not available in the project context, ensure @puppeteer/browsers is installed or invoke it through the package runner appropriate for your setup.

Use the JavaScript API

Install the package if it is not already a project dependency, then pass the cache root you want to enumerate:

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
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,
    path: browser.path,
    executablePath: browser.executablePath,
  });
}

Replace /path/to/puppeteer-cache with the cache root used by your installation. The API is asynchronous, so await its promise. Its option is cacheDir; this is the root to enumerate, not the path of one browser executable. See GetInstalledBrowsersOptions for the option and the @puppeteer/browsers API overview.

What do the InstalledBrowser fields mean?

Field Meaning How to use it
browser The browser identity recorded for the installation. Distinguishes the browser product in the cache inventory.
buildId The identifier for a specific browser build. Use it to distinguish builds; installation options use the build ID to identify binaries and for caching.
platform The platform associated with the browser build. Provides platform context for the cached installation.
path The root directory of the installation folder. Use it when you need the installation directory; do not treat it as the executable itself.
executablePath The executable location for the browser. Use this when a path to the browser binary is required.

The InstalledBrowser reference distinguishes path, the installation-folder root, from the executable binary path, and points to computeExecutablePath() for locating the executable. The InstalledBrowser constructor is internal; retrieve records through package APIs rather than constructing instances yourself.

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

Which cache directory should I enumerate?

The cache root must match the location where the browser builds were installed. Puppeteer’s configuration names this setting cacheDirectory. Its documented default is path.join(os.homedir(), '.cache', 'puppeteer'), and PUPPETEER_CACHE_DIR overrides that configuration. The lower-level @puppeteer/browsers inventory API takes its own cacheDir option, so pass the corresponding root when calling it. See the Puppeteer configuration reference.

Do not assume that the API automatically reads the same setting as every Puppeteer configuration in your application. If your project or deployment sets a non-default cache directory, use that actual path for enumeration. A mismatch can produce an empty inventory even when browser files exist elsewhere.

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

How is cache inventory different from choosing a browser to launch?

Mechanism Discovery or selection What it establishes
getInstalledBrowsers({cacheDir}) Enumerates browser records in the specified managed cache root. Which managed builds are represented in that cache.
launch({channel}) Looks for a regular Chrome installation in known system locations. A launch selection by Chrome channel; it is not a cache inventory.
launch({executablePath}) Uses the binary path supplied by the caller. A launch selection by explicit executable location.

These are separate mechanisms: finding a system Chrome through channel, or selecting a binary by executablePath, does not mean that browser will appear in a cache listing. Puppeteer states that it only guarantees compatibility with its bundled browser. Consult LaunchOptions before relying on a non-bundled browser.

What installation details affect the metadata?

Browser installation options include the browser, buildId, cacheDir, and platform. The build ID identifies the binary build and is used for caching, so two records for different builds should not be treated as interchangeable merely because they are the same browser product. The InstallOptions reference documents these installation inputs.

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.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting an empty or unexpected browser list

  • The list is empty: check that cacheDir points to the cache root where the browser was installed. Compare it with Puppeteer’s configured cacheDirectory and any PUPPETEER_CACHE_DIR override.
  • A system browser is missing: this inventory covers the specified managed cache, not every browser on the host. For launching regular Chrome, investigate channel; for a known binary, use executablePath.
  • You passed a browser folder but expected an executable: path is the installation root. Use the record’s executablePath or the documented computeExecutablePath() helper to obtain the binary location.
  • A listed browser fails to launch: listing confirms cache metadata, not compatibility. Puppeteer guarantees compatibility only with its bundled browser; check the browser build and your launch configuration.
  • The constructor or object fields behave unexpectedly: do not instantiate InstalledBrowser directly. It is an internal constructor; obtain records with the package’s inventory APIs.

Or skip the browser setup

If your goal is simply to capture a web page rather than manage a local Puppeteer browser, ScreenshotNeo offers a screenshot API and an MCP server. One GET request returns an image or PDF; for example, this cURL request saves a WebP screenshot:

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 documentation for request options. Cookie banners are accepted before capture and more than 60 known consent platforms, newsletter popups, and chat widgets can be removed; those steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers report the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for AI agents and MCP clients. The free plan includes 1,000 screenshots per month without a card; paid plans start at $5 for 3,000. Learn about ScreenshotNeo or sign up for 1,000 free screenshots a month with no card.

Frequently Asked Questions

Does getInstalledBrowsers return a plain array immediately?

No. It returns a promise of InstalledBrowser records, so await the call before iterating over the result.

Can I construct an InstalledBrowser record myself?

The constructor is internal. Retrieve records through the package APIs instead.

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.

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. Shenzhen desk3 min
    HONOR Expands Beyond Smartphones With Humanoid Robot RevealHONOR said it unveiled its first humanoid robot at MWC 2026 and named shopping assistance, workplace inspections, and supportive companionship as intended uses. Later Robotics D1 claims and a reported…
  2. Cupertino desk5 min
    Apple Unveils AirPods Max 2: The Upgrade That Should Have Happened Years AgoAirPods Max 2 adds H2-powered audio features and Apple claims up to 1.5× more effective ANC, but its design, Smart Case, and 20-hour battery rating are unchanged. Wired lossless audio…
  3. Cupertino desk4 min
    Apple’s OLED Touch MacBooks Are Coming—but the Dynamic Island Is the Real GambleApple has not announced an OLED touchscreen MacBook, but reports point to high-end models arriving in late 2026 or early 2027. The reported Mac Dynamic Island could be useful, but…
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
PC Slower Than It Used to Be?Free scan - under a minute

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.