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

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

“Error: Failed to launch chrome!” is a wrapper symptom, not a diagnosis. Chrome may be missing, unable to read its cache, incompatible with your Node or Puppeteer version, missing Linux libraries, blocked by a sandbox policy, or denied permission by the operating system or cloud runtime. Turn on browser stderr, reproduce the failure once, and use the first specific error to choose the fix below.

Before changing flags, record the complete stack trace, Chrome stderr, Puppeteer version, Node.js version, operating system or container image, and whether you installed puppeteer, puppeteer-core, or a system Chrome package.

1. Reveal the actual Chrome error

Start with a minimal launch that forwards Chrome output to your terminal:

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.
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ dumpio: true });
  const page = await browser.newPage();
  await page.goto('https://example.com', { waitUntil: 'networkidle2' });
  console.log(await page.title());
  await browser.close();
})().catch(err => {
  console.error(err);
  process.exit(1);
});

dumpio: true pipes browser stdout and stderr into Node’s output. For additional Puppeteer internals, run:

#1 Best Overall
Samsung 14" Galaxy Chromebook Go Laptop PC Computer, Intel Celeron N4500 Processor, 4GB RAM, 64GB Storage, ChromeOS, XE340XDA-KA2US, Student Laptop, Silver
  • 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.
env NODE_DEBUG="puppeteer:*" node script.js

Redact URLs, cookies, authorization headers, file paths and page contents before sharing logs. The first browser-level message—rather than the final JavaScript wrapper—normally identifies the branch to follow.

2. Check the browser installation and cache

When using the full puppeteer package

The full package normally downloads a compatible browser during installation. Its documented default cache is ~/.cache/puppeteer. A skipped install, production install that omitted the download, read-only home directory, or a deployment that did not copy the cache can all produce a launch failure.

  • Run npm ls puppeteer and confirm the package is installed in the runtime that executes your script.
  • Inspect ~/.cache/puppeteer, or the directory set by PUPPETEER_CACHE_DIR.
  • Make sure the service account can traverse and execute the browser files.
  • If your build uses npm ci --ignore-scripts, arrange a separate, intentional browser-install step.

Do not assume that a browser present on your laptop exists in a container or serverless deployment. Build the browser and its cache into the image, or configure a known executable path in the target runtime.

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

When using puppeteer-core or system Chrome

puppeteer-core does not download a browser. Supply either an executable path or a supported channel:

const puppeteer = require('puppeteer-core');
const browser = await puppeteer.launch({
  executablePath: '/absolute/path/to/chrome'
});

Puppeteer says it is only guaranteed to work with the bundled browser. A custom Chrome path is therefore a deliberate compatibility choice: verify the binary exists, is executable, and is compatible with your installed Puppeteer release. Avoid mixing a random system Chrome with puppeteer-core as the first attempted fix.

Environment variables and explicit paths

PUPPETEER_EXECUTABLE_PATH and the executablePath launch option can select a browser. Use one source of truth and print the resolved path in deployment diagnostics. A path that works on Windows will not work in a Linux image, and a path inside a build stage may disappear from the final image.

Rank #2
HP Chromebook 14 Laptop, Intel Celeron N4120, 4 GB RAM, 64 GB eMMC, 14" HD Display, Chrome OS, Thin Design, 4K Graphics, Long Battery Life, Ash Gray Keyboard (14a-na0226nr, 2022, Mineral Silver)
  • 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).

3. Match Node.js and Puppeteer versions

Check both versions together:

node --version
npm ls puppeteer puppeteer-core

Puppeteer’s system-requirements page for version 25.12.0 specifies Node.js 22.12 or newer. That requirement belongs to that Puppeteer version; do not apply it blindly to an older release. If your Node version is older, either upgrade Node to the requirement for the installed Puppeteer version or install a Puppeteer release that supports your approved Node runtime. Rebuild the lockfile and deployment after changing versions so the local and production dependency trees are identical.

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

4. Linux: identify missing shared libraries

Linux failures often occur after Chrome is found but before it can start because a shared library is absent. Locate the binary and run:

ldd /path/to/chrome | grep not

Install the packages corresponding to the missing libraries for your distribution, then run the command again until no required library is reported missing. Common Debian-family requirements include libnss3, libgbm1, GTK and X11 libraries, and font packages. The exact package names vary by distribution and change over time, so use the current Chrome dependency list for your image rather than copying an old package list unchanged.

Minimal images are especially likely to lack fonts, certificate stores, graphics libraries or user-management utilities. Test the same image as the production process, not only as root in an interactive shell.

5. Fix “No usable sandbox!” safely

“No usable sandbox!” is a distinct launch error. Chrome’s sandbox isolates browser content from the host. Correct the runtime so a usable sandbox is available: run as an appropriate non-root user, preserve the required namespace or setuid configuration, and check container security profiles and permissions.

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

Puppeteer’s guidance says, “Running without a sandbox is strongly discouraged.” The commonly copied workaround is:

await puppeteer.launch({
  args: ['--no-sandbox', '--disable-setuid-sandbox']
});

Those flags remove an important isolation boundary. Use them only when you absolutely trust every page and understand the host risk; they are not a general launch fix. Ubuntu 23.10 and later AppArmor restrictions are one documented cause of Chrome for Testing user-namespace sandbox failures, so inspect the host’s AppArmor and container policy instead of immediately disabling the sandbox.

6. Windows-specific launch failures

Extension policy conflicts

Some managed Chrome policies enforce extensions while Puppeteer passes --disable-extensions by default. If the stderr identifies that conflict, launch with:

const browser = await puppeteer.launch({ enableExtensions: true });

Use this only for that policy-related failure; it does not repair missing browsers or unrelated permissions.

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

Permission errors

Puppeteer 22.14.0 and newer attempts to configure permissions for downloaded Chrome during browser installation. On older releases, or when the problem continues, correct ownership and execute permissions on the downloaded files and cache. Also check antivirus, application-control software, and corporate policies that may quarantine or block the browser child process.

7. Containers and managed cloud runtimes

Use a compatible image

Puppeteer’s official Docker image includes Chrome for Testing and its required dependencies. Starting from a smaller base image is possible, but you must add the browser, libraries, fonts, certificates and a usable user configuration yourself. Confirm that the browser is in the final image, not only in an intermediate build stage.

Cloud Run and other hosted runtimes

The default Cloud Run Node runtimes do not include all system packages required by Headless Chrome. Add the required packages in your image or use an image that already contains them. Other Google runtimes may include packages but still need a cache-directory adjustment because build caching can place Puppeteer’s browser somewhere the running process cannot read. Provider-specific workarounds are not interchangeable; check the current runtime documentation for the service and Node generation you selected.

Rank #4
HP 14" HD Chromebook Laptop for Students, Intel Quad-Core N4120(> N4020), 4GB RAM, 64GB eMMC, WiFi, Webcam, HDMI, USB-A&C, 14 Hours Battery Life, Zoom, Chrome OS, CUE Accessories
  • 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.
  • 14" HD Display: 14.0-inch diagonal, HD (1366 x 768), micro-edge, anti-glare. See your digital world in a whole new way. Enjoy movies and photos with the great image quality and high-definition detail of 1 million pixels.
  • Memory & Storage: 4 GB LPDDR4x & 64 GB eMMC Storage. Adequate high-bandwidth RAM to smoothly run multiple applications and browser tabs all at once. An embedded multimedia card provides reliable flash-based storage.
  • Ports:2 x USB 3.0 Type-A,1 x USB 3.0 Type-C,1 x HDMI,1 x Headphone Jack
  • Chrome OS: Chromebook is a computer for the way the modern world works, with thousands of apps. Enjoy the seamless simplicity that comes with Google Chrome and Android apps, all integrated into one laptop. It’s fast, simple, and secure.

Container diagnostics

  • Print process.getuid?.(), the working directory, browser path and cache path.
  • Run ls -l on the executable and cache as the actual service user.
  • Check available shared memory; very constrained containers can crash browsers after launch.
  • Capture the image digest and Puppeteer version when comparing a working and failing deployment.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

8. A practical decision tree

  1. Does stderr say the executable was not found? Install Puppeteer’s browser, copy its cache, or set a valid executablePath.
  2. Does it list “not found” libraries? Install the distribution-specific shared-library and font packages shown by ldd.
  3. Does it say “No usable sandbox!”? Repair sandbox permissions, namespaces or policy; do not default to --no-sandbox.
  4. Does it mention extensions or a Windows policy? Try enableExtensions: true and review managed Chrome policy.
  5. Does Chrome start and then exit? Check permissions, certificates, container limits, user identity, cache access and the page-specific crash message.
  6. Is this puppeteer-core? Provide executablePath or channel, then verify browser/Puppeteer compatibility.

9. Reliability and maintenance practices

  • Pin Node, Puppeteer and the container image; upgrade them together in a test environment.
  • Make browser installation an explicit build step and fail the build if the executable is absent.
  • Use a writable, persistent-enough cache location appropriate to the platform, while avoiding shared mutable caches between incompatible builds.
  • Log launch configuration without secrets, including browser path, versions, OS, user and relevant flags.
  • Keep sandboxing enabled for untrusted websites and isolate browser workers from sensitive host resources.
  • Retry transient navigation failures separately from launch failures; repeatedly retrying a missing dependency only adds delay.

Or skip the browser setup

If your goal is simply to obtain a website screenshot rather than maintain Chrome in your Node runtime, ScreenshotNeo provides a website screenshot API and MCP server. It accepts cookie and consent banners before capture and removes more than 60 known consent platforms, newsletter popups and chat widgets; each step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and billing result.

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

One GET request returns PNG, JPEG, WebP or PDF. The API supports full-page and element captures, device presets, custom viewports, dark mode, retina scale, PDF controls, custom CSS and JavaScript, clicks, waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, chosen cache TTLs, signed links, asynchronous webhooks and bulk capture of up to 100 URLs per call. Its MCP server exposes take_screenshot, get_page_info and capture_pdf to Claude, Cursor and other MCP clients.

See the ScreenshotNeo documentation for parameter details.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

The free plan includes 1,000 screenshots a month with no card. Paid plans start at $5 for 3,000 shots; every feature is available on every plan. Sign up free for ScreenshotNeo.

Frequently Asked Questions

Should I reinstall Puppeteer every time Chrome fails?

No. First capture Chrome stderr. Reinstallation helps only when the browser download or cache is missing or corrupted; it will not fix absent Linux libraries, sandbox policy, or runtime permissions.

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

Can I use Google Chrome instead of Chrome for Testing?

Yes, with an explicit executable path or channel, but compatibility is not guaranteed. Puppeteer guarantees compatibility with its bundled browser, so test custom Chrome deliberately.

Why does the script work locally but fail in production?

Production commonly differs in Node version, browser cache, Linux libraries, user permissions, sandbox policy, container image and writable directories. Compare those values from the same diagnostic launch.

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.