Use @puppeteer/browsers to install, inspect, and remove browser builds from the command line or JavaScript. For the repeatable default, install Chrome for Testing with npx @puppeteer/browsers install chrome@stable; use puppeteer when you want Puppeteer to download its compatible browser, or puppeteer-core when you manage the executable or connect to a remote browser.
What the Puppeteer Browsers API manages
@puppeteer/browsers manages and launches browser binaries through a CLI or programmatic API. It is useful when you need to select a Chrome build, keep it in a known cache, inspect installed browsers, or manage a browser independently of Puppeteer’s default installation flow. See the official Browsers API guide.
As an Amazon Associate I earn from qualifying purchases.
The browser build matters: Puppeteer documents guaranteed compatibility with its bundled browser. A separately installed Chrome executable or channel may work, but compatibility with an external executable is your responsibility. See Puppeteer installation guidance and the launch options reference.
Choose who manages the browser
| Workflow | Who supplies the browser | When it fits | Trade-off |
|---|---|---|---|
puppeteer |
Puppeteer downloads a compatible browser during installation. | You want the documented default and can allow install scripts and store the downloaded browser. | Package installation needs to complete its browser download; cache settings affect where it lives. |
puppeteer-core with a local executable |
You select and manage a system or separately installed browser. | You control the browser binary, use a system Chrome channel, or need a custom setup. | Set the executable path or channel explicitly, and account for the external-browser compatibility caveat. |
puppeteer-core with a remote browser |
An independently run browser is reached over a DevTools-compatible connection. | The browser runs outside the application host. | You manage the remote browser and connection details separately; there is no single hosted vendor implied by this workflow. |
The package distinction is documented in the installation guide: puppeteer downloads a browser, while puppeteer-core does not and is intended for remote or independently managed browsers.
#1 Best Overall
- SLIM. LIGHTWEIGHT. READY TO GO: The all-new slim design is perfect for busy lives on the go.
- SKILLFULLY DESIGNED. MILITARY TOUGH: Built with premium craftsmanship to withstand the occasional drop or ding.
- ALL-DAY, ALL-IN-ONE CHARGING: Power through your school day – and beyond – with a long-lasting 12-hour battery.¹
- 3X FASTER THAN THE PREVIOUS GENERATION OF WIFI: Crush your schoolwork in record time with Wi-Fi that’s three times faster than the previous generation of Wi-Fi.
- YOUR PHONE AND CHROMEBOOK WORK BETTER TOGETHER: Easily transfer files between devices, and control your phone right from your Chromebook.
Install Chrome from the CLI
Install a stable build
- From a Node.js project or shell with
npxavailable, runnpx @puppeteer/browsers install chrome@stable. - Let the command download and unpack Chrome for Testing into the configured browser cache.
- Use
npx @puppeteer/browsers listto inspect the browser installations known to the CLI.
The CLI accepts the stable tag, a milestone, or an explicit build ID. For example, the documented syntax includes chrome@117 and [email protected]; those numeric values are examples of syntax, not recommendations for current releases. Consult the current guide for available versions and command options.
Useful CLI commands
npx @puppeteer/browsers --helpshows top-level help; append a command and--helpto inspect that command’s options.npx @puppeteer/browsers install chrome@stableinstalls stable Chrome for Testing.npx @puppeteer/browsers listlists browser installations in the cache.npx @puppeteer/browsers clearclears cached browser downloads. Use this only when you intend to remove cached installations; it is not a per-browser selection.npx puppeteer browsers install chrome --install-depsinstalls Chrome dependencies on Debian/Ubuntu. It requires root privileges and is supported only on those distributions.
Install a browser programmatically
The install() function downloads and unpacks a browser archive by default. Supply the browser, a build ID, and a cache directory so the selected build and its location are explicit. The following CommonJS example installs stable Chrome; see the API guide for the current option types and aliases.
const { install } = require('@puppeteer/browsers');
async function main() {
const installed = await install({
browser: 'chrome',
buildId: 'stable',
cacheDir: './.cache/puppeteer-browsers',
});
console.log('Executable:', installed.executablePath);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
Platform is detected automatically unless you specify it. The installation options also support an alternate base URL, a build alias, expected SHA-256 checksum, providers, download progress reporting, and disabling unpacking. If you provide expectedHash, installation fails when the archive checksum differs; without it, the API does not perform that expected-hash comparison. Treat checksum verification as an explicit integrity check, not an automatic guarantee.
installDeps is a separate privileged operation for Chrome on Debian/Ubuntu. It invokes system package installation and should be used only where that OS and permission model are appropriate. Review the installation reference before relying on optional settings, since supported options can vary by release.
Rank #2
- FOR HOME, WORK, & SCHOOL – With an Intel processor, 14-inch display, custom-tuned stereo speakers, and long battery life, this Chromebook laptop lets you knock out any assignment or binge-watch your favorite shows..Voltage:5.0 volts
- HD DISPLAY, PORTABLE DESIGN – See every bit of detail on this micro-edge, anti-glare, 14-inch HD (1366 x 768) display (1); easily take this thin and lightweight laptop PC from room to room, on trips, or in a backpack.
- ALL-DAY PERFORMANCE – Reliably tackle all your assignments at once with the quad-core, Intel Celeron N4120—the perfect processor for performance, power consumption, and value (2).
- 4K READY – Smoothly stream 4K content and play your favorite next-gen games with Intel UHD Graphics 600 (3) (4).
- MEMORY AND STORAGE – Enjoy a boost to your system’s performance with 4 GB of RAM while saving more of your favorite memories with 64 GB of reliable flash-based eMMC storage (5).
Inspect, launch, and remove installed browsers
List cached installations in JavaScript
const { getInstalledBrowsers } = require('@puppeteer/browsers');
const browsers = getInstalledBrowsers({ cacheDir: './.cache/puppeteer-browsers' });
for (const browser of browsers) {
console.log({
browser: browser.browser,
buildId: browser.buildId,
platform: browser.platform,
path: browser.path,
executablePath: browser.executablePath,
});
}
Each installed-browser record provides the browser name, build ID, platform, installation path, and executable path. The API also exposes uninstall() for removing an installation; use the browser, build ID, and cache information corresponding to the installation you intend to delete. The CLI alternatives are list and clear. Details are in the Browsers API reference.
Launch a managed browser
When using Puppeteer with an independently installed executable, pass its path explicitly. This example assumes the path comes from your own install/discovery step:
const puppeteer = require('puppeteer-core');
async function main() {
const browser = await puppeteer.launch({
executablePath: '/path/to/chrome',
headless: true,
});
try {
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
} finally {
await browser.close();
}
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
Alternatively, Puppeteer launch options accept a Chrome release channel. A channel or explicit path points Puppeteer at a browser outside its bundled default, so verify compatibility in your environment; the launch options reference makes that limitation explicit.
Free tools Windows power users keep installed
One-click scans. No signup required.
Configure the cache and download behavior
The default Puppeteer cache is ~/.cache/puppeteer. Configuration can change the cache directory, executable path, default browser, and whether downloads are skipped. Environment overrides can also affect these settings. Check the configuration guide when setting cacheDirectory, executablePath, defaultBrowser, or skipDownload.
Rank #3
- Storage: 16GB Flash Memory
- OS: Chrome OS
- Screen Size: 11.6"
- Keep install and launch configuration aligned: a binary in one cache is not automatically the executable selected by a separately configured path.
- For repeatable builds, choose a specific supported build ID rather than assuming a moving channel will resolve to the same browser every time.
- If the project uses
puppeteer-core, plan how the browser is provisioned: that package does not download one. - If you intentionally skip the download, ensure launch uses a valid local executable or a remote DevTools-compatible connection.
Check host prerequisites and network settings
- A compatible Node.js version is required; use the current Browsers API guide for supported runtime requirements.
- Chrome archive extraction requires
unzipon Linux and macOS, andtar.exeon Windows. - The optional Chrome dependency installer is limited to Debian/Ubuntu and requires root privileges.
- The CLI honors
HTTP_PROXY,HTTPS_PROXY, andNO_PROXYwhen theproxy-agentpackage is installed. - Custom providers can be chained with the default provider as fallback, but Puppeteer does not officially support custom providers; compatibility, testing, and maintenance are your responsibility. Puppeteer states it tests and guarantees Chrome for Testing binaries.
For installation, cache, file utility, or launcher logs, the guide documents NODE_DEBUG="puppeteer:browsers:*" and separate debug channels. Use the channel relevant to the failing stage rather than treating every browser error as a download problem.
Troubleshoot common installation and launch failures
| Symptom | Likely cause | What to do |
|---|---|---|
Could not find Chrome |
The package manager skipped Puppeteer’s install script, or a browser download was intentionally skipped. | Run the browser install command manually or configure the package manager to allow the Puppeteer install script. Confirm the configured cache and executable path. See the installation guide. |
| Browser download cannot complete behind a proxy | Proxy environment is absent or the optional proxy-agent package is unavailable. |
Set the appropriate HTTP_PROXY or HTTPS_PROXY value, add NO_PROXY for excluded hosts as needed, and ensure proxy-agent is installed. |
| Archive download succeeds but extraction fails | Required extraction utility is missing for the operating system. | Install unzip on Linux/macOS or ensure tar.exe is available on Windows, then retry. |
| Chrome starts locally but fails in a clean host or container | Required OS libraries may be missing, or the browser is not compatible with the host setup. | On Debian/Ubuntu, consider the documented dependency installation command with root access. Check the selected browser build and host requirements. |
| Puppeteer launches the wrong Chrome | The configured executable path, channel, and downloaded cache refer to different installations. | Inspect the cache with list or getInstalledBrowsers(), then explicitly set the intended executable or channel. |
| Managed browser works differently after an update | A moving stable channel may resolve to a newer build than the prior install. | For reproducibility, install and record an explicit build ID, and update it deliberately when you want a new browser. |
| Installation appears stalled or the failure stage is unclear | Network download, unpacking, cache handling, or launch setup may be the point of failure. | Enable the relevant NODE_DEBUG channel, inspect the command’s help, and distinguish download from extraction or launch errors before changing configuration. |
Performance, reliability, and cost considerations
Browser installation is a setup cost, not part of each automation run: cache the selected browser in environments where builds can reuse it, while ensuring cache invalidation follows the build ID and platform. A clean or ephemeral environment may need to download the browser again. The source documentation gives approximate download-size estimates by operating system, but those are volatile; check the current installation guide before budgeting storage or transfer.
For reliability, pin a build when consistent rendering matters, keep the cache location explicit, and verify the executable actually launched. Let Puppeteer manage the browser when its compatible bundled default is acceptable; manage it yourself when you need control, while accepting the compatibility responsibility. For remote automation, puppeteer-core supports a DevTools-compatible connection, but the right remote host and its cost depend on your deployment and are not specified by Puppeteer’s API documentation.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsOr skip the browser setup
If your goal is a website screenshot rather than running a full browser automation workflow, ScreenshotNeo offers a screenshot API and MCP server. One GET request returns an image or PDF; for example, this cURL request saves a WebP screenshot of Stripe. See the ScreenshotNeo API documentation for options.
Rank #4
- Intel Celeron N4120: 4 Cores & Threads, 1.1GHz Base Clock, Up to 2.6GHz Boost Clock, 4MB Cache, Intel UHD Graphics 600. The perfect combination of performance, power consumption, and value helps your device handle multitasking smoothly and reliably with four processing cores to divide up the work.
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/consent banners and removes 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 cost nothing, and response headers identify the page verdict and whether it was billed. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free 1,000 screenshots a month, with no card required.
Frequently Asked Questions
Does @puppeteer/browsers install Puppeteer itself?
No. It manages browser binaries. Install Puppeteer or Puppeteer Core separately for the automation library.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Can I use the Browsers API with Firefox?
The API supports browser downloads beyond Chrome, but archive utility requirements differ by platform. Check the current Browsers API guide for the relevant browser and platform.
Is a hosted browser required to use puppeteer-core?
No. You can point it at a self-managed local executable or connect it to a remote DevTools-compatible browser.
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.




