Free tools Windows power users keep installed
One-click scans. No signup required.
Install Chrome Headless Shell with Chrome for Testing’s @puppeteer/browsers command-line utility. To get the latest available Stable-channel build, run npx @puppeteer/browsers install chrome-headless-shell@stable. To install a particular release, replace stable with its exact version. First confirm that the release is available for your operating system and CPU architecture in the Chrome for Testing availability dashboard; the official documentation does not establish a complete current platform matrix.
Choose Headless Shell or modern Chrome Headless
“Headless Chrome” can mean either modern Chrome running without a visible browser window or the separate chrome-headless-shell executable. They are related, but not interchangeable choices for every automation job.
- Chrome Headless Shell is the standalone form of Chrome’s former, separate Headless implementation. It became available as a standalone binary beginning with Chrome 120. Since Chrome 132.0.6793.0, that former implementation is available only as the standalone binary.
- Unified Headless is the regular Chrome browser running without displaying its windows. Chrome introduced this unified mode in Chrome 112.
Chrome for Developers characterizes Shell as a lighter wrapper with fewer dependencies, including no X11/Wayland or D-Bus requirement. It describes unified Headless as more authentic and feature-rich. That is a workload distinction, not a published guarantee that Shell will always run faster or use less memory in your environment.
Which one should you install?
| Need | Better starting choice | Why |
|---|---|---|
| Screenshot automation or web scraping where the Shell’s coverage suits the task | Chrome Headless Shell | Chrome describes it as a lighter wrapper that can be useful for these workloads. |
| High-accuracy end-to-end app tests or browser-extension tests | Unified Chrome Headless | Chrome describes unified Headless as more authentic and feature-rich. |
| Puppeteer automation without a special reason to select one mode | Puppeteer’s default compatible Chrome for Testing download | Puppeteer normally downloads a compatible browser automatically; manual installation may be unnecessary. |
These descriptions do not establish that every website or test behaves identically between modes. If your test depends on Chrome features or behavior, select the mode that matches the browser you intend to exercise and validate the test against it.
#1 Best Overall
Check release and platform availability
Chrome for Testing publishes availability information for Stable, Beta, Dev, and Canary releases through its dashboard and JSON API endpoints. Use those sources to identify a release and verify that an artifact is offered for your target operating system and CPU architecture. The official documentation reviewed does not provide a complete current platform-and-architecture list, so do not assume that every channel or version has a build for every target.
Stable for routine installation
Use the Stable channel selector when you want the latest available Stable-channel Shell build. The word “latest” is channel-relative: it means the latest build available through that installer selector, not a fixed version you can reproduce indefinitely.
An exact version for repeatable runs
For CI or other repeatable automation, check the availability dashboard or JSON API first, then install an exact version. Chrome for Testing is designed to let teams fetch and pin browser versions so repeated test runs can use a consistent browser release. Pinning alone does not make runs fully identical: your operating system, application, test data, and other environment details can also affect results.
Install Chrome Headless Shell
- Check the target. In Chrome for Testing availability information, identify the desired channel or exact version and confirm that it has an artifact for your operating system and CPU architecture.
- Open a shell with Node.js and npm available. The documented command uses
npx, which runs the@puppeteer/browserspackage utility. Ifnpxis not available in your environment, resolve that Node.js/npm setup before running the browser installer. - Install the latest available Stable build:
npx @puppeteer/browsers install chrome-headless-shell@stable - Or install an exact version. The following version is the example shown in the official documentation; it is not a claim that it is the latest release or still available for your platform:
npx @puppeteer/browsers install chrome-headless-shell@120.0.6098.0Substitute a version you have confirmed in Chrome for Testing availability information.
- Use the installed executable in your automation. The installer downloads the Shell binary; your automation code still needs to launch that binary. If you use Puppeteer, select Shell mode as described below. For another automation framework, configure its browser executable path according to that framework’s documentation and the location reported by your installed browser setup. The Chrome materials cited here do not establish one universal executable path across platforms.
Channel or version syntax
The documented forms are chrome-headless-shell@stable for the latest available Stable build and chrome-headless-shell@<version> for a version pin. Chrome for Testing availability data also covers Beta, Dev, and Canary channels. Check the current installer documentation and availability data before assuming a particular channel label or artifact is available for your target.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesRank #2
Use the Shell with Puppeteer
Puppeteer offers two distinct Headless selections: headless: 'shell' launches Chrome Headless Shell, while headless: true launches unified Chrome Headless. Puppeteer normally downloads a compatible Chrome for Testing browser automatically, so start with that default setup unless you need to manage the browser binary yourself or have a reason to use Shell specifically.
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch({
headless: 'shell',
});
try {
const page = await browser.newPage();
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
console.log(await page.title());
} finally {
await browser.close();
}
To use unified Headless instead, change the launch option to headless: true. If Puppeteer has already downloaded its compatible browser and unified Headless is all you need, a separate manual Shell installation is generally unnecessary. For a manually managed browser, ensure the browser executable you configure is the version and mode your test expects; the official materials do not prescribe a single cross-platform path for locating it.
Keep browser versions consistent in CI
Use an exact Chrome for Testing version when browser changes between runs would make failures difficult to diagnose. Record the selected version alongside your test configuration, check that the artifact remains available for your CI platform, and update the pin deliberately rather than relying on a moving Stable selector for reproducible jobs.
- Local experimentation: the Stable selector is convenient when you want the latest available Stable Shell.
- Repeatable CI: use an exact version after confirming its platform artifact. Align browser updates with the tests that exercise them.
- Puppeteer-managed browser: consider letting Puppeteer download its compatible Chrome for Testing binary by default rather than adding a separate installation step.
Troubleshoot installation and launch problems
The official installation materials do not provide a distribution-by-distribution dependency guide or a complete list of environment-specific launch failures. The checks below address the installation choices documented by Chrome for Testing without guessing at operating-system package names or flags.
Rank #3
npx is not found
Likely cause: Node.js/npm is missing or its executable directory is not available in the current shell’s PATH. Fix: verify that your environment provides npx, then reopen the terminal or CI step with the corrected environment and rerun the documented installer command.
The requested version or channel cannot be installed
Likely cause: the version was mistyped, is not available as a Shell artifact, or does not have a build for your target platform. Fix: check Chrome for Testing’s dashboard or JSON API for the exact version, channel, operating system, and CPU architecture before retrying. Do not treat the documentation’s example version as a current-release recommendation.
The install succeeds, but Puppeteer launches a different browser mode
Likely cause: installing Shell does not by itself select Shell in Puppeteer. Fix: set headless: 'shell' for the standalone Shell, or headless: true for unified Headless, and confirm that your automation is using the browser binary you intended.
The project has a redundant browser download step
Likely cause: Puppeteer already downloads a compatible Chrome for Testing browser by default. Fix: decide whether you need a manually managed Shell binary. If not, remove the extra install step and let Puppeteer manage its compatible browser; if so, keep the explicit install and configure the intended browser mode.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Rank #4
Behavior differs from a regular Chrome test
Likely cause: your workload depends on features or fidelity that differ between Shell and unified Headless. Fix: try unified Headless with headless: true when the test needs the more authentic, feature-rich Chrome mode described by Chrome. Choose based on the requirements of the test rather than an assumed universal speed advantage.
Or skip the browser setup
If your goal is to capture a website screenshot rather than manage a local browser, ScreenshotNeo provides a screenshot API and MCP server. Its one-call API example is:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
See the ScreenshotNeo documentation for request options. Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents take screenshots. The Free plan includes 1,000 screenshots a month with no card, and paid plans start at $5 for 3,000. Sign up for free and get 1,000 screenshots a month with no card.
Frequently Asked Questions
Does Chrome Headless Shell require Chrome to be installed separately?
The documented installer downloads the standalone Shell binary; the cited Chrome materials do not say that a separate regular Chrome installation is required.
Recommended Free Tools
Can I install a specific Beta, Dev, or Canary Shell build?
Chrome for Testing availability information covers those channels, but confirm that the exact Shell artifact and target-platform build are available before selecting one.
Does the documented version 120.0.6098.0 represent the current Stable release?
No. It is an example version in the official installation documentation, not a statement about the current release or its present availability.
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.

