DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober 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 PC×
Skip to content
World desk5 min

How to Launch Chrome with Puppeteer

Install Puppeteer and launch its compatible Chrome with one call, or configure a managed executable, headless mode, remote browser, and common fixes.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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

Choose 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.

Select headless mode or visible Chrome

The Puppeteer 25.12.0 launch-options documentation describes three modes:

  • headless: true is the default, regular headless mode.
  • headless: 'shell' uses the separate chrome-headless-shell binary, 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: false opens 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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().

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.

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

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.

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

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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

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
The SQL Programming Language: .
  • 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.

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

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.

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
Crashes, No Sound, or Screen Glitches?Free driver scan

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.