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 Browser Download Options Explained: Install, Configure, or Use Your Own

Puppeteer normally downloads a compatible browser with the puppeteer package. Here’s how to manage downloads and cache location, recover when install scripts are blocked, or use a browser you maintain yourself.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For the simplest supported setup, install puppeteer and let it download its matching browser. If package-manager policy blocks install scripts, install that browser afterward with Puppeteer’s browser CLI. If you need to control the browser yourself or connect remotely, use puppeteer-core and provide a browser path or channel—but then you own version compatibility.

What Puppeteer downloads by default

Installing the puppeteer package normally downloads Chrome for Testing and chrome-headless-shell. The latter has been available since Puppeteer v21.6.0. Puppeteer keeps these browser files in $HOME/.cache/puppeteer by default in the documented setup; globally cached browser files have been the default behavior since v19.0.0. See the Puppeteer installation guide.

As an Amazon Associate I earn from qualifying purchases.

The current installation guide lists approximate download sizes of 170 MB for macOS, 282 MB for Linux, and 280 MB for Windows. Treat these as guide estimates, not exact amounts for every operating system, package setup, or installation.

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

This default is usually the right choice when your project allows install scripts and can accommodate the browser download. Puppeteer says its bundled browser is the one it guarantees to work with.

Choose the download approach that fits your project

Approach Who manages installation and upgrades? Compatibility assurance Best fit
puppeteer default install Puppeteer’s install process Strongest documented assurance: Puppeteer’s bundled browser Projects that can run install scripts and accept the browser download
Install the browser with the CLI Puppeteer, triggered manually by you Uses a Puppeteer-managed browser Package environments that block dependency install scripts
puppeteer-core with a separate browser You or your remote-browser provider You must validate compatibility; the bundled-browser guarantee does not apply Remote browsers or environments where browser installation is managed separately

Configuration files or environment variables let you alter download behavior without switching approaches. Browser version mappings and supported options can change between Puppeteer releases, so check the documentation for the version installed in your project.

Install the browser manually when install scripts are blocked

Some package-manager configurations block dependency install scripts. Puppeteer’s guide gives npm under a newer RFC, pnpm, Yarn Berry, Bun, and Deno as examples of environments where scripts may not run. Without the postinstall download, launching may fail with an error such as Could not find Chrome (ver. ...).

  1. Install Puppeteer as usual under your project’s package-manager policy.
  2. Run the browser installation command from the project directory:
    npx puppeteer browsers install
  3. Retry your launch. The CLI installs the browser expected by the Puppeteer setup. If the package manager supports allowing a specific dependency’s script, you can instead permit Puppeteer’s install script according to that manager’s policy.

Equivalent command forms include:

  • Yarn: yarn puppeteer browsers install
  • pnpm: pnpm exec puppeteer browsers install
  • Bun: bunx puppeteer browsers install

For more control, the @puppeteer/browsers documentation describes installing a named browser build such as chrome@stable, a milestone, or an exact version. Its API accepts a browser, build ID, cache directory, and platform, among other settings. You may supply an expected SHA-256 hash; if you do, installation fails when the archive does not match. Hash verification is not implied when you omit that option.

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

Control browser downloads and cache location

Puppeteer recommends configuration files for persistent settings; environment variables are also available. The configuration API documents settings such as these:

Purpose Configuration key Environment variable
Choose the browser cache directory cacheDirectory PUPPETEER_CACHE_DIR
Skip browser downloads generally skipDownload PUPPETEER_SKIP_DOWNLOAD
Choose the default browser defaultBrowser PUPPETEER_BROWSER
Supply an executable path executablePath PUPPETEER_EXECUTABLE_PATH

Chrome- and Firefox-specific skip-download settings are also documented. Browser-specific settings include versions and download base URLs. Consult the configuration API for exact key names and supported values for your release rather than copying a setting from another version.

When you change a setting that affects downloads, rerun the relevant installation step—for example, npx puppeteer browsers install—so the browser files match your configuration. Configuration files and environment variables are ignored by puppeteer-core.

Use a browser you manage yourself

Choose puppeteer-core when your application connects to a remote browser or your deployment process installs and maintains the browser separately. Unlike puppeteer, puppeteer-core does not download Chrome.

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

When launching, supply either an explicit executable path or a channel. An explicit path points to a particular executable; a channel asks Puppeteer to look for a standard system Chrome installation. The LaunchOptions API describes the executablePath option and cautions: “Puppeteer is only guaranteed to work with the bundled browser.” For a separately managed or remote browser, pin a compatible version where practical and test both startup and the automation behavior your application relies on.

Use this approach when operational control matters more than having Puppeteer manage the browser. It avoids Puppeteer’s browser download, but shifts installation, updates, and compatibility checks to you or your browser provider.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Check browser support for your Puppeteer version

Puppeteer documents Chrome for Testing as its default supported Chrome path and also documents Firefox support. The supported-browser table maps Puppeteer package releases to browser versions; use the row for the release actually installed in your project, not an old version copied from an example. See the supported browsers table.

As a dated illustration, the documentation labeled 25.12.0 lists Chrome for Testing 154.0.8037.57 and Firefox 156.0.1. These are pairings for that documentation version, not permanent latest-version recommendations. Browser-management documentation also permits custom providers, but labels them unsupported; compatibility, testing, and maintenance are your responsibility.

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

Troubleshoot common download and launch failures

  • Error: Could not find Chrome (ver. ...). The install script may have been blocked, or the expected browser is absent from the configured cache. Run npx puppeteer browsers install after installation and confirm that cacheDirectory or PUPPETEER_CACHE_DIR points to the location you intend to use.
  • The browser downloaded to an unexpected directory. Check cacheDirectory and PUPPETEER_CACHE_DIR, including the environment of the user or build process running the install. Change the setting, then run the browser-install command again.
  • A browser-skip setting prevents installation. Check skipDownload, PUPPETEER_SKIP_DOWNLOAD, and the browser-specific skip settings. Remove or adjust the setting if Puppeteer should download a browser, then rerun installation.
  • puppeteer-core ignores your configuration. This is expected: it ignores Puppeteer configuration files and environment variables. Manage the browser separately and provide its executable path or a channel in launch options.
  • A system browser launches incorrectly or behaves differently. The bundled-browser compatibility guarantee does not cover your separately managed browser. Check the supported-browser mapping for your Puppeteer release, pin an appropriate browser version, and validate the operations your application needs.
  • A browser archive fails a supplied hash check. The optional expected SHA-256 value did not match the downloaded archive. Verify the expected hash and selected build before retrying; do not assume a hash check occurred if you did not supply one.

Or skip the browser setup

If your goal is a website screenshot rather than browser automation, ScreenshotNeo provides a screenshot API and MCP server. One GET request can return a PNG, JPEG, WebP, or PDF. For the complete parameters and response behavior, see the ScreenshotNeo API documentation.

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

ScreenshotNeo accepts cookie and consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response identifies page verdict and billing status in its headers. Its MCP server offers take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000.

Sign up for ScreenshotNeo’s free plan.

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. 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
Outdated Drivers Are Slowing You DownFree scan - exact matches

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.