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 →The standard way to launch Chrome with Puppeteer is to install the puppeteer package and call await puppeteer.launch(). It downloads a compatible Chrome for Testing browser and launches headless Chrome by default. Use executablePath or channel when you manage Chrome yourself; with puppeteer-core, one of those is required for a local launch.
Launch Chrome with Puppeteer
Install the package, then launch a browser and open a page. This example uses an illustrative URL; it is not a claim of a tested run.
As an Amazon Associate I earn from qualifying purchases.
npm install puppeteer
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
} finally {
await browser.close();
}
launch() returns a promise for a Browser. Close the browser in a finally block so it is shut down even if page work fails. By default, Puppeteer launches headless Chrome. See the installation guide and launch API.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows 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 reinstallChoose the right package
| Package | Browser handling | Use it when |
|---|---|---|
puppeteer |
Installation downloads a compatible Chrome for Testing browser; since v21.6.0 it also downloads chrome-headless-shell. |
You want the conventional local setup with a Puppeteer-managed browser. |
puppeteer-core |
Does not download a browser. | You manage the browser binary yourself or connect to a remote browser. For local launch(), provide executablePath or channel. |
The documented default browser cache directory is $HOME/.cache/puppeteer beginning with Puppeteer v19. Check the installation guide for installation details and the current browser setup.
#1 Best Overall
Select headless mode or visible Chrome
The Puppeteer 25.12.0 launch-options documentation describes three modes:
headless: trueis the default, regular headless mode.headless: 'shell'uses the separatechrome-headless-shellbinary, the older headless mode. The headless-modes guide notes that it does not completely match regular Chrome behavior and may suit work where performance matters more than the complete feature set.headless: falseopens visible Chrome, useful when you need to watch browser behavior while debugging.
const browser = await puppeteer.launch({ headless: false });
These mode distinctions are documented in the launch options and headless modes guide. The devtools: true option also forces headful mode.
Use an installed Chrome executable
To select a browser installed outside Puppeteer’s download, set an absolute executable path appropriate to the machine, or use a release channel such as chrome where available. The path below is illustrative, not a universal operating-system location.
Recommended Free Tools
const browser = await puppeteer.launch({
executablePath: '/absolute/path/to/chrome',
headless: true,
});
Alternatively, use channel to select a standard release channel. Puppeteer warns that it is only guaranteed to work with its bundled browser, so a separately managed Chrome may have version-compatibility risk. With puppeteer-core, the launch API requires executablePath or channel for a local launch. See LaunchOptions and PuppeteerNode.launch().
Rank #2
Configure launch behavior
Launch options let you tune how Puppeteer starts the browser. Add flags only for a specific need; the API cautions that filtering or removing Puppeteer’s default arguments should be done carefully.
args: additional browser command-line arguments.env: environment variables for the browser process.timeout: launch timeout, 30,000 milliseconds by default.dumpio: pipe browser process output to the Node process.userDataDir: choose a browser profile directory.devtools: open DevTools and force visible mode.
Configuration can also use environment variables. PUPPETEER_EXECUTABLE_PATH selects a browser executable, PUPPETEER_SKIP_DOWNLOAD controls the browser download, and PUPPETEER_CACHE_DIR changes the cache directory. Treat these as configuration alternatives rather than additional requirements for the basic launch. See the configuration reference.
Check runtime and platform requirements
The current system-requirements guide lists Node 22.12 or later. Its Chrome for Testing platform coverage includes Windows x64; macOS x64 and arm64; and Debian/Ubuntu, openSUSE, and Fedora Linux on x64 and arm64. Browser support and operating-system dependencies can change; consult the system requirements guide for the platform dependency lists before deploying.
Connect to a remote browser instead of launching locally
If you need a managed browser process rather than a local Chrome launch, Puppeteer can connect over WebSocket. Browserless documents this pattern for its remote browsers; its platform page describes cloud and self-hosted options.
import puppeteer from 'puppeteer-core';
const browser = await puppeteer.connect({
browserWSEndpoint: 'wss://your-browser-websocket-endpoint',
});
try {
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
} finally {
await browser.disconnect();
}
Replace the endpoint with the one supplied by your remote browser provider. Use disconnect() when you want to end this client connection without closing the provider’s browser. See Browserless’s Puppeteer connection guide and its platform overview.
Troubleshoot launch failures
“Could not find Chrome”
The browser download may not have run, for example if package-manager settings blocked installation scripts. After installing Puppeteer, run npx puppeteer browsers install to install the browser, then retry. Check the installation guide.
Linux reports missing shared libraries
The Chrome binary may depend on system libraries that are absent from the host. Puppeteer’s troubleshooting guide suggests checking dependencies with ldd chrome | grep not, then installing the missing system packages for that distribution. See Puppeteer troubleshooting.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Chrome exits with a sandbox error
Check host sandbox support and, on applicable Linux systems, AppArmor restrictions. Chrome’s sandbox protects the host from untrusted web content; Puppeteer strongly discourages adding --no-sandbox. Treat it only as a risky workaround when the browser will handle content the operator absolutely trusts, not as routine setup. Follow the security guidance in the troubleshooting guide.
Rank #4
Windows policy or permissions prevent startup
Puppeteer’s troubleshooting guide covers extension policies that conflict with its default flags and permissions on downloaded browser files. Check those conditions rather than removing default flags indiscriminately: Windows troubleshooting details.
The selected Chrome version behaves incorrectly
Compare the installed Puppeteer release with its supported-browser mapping. The Chrome for Testing build downloaded for Puppeteer is the best-supported pairing; arbitrary system Chrome versions are not guaranteed. The mapping currently lists Puppeteer v25.12.0 with Chrome for Testing 154.0.8037.57; treat that as a version-specific mapping, not a permanent requirement. Check the live supported browser table.
Launch times out
The launch API’s default timeout is 30,000 milliseconds. Check whether Chrome can start on that machine, including its executable path, libraries, and permissions, before raising timeout. The option is configurable in LaunchOptions.
Or skip the browser setup
If your goal is a website screenshot rather than browser automation, ScreenshotNeo is a screenshot API and MCP server for developers. One GET request can return a PNG, JPEG, WebP, or PDF; its options include full-page capture and CSS-selector element capture. For JavaScript-driven automation, Puppeteer remains the local browser-control route.
Best Value
- Used Book in Good Condition
Example cURL call (replace the URL with the page you want to capture):
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. Before capture, it accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, with response headers identifying the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for AI agents. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 screenshots.
Sign up free for 1,000 screenshots a month, with no card.
Frequently Asked Questions
Can I launch Chrome with Puppeteer on a server without a display?
Yes. Headless mode is the default, so a display is not required for the standard launch.
Can I use Puppeteer with Firefox?
Puppeteer documents browser support mappings beyond Chrome; check the current supported-browser table for the applicable Puppeteer release and browser version.
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.




