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

For most projects, install puppeteer with npm i puppeteer: its install process normally downloads a compatible Chrome for Testing browser. If install scripts were blocked, run npx puppeteer browsers install in the project. Use puppeteer-core when you manage Chrome yourself, and point Puppeteer at that browser with executablePath or a supported channel.

Choose how Chrome will be managed

The right installation path depends on who supplies and updates the browser binary. The regular puppeteer package manages a compatible browser download for you. puppeteer-core leaves browser installation and updates to your application, operating system, or remote-browser environment. See the Puppeteer installation guide before changing commands for a newer release.

Approach Who installs and manages Chrome What you configure Best fit
puppeteer Puppeteer normally downloads a compatible Chrome for Testing during package installation. Usually nothing beyond installing the package; install the browser separately if install scripts did not run. Local development and projects that want Puppeteer to manage its browser.
puppeteer-core You or your environment provides Chrome/Chromium, or a remote browser. Set executablePath or a browser channel when launching. Managed system browsers, custom browser images, or remote-browser setups.

Use puppeteer for the standard setup

Choose puppeteer when you want installation to obtain the browser version Puppeteer expects. It reduces the need to locate a system Chrome binary yourself, but it means the package installation environment must be allowed to download and retain the browser.

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

Use puppeteer-core for a separately managed browser

Choose puppeteer-core if a team image, operating system package, or remote-browser service already supplies the browser. This package does not download Chrome. Supply a valid executable path or channel at launch; installing the npm package alone is not enough to make a browser available.

Install Puppeteer and its browser

  1. In your project directory, install the standard package:

    npm i puppeteer
  2. Let the package installation complete. Puppeteer normally downloads a recent compatible Chrome for Testing browser during installation.

  3. If Chrome is absent after installation, install it explicitly in the same project and cache environment:

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
    npx puppeteer browsers install
  4. Run your Puppeteer script. If launch still cannot locate Chrome, check the configured cache directory and any executable override before changing your script.

Some package managers or build systems block package install scripts. In that case, the npm package may be present while its browser download has not happened. Running the explicit browser-install command after the package installation is the documented recovery path.

Install a particular Chrome channel or version

When reproducibility matters, choose a channel, milestone, or exact browser version rather than relying on whichever recent compatible build is obtained during installation. The official browsers package README describes browser installation commands; Chrome for Developers documents Chrome for Testing releases at Chrome for Testing.

Install the stable channel

npx @puppeteer/browsers install chrome@stable

Install a milestone

Replace <milestone> with the desired Chrome milestone:

npx @puppeteer/browsers install chrome@<milestone>

Install an exact version

For a pinned browser, substitute the complete version number you intend to use:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npx @puppeteer/browsers install chrome@<exact-version>

A stable channel follows the stable release stream; a milestone narrows the selection to a major-version line; an exact version is the most explicit choice for repeatable environments. Pinning helps make builds more predictable, but your deployment must keep that browser available and compatible with the Puppeteer version in use. Verify the command and compatibility guidance when upgrading either package because browser-management behavior can change between releases.

Install Chrome on Ubuntu or Debian

On Ubuntu or Debian, the browsers installer can attempt to install required system dependencies as well as Chrome:

npx puppeteer browsers install chrome --install-deps

This option requires root privileges. It addresses system packages needed to run the browser; it is separate from selecting a browser version or choosing the Puppeteer npm package. If your environment does not permit root access, arrange the required operating-system dependencies through your image or administrator instead.

Launch a browser you installed yourself

Install puppeteer-core when your application or deployment manages Chrome. At launch, pass an executable path for the installed browser, or identify a supported installed browser using its channel. The Puppeteer configuration API covers these settings.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npm i puppeteer-core

Example using an explicit path (replace the sample path with the actual Chrome or Chromium executable on your machine):

const puppeteer = require('puppeteer-core');

(async () => {
  const browser = await puppeteer.launch({
    executablePath: '/path/to/chrome'
  });
  const page = await browser.newPage();
  await page.goto('https://example.com');
  console.log(await page.title());
  await browser.close();
})();

An explicit path is useful when your deployment controls the exact binary location. A channel is useful when the relevant browser is installed in a recognized system location. Do not assume the example path exists on your machine; use the actual path provided by your operating system or container image.

Control where Puppeteer caches Chrome

For Puppeteer installations since v19, the browser cache normally lives at ~/.cache/puppeteer. This matters in CI and container deployments: a browser downloaded during one build step will not be available at runtime if the cache is discarded or the runtime uses a different user or cache location.

Set cacheDirectory in configuration or use the PUPPETEER_CACHE_DIR environment variable to move the cache. The configuration guide explains configuration files and environment overrides.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Keep install and runtime environments pointed at the same cache location.
  • Make sure the runtime user can read and execute the cached browser files.
  • Check whether an environment variable or configuration file changes the expected path before reinstalling Chrome.
  • Persist the cache in build systems that separate dependency installation from execution, or install the browser again in the runtime image.

Troubleshoot common installation and launch failures

Puppeteer says it cannot find Chrome

  • Cause: The package manager blocked install scripts, so the browser download did not occur.
  • Fix: Run npx puppeteer browsers install in the project and environment where the script runs.
  • Also check: A custom cache setting or executable override may point Puppeteer away from the location where Chrome was installed.

puppeteer-core installs but launch fails

  • Cause: puppeteer-core does not download a browser.
  • Fix: Install or provide Chrome/Chromium separately, then set a correct executablePath or recognized channel.
  • Check: Confirm that the configured binary path exists and is executable in the runtime environment, not only on your workstation.

Chrome installed during build but is missing at runtime

  • Cause: The browser cache was not persisted, or the build and runtime use different users, paths, or environment settings.
  • Fix: Align PUPPETEER_CACHE_DIR or cacheDirectory across both stages, preserve the cache, or install the browser in the runtime stage.

Chrome fails to start on Linux

  • Cause: Required system dependencies may be absent even though the browser binary is installed.
  • Fix: On Ubuntu or Debian, try npx puppeteer browsers install chrome --install-deps with root privileges. Where root is unavailable, have the operating-system dependencies included in the deployment image.

The browser version differs between machines

  • Cause: An unpinned channel can move as releases change, or machines may install at different times.
  • Fix: Select a milestone or exact version with npx @puppeteer/browsers install and keep the deployment’s browser and Puppeteer version aligned.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Plan for repeatable builds and runtime cost

Installation strategy affects build reliability more than the small amount of application code involved. A browser download requires network access during installation unless your environment already provides the binary. CI systems should account for browser download time, cache persistence, disk space, and Linux dependencies. A cached browser can avoid repeated downloads, but only if the install and runtime stages share the configured cache.

Best Value
The SQL Programming Language: .
  • Used Book in Good Condition
  • For a simple project: use puppeteer and allow its install process to fetch the compatible browser.
  • For controlled deployments: pin a browser milestone or exact version and preserve that binary with the application image.
  • For managed Chrome: use puppeteer-core and validate the executable path or channel in the actual runtime.
  • For restricted Linux builds: plan system dependencies and browser installation permissions explicitly.

The trade-off is control versus convenience: Puppeteer-managed downloads simplify setup, while separately managed binaries can fit organizational update policies and deployment images, at the cost of additional configuration.

Or skip the browser setup

If your goal is simply to capture a webpage rather than automate a full browser session, ScreenshotNeo provides a screenshot API and MCP server. One GET request returns an image or PDF; its API accepts the familiar screenshot parameter names used by other services. See the 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 removes cookie and consent banners, newsletter popups, and chat widgets before the shot; those cleanup steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, with response headers indicating the page verdict and billing status. Its MCP server lets AI agents use take_screenshot, get_page_info, and capture_pdf. The free plan includes 1,000 shots a month with no card; paid plans start at $5 for 3,000 shots.

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

Sign up for ScreenshotNeo’s free plan to get 1,000 screenshots a month with no card.

Frequently Asked Questions

Does installing Puppeteer install Google Chrome?

The standard puppeteer package normally downloads a compatible Chrome for Testing browser during installation. It does not necessarily install the separately branded desktop Google Chrome application.

Can I use a Chrome installation already on my computer?

Yes. Use puppeteer-core and provide the browser’s path with executablePath, or use a supported channel.

Where does Puppeteer store its downloaded browser?

For installations since v19, the default cache is normally ~/.cache/puppeteer; configuration can change it.

Free tools Windows power users keep installed

One-click scans. No signup required.

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.