The current Puppeteer release is 25.12.0, published on September 23, 2026. The official compatibility table pairs it with Chrome for Testing 154.0.8037.57 and Firefox 156.0.1. Because browser and package releases move frequently, confirm those values in the official changelog and supported-browser table immediately before upgrading.
What is the current Puppeteer version?
Puppeteer 25.12.0 is the newest version listed in the official changelog, dated September 23, 2026. The preceding release shown there is 25.11.0, dated September 13, 2026. The 25.12.0 entry includes browser-component updates and fixes, but the supported-browser table is the authoritative place to check the final browser pairing.
| Item | Current value | Where to verify |
|---|---|---|
| Puppeteer package | 25.12.0 | Official changelog |
| Release date | September 23, 2026 | Changelog entry |
| Chrome for Testing pairing | 154.0.8037.57 | Supported-browser table |
| Firefox pairing | 156.0.1 | Supported-browser table |
| Previous changelog release | 25.11.0 (September 13, 2026) | Changelog |
These are time-sensitive values, not permanent compatibility promises. If the table does not list the exact Puppeteer version you have installed, its documented rule is to use the browser version associated with the immediately prior Puppeteer release.
Which browser versions work with Puppeteer 25.12.0?
Chrome
Puppeteer 25.12.0 is paired with Chrome for Testing 154.0.8037.57. Puppeteer v20 and later downloads and works with Chrome for Testing, so a normal puppeteer installation can obtain the browser revision expected by the package.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
#1 Best Overall
Firefox
The supported pairing for Puppeteer 25.12.0 is Firefox 156.0.1. Puppeteer v23 and later supports stable Firefox. Do not assume that any arbitrary Firefox build is interchangeable: use the compatibility table when selecting a system-installed browser or diagnosing launch failures.
What happens when the versions do not match?
Puppeteer may still launch against a nearby browser build, but mismatches can produce protocol errors, missing features, rendering differences or failures during startup. For reproducible CI, keep the Puppeteer package and browser revision aligned with the official table, or allow Puppeteer to manage its compatible browser download.
Chrome CDP versus Firefox WebDriver BiDi
The automation protocol depends on the browser. Puppeteer uses the Chrome DevTools Protocol (CDP) by default for Chrome. For Firefox, WebDriver BiDi is the default. The official FAQ describes BiDi support as production-ready for both browsers from Puppeteer 23 onward, while Chrome CDP remains supported.
| Browser | Default protocol | Practical implication |
|---|---|---|
| Chrome for Testing | CDP | Chrome-specific DevTools capabilities and the established Puppeteer Chrome workflow |
| Firefox | WebDriver BiDi | Use the Firefox support matrix and test browser-specific behavior before switching production workloads |
If a script depends on a Chrome-only CDP behavior, validate it separately before moving the same code to Firefox. Conversely, a BiDi-based workflow should be tested against the Firefox version listed for your Puppeteer release.
How to install or upgrade to 25.12.0
Install in a new JavaScript project
Puppeteer is a JavaScript library. The documented installation workflow adds it to a project and downloads a compatible browser by default. From your project directory, run:
npm install [email protected]
Then verify the dependency recorded in package.json and the lockfile. A minimal launch test is:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com', {waitUntil: 'domcontentloaded'});
console.log(await page.title());
await browser.close();
})();
For an ES module project, use:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com', {waitUntil: 'domcontentloaded'});
console.log(await page.title());
await browser.close();
The official getting-started guide covers launching or connecting to a browser, creating pages and manipulating them.
Rank #2
Upgrade an existing project
- Check your current package:
npm list puppeteer puppeteer-core. - Read the 25.12.0 entry in the changelog for changes between your installed release and 25.12.0.
- Install the intended package explicitly:
npm install [email protected]. - Run your launch, navigation, screenshot and PDF tests in a clean environment.
- Confirm the browser actually started and compare it with the supported-browser table.
- Commit the updated lockfile so CI receives the same dependency and downloaded-browser selection.
Do not treat a generic “latest” command as a permanent version pin. Release data can change after this article’s September 30, 2026 publication date, so check the package metadata and official instructions when performing the upgrade.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →puppeteer versus puppeteer-core
puppeteer is the full package workflow that can download a compatible browser. puppeteer-core is intended for integrations where you provide or manage the browser yourself. When upgrading, verify which package your application uses; the changelog covers both package lines, but their installation and browser-management responsibilities differ.
Browser download and configuration choices
Installation documentation says Puppeteer downloads a compatible browser by default. The configuration API lets you select a browser or skip downloads, which is useful when a container image, operating-system package or CI cache already provides the browser.
Let Puppeteer manage the browser
- Use the regular
puppeteerpackage. - Allow its post-install browser download to complete.
- Cache the downloaded browser directory in CI when your build system supports it.
- Use the browser version associated with your exact Puppeteer release.
Use a managed or system browser
- Configure the browser choice according to the installation guide.
- Skip the download only when your environment supplies the required executable.
- Pass the executable path or connection settings explicitly in your launch code.
- Record the browser build in deployment documentation so another machine does not silently use a different revision.
The browser-management documentation also provides command-line and programmatic tools for managing downloaded browsers. Configuration details are documented in the Puppeteer configuration API.
Checking your installed version and browser
Check the npm dependency
npm list puppeteer puppeteer-core
This reports the package version resolved in the current project. Check the lockfile as well if multiple workspaces or overrides are involved.
Check the release and support mapping
Compare the resolved package version with the changelog, then look up that exact version in the supported-browser table. For 25.12.0, the expected values are Chrome for Testing 154.0.8037.57 and Firefox 156.0.1.
Check what executable your process launches
Log the configured executable path or launch configuration in a diagnostic run. A correct npm version does not prove that a system-installed browser is the one being used; explicit configuration and container images can override the downloaded browser.
Troubleshooting Puppeteer 25.12.0
“Could not find Chrome” or a missing executable
Cause: the browser download was skipped, failed, or is unavailable in the runtime image.
Fix: reinstall the full puppeteer package and allow its compatible browser download, or configure a valid executable supplied by your environment. In CI, verify that the browser-management step runs before tests and that the cache path is restored.
Free tools Windows power users keep installed
One-click scans. No signup required.
Protocol or target-closed errors at launch
Cause: the executable is outside the supported pairing, the browser process is crashing, or the environment is missing required runtime dependencies.
Fix: compare the browser with the official matrix, remove accidental executable-path overrides, inspect browser stderr, and reproduce with the browser managed by Puppeteer. If the issue occurs only in a container, verify the image’s system libraries and sandbox policy.
Firefox behaves differently from Chrome
Cause: the browsers use different default protocols and do not expose identical behavior.
Fix: test the workflow against Firefox 156.0.1 specifically, account for WebDriver BiDi semantics, and avoid assuming Chrome CDP-only features are portable.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →The package upgraded but the browser did not
Cause: a persistent browser cache, lockfile, or system executable is being reused.
Rank #4
Fix: inspect the resolved package and executable path, clear or deliberately refresh the browser cache, and ensure CI is not restoring an old browser directory under a new dependency lockfile.
Installation fails in an offline build
Cause: the default installation expects to obtain browser software, but the build has no network access.
Fix: pre-provision the compatible browser in the image or use the documented configuration to skip downloads and point Puppeteer at that browser. Keep the provisioned version aligned with the support table.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesReliability, performance and cost considerations
Reproducibility
Pin the npm dependency and commit the lockfile. Pin or otherwise control the browser revision too. This prevents a package update, base-image refresh or cache change from altering rendering or protocol behavior unexpectedly.
Startup time
Launching a browser for every individual operation adds overhead. For a test suite or batch job, reuse a browser process where safe, create separate pages or contexts for isolation, and close the browser in a finally path. Measure your own workload rather than assuming a fixed launch time; no universal benchmark is established here.
Network and storage
The full package’s browser download consumes build-time network bandwidth and disk space. Cache it in CI, but invalidate the cache when changing Puppeteer or the selected browser. If your deployment already contains a compliant browser, a managed-browser configuration can avoid duplicate downloads.
Security and isolation
Run untrusted pages in an appropriately isolated environment, restrict credentials exposed through cookies or headers, and review any custom executable flags required by your platform. Do not disable browser sandboxing casually; make that decision according to your container and security model.
Recommended Free Tools
Best Value
- Used Book in Good Condition
Or skip the browser setup
If your goal is a clean website image or PDF rather than browser automation, ScreenshotNeo provides a single HTTP request and an MCP server for AI clients such as Claude and Cursor. Its capture pipeline accepts cookie and consent banners as a visitor and removes more than 60 known consent platforms, newsletter popups and chat widgets before the shot; 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.
Use the API documented at ScreenshotNeo’s API documentation:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python:
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)
Node.js:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
ScreenshotNeo also supports full-page and element captures, device presets, custom viewports, retina scale, dark mode, 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, bulk calls for up to 100 URLs and a usage API. Every feature is available on every plan. The MCP tools are take_screenshot, get_page_info and capture_pdf.
The Free plan includes 1,000 shots per month with no card. Paid plans start at $5 for 3,000 shots; yearly billing provides two months free. Create a free ScreenshotNeo account to try it without adding a card.
Windows 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 reinstallCrashes, 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 minuteFAQ
Is 25.12.0 the latest version everywhere?
It is the version listed in the official Puppeteer changelog checked on September 29, 2026. A later release may appear, so verify the changelog at the time you install.
Does Puppeteer 25.12.0 support stable Firefox?
Yes. The supported pairing is Firefox 156.0.1, and Puppeteer’s documentation states that stable Firefox is supported from v23 onward.
Should I install Chrome separately?
Not normally when using the full puppeteer package: its documented workflow downloads a compatible browser. You need separate browser provisioning only when deliberately managing the executable yourself.
Where can I confirm configuration option names?
Use the official installation guide and the configuration API reference, then test the resulting executable and browser version in your deployment environment.
Frequently Asked Questions
Can I use a newer Chrome build with Puppeteer 25.12.0?
Use the official supported-browser table first. If your exact pairing is not listed, follow its rule of using the browser version associated with the immediately prior Puppeteer release, and test the result before production use.
What is the difference between Puppeteer and Puppeteer Core?
The full puppeteer package manages a compatible browser download by default; puppeteer-core is for setups where your application supplies or manages the browser.
The Bottom Line
Puppeteer 25.12.0 is the current documented release as of September 30, 2026, paired with Chrome for Testing 154.0.8037.57 and Firefox 156.0.1. Pin both the package and browser strategy, then recheck the official compatibility pages whenever you upgrade.
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.




