Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsSome links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
Usually, no. Installing the standard puppeteer package downloads a compatible Chrome for Testing browser by default, so you generally do not need to install Chrome separately. You do need to provide a browser when you use puppeteer-core, disable Puppeteer’s browser download, or install the package in an environment that blocks its install script.
What “Chrome installed” means with Puppeteer
Puppeteer is a Node.js library that controls a browser. The key setup question is not simply whether Chrome is installed on your computer; it is whether Puppeteer can find a compatible browser when your code launches one.
The standard puppeteer package normally downloads a browser for you during installation. Its installation guide describes downloads of Chrome for Testing and a chrome-headless-shell binary. That managed browser is the default choice and the one for which Puppeteer documents its compatibility guarantee.
A separate Chrome installation can still be useful if you want to select a browser you already manage. But it is not normally a prerequisite for using puppeteer. The answer differs for puppeteer-core, which intentionally does not download a browser.
#1 Best Overall
Choose the package that matches who manages the browser
| Package or setup | Does it download a browser? | What you need to do |
|---|---|---|
puppeteer |
Yes, by default. | Install the package and let its browser installation run. Usually, no separately installed Chrome is needed. |
puppeteer-core |
No. | Manage a local or remote browser yourself, then select it with executablePath, channel where applicable, or a remote connection. |
puppeteer with downloads disabled or an install script blocked |
No browser may be available. | Install the browser explicitly, enable the package’s install script, or configure Puppeteer to use a browser you provide. |
| A separately installed Chrome or Chromium | Not applicable. | Point Puppeteer at it. Its version may not match the version expected by your Puppeteer release. |
Use the standard package for the simplest local setup
Choose puppeteer when you want the package to download and manage the browser it uses. This is the straightforward option for a local script or project that does not need to centralize browser management.
Use puppeteer-core when your application supplies the browser
puppeteer-core is intended for situations where your application or deployment environment manages the browser separately, including connecting to a remote browser. It does not perform the standard package’s browser download. Its launch() call therefore needs an executablePath or a channel to select a browser.
Install Puppeteer and verify its managed browser
-
Install the standard package in your project:
npm install puppeteer.Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchSpecial offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
Allow the package’s installation step to run. By default, it downloads a compatible browser. If your package manager or build policy blocks dependency install scripts, the download may not happen.
-
Create a JavaScript file such as
check-browser.jsand run this example withnode check-browser.js:const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: true }); try { const page = await browser.newPage(); await page.goto('https://example.com', { waitUntil: 'domcontentloaded' }); console.log(await page.title()); } finally { await browser.close(); } })().catch((error) => { console.error(error); process.exitCode = 1; });If setup and launch succeeded, the script prints the page title. The important detail is that the example uses Puppeteer’s managed default; it does not require a Chrome path on your machine.
-
If Puppeteer reports that it cannot find Chrome, run
npx puppeteer browsers installfrom the project directory, then run the script again. Also check whether browser downloads were disabled or the package’s install script was prevented from running.Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
How to use a browser you installed or manage yourself
Use a separately supplied browser when you deliberately manage browser versions outside the standard Puppeteer install. With puppeteer, you can choose an explicit executable path or, for a regular Chrome installation in a known system location, select a channel. With puppeteer-core, you must supply the browser selection rather than relying on Puppeteer to download one.
Select an executable path
Set executablePath to the actual browser binary available in the environment where the script runs. The path is operating-system and installation-specific, so do not copy a path from a different machine or container and assume it exists.
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
executablePath: process.env.CHROME_PATH,
headless: true,
});
try {
const page = await browser.newPage();
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
console.log(await page.title());
} finally {
await browser.close();
}
})().catch((error) => {
console.error(error);
process.exitCode = 1;
});
Set CHROME_PATH to a real browser executable before starting the script. If it is unset, or points to a nonexistent file, the launch will fail. The same browser-selection approach applies when using puppeteer instead of puppeteer-core.
Select a regular Chrome installation by channel
When Chrome is installed in a standard location recognized by Puppeteer, channel can select that installation instead of an explicit binary path. For example, the launch options can include channel: 'chrome'. This is convenient when you intend to use regular Chrome, but it does not remove version-compatibility considerations.
Why the browser Puppeteer downloads is usually the safer match
Puppeteer’s supported-browser documentation maps Puppeteer releases to Chrome for Testing versions. That mapping changes with releases, so check the row for your installed Puppeteer version when diagnosing compatibility; do not assume the newest Chrome on the machine is the right one.
The documented guarantee applies to the bundled or downloaded browser associated with the Puppeteer release. The API reference warns: “Note that Puppeteer is only guaranteed to work with the bundled browser, so use this setting at your own risk.” A system-installed Chrome can work, but independently updating it can create a mismatch between the browser and Puppeteer.
The installation guide gives approximate browser-download sizes of about 170 MB on macOS, 282 MB on Linux, and 280 MB on Windows. These are approximate figures from the guide, not fixed requirements; browser builds and downloads can change. Allow for the download in build time, network access, and disk space, especially in CI or container images.
Make browser downloads and runtime work in CI or containers
A successful package install does not by itself prove that the browser is available to the process that later runs your application. Build and runtime stages may use different images, users, home directories, or filesystems. Puppeteer’s documented default browser cache is ~/.cache/puppeteer; PUPPETEER_CACHE_DIR can change that location.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
-
Keep the browser accessible: ensure the download made during the build is present in the runtime environment and readable by the runtime user.
-
Keep the cache location consistent: if you set
PUPPETEER_CACHE_DIR, use the intended value in both the installation and runtime contexts. -
Check the target operating system: a browser binary can be present but fail to launch because its required system libraries or other operating-system dependencies are missing.
-
Separate installation from launch diagnosis: “Could not find Chrome” points to browser availability or selection; a binary that is found but cannot start may indicate dependencies, sandbox configuration, or another environment issue.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
Test the actual deployment image: a local desktop launch does not verify that the same browser and dependencies are available in a Linux container or CI worker.
Puppeteer’s browser-management documentation describes an --install-deps option for Chrome on Debian/Ubuntu and notes platform limitations. Do not treat it as a universal dependency installer; confirm that it applies to your operating system and deployment image. The troubleshooting guidance also calls out platform-specific launch problems. In particular, Alpine-based images need compatible system dependencies and should be tested in the target image.
Troubleshoot “Could not find Chrome” and launch failures
| Symptom | Likely cause | What to check or do |
|---|---|---|
Could not find Chrome after installing puppeteer |
The browser download did not run, was disabled, or is not available from the runtime environment. | Run npx puppeteer browsers install; check whether install scripts were blocked or downloads skipped; confirm the browser cache is present and accessible at runtime. |
puppeteer-core fails when calling launch() |
No browser was supplied. | Provide a valid executablePath or applicable channel, or use the supported remote-browser setup you manage. |
| The browser path is set but launch still fails | The path may be wrong, unavailable to the runtime user, or not a compatible executable. | Verify the path inside the same machine or container that runs the script, then check the Puppeteer release’s supported-browser mapping. |
| The browser is found but exits or fails during startup | Missing operating-system dependencies or environment-specific configuration can prevent launch even when the binary exists. | Check dependencies for the target platform, container, and sandbox environment; reproduce the launch in the actual deployment image. |
| Works locally but not in a build or production container | The build and runtime may not share the browser download, cache directory, permissions, or OS libraries. | Make the browser and cache available to the runtime user, align PUPPETEER_CACHE_DIR if configured, and install applicable system dependencies. |
| A system Chrome launches but pages behave unexpectedly | The installed browser may not match the version expected by the Puppeteer release. | Compare against Puppeteer’s supported-browser mapping and consider using its managed browser for the release. |
Or skip the browser setup
If your goal is to capture website screenshots rather than automate arbitrary browser interactions, ScreenshotNeo offers a screenshot API and MCP server. A single GET request can return a PNG, JPEG, WebP, or PDF. For example, using cURL:
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. Cookie banners are accepted or removed before capture, along with supported newsletter popups and chat widgets. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed; response headers report the page verdict and billing status. Its MCP server lets AI agents using Claude, Cursor, or another MCP client take screenshots. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Sign up for 1,000 free screenshots a month, with no card required.
Which setup should you choose?
-
Use
puppeteerif you want Puppeteer to download and manage its compatible browser by default. -
Use
puppeteer-coreif your application or infrastructure supplies a local or remote browser and you are prepared to configure it. -
Use a system Chrome selectively: it can work, but you are responsible for choosing a path or channel and checking compatibility.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
For containers and CI, verify browser availability, cache location, operating-system dependencies, and permissions in the runtime environment—not only during installation.
Frequently Asked Questions
Does Puppeteer install Chrome or Chrome for Testing?
The standard package’s installation guide describes downloading Chrome for Testing and a chrome-headless-shell binary by default.
Can Puppeteer run without installing a browser on my computer?
Yes, if you use the standard package’s managed browser or connect to a browser managed elsewhere. puppeteer-core does not download one itself.
Is the latest system Chrome guaranteed to work with Puppeteer?
No. Puppeteer documents its compatibility guarantee for the browser bundled or downloaded for the corresponding release.
Free tools Windows power users keep installed
One-click scans. No signup required.
Quick Recap
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.

