What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
Install Puppeteer in a Windows project with npm i puppeteer. The regular puppeteer package normally downloads a compatible Chrome for Testing browser during installation. You can then launch it from Node.js with puppeteer.launch(). If your package manager blocked install scripts and Chrome is missing, run npx puppeteer browsers install.
What you need before installing
- Windows with a user account that can create files and run Node.js commands.
- Node.js and npm installed and available in PowerShell or Command Prompt. Verify with
node --versionandnpm --version. - A project directory in which you can install dependencies.
Puppeteer is a Node.js library, so it is installed per project rather than as a separate Windows application.
Install Puppeteer in a Windows project
-
Create or open the project folder
In PowerShell, make a folder and enter it, or change to an existing application directory:
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.mkdir puppeteer-windows-demo cd puppeteer-windows-demo -
Initialize npm (if this is a new project)
npm init -yThis creates
package.json. Skip this step if the project already has one.#1 Best Overall
HP 14" HD Laptop, Windows 11, Intel Celeron Dual-Core Processor Up to 2.60GHz, 4GB RAM, 64GB SSD, Webcam, Dale Pink (Renewed)- 14" diagonal, 1366x768 resolution, HD BrightView LED, Glossy NON-TOUCH Display
-
Install the end-user package
npm i puppeteerpuppeteerincludes browser-management defaults. During installation it normally downloads a recent Chrome for Testing browser. The download can be large, so keep the terminal open until npm finishes. -
Confirm that the package is present
npm list puppeteerThe output should show Puppeteer under your project. A successful npm install does not always prove that the browser download completed; test a launch next.
Run your first Windows screenshot script
Create a file named shot.js in the project directory:
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: true });
try {
const page = await browser.newPage();
await page.goto('https://example.com', {
waitUntil: 'networkidle2',
timeout: 30_000
});
await page.screenshot({ path: 'example.png', fullPage: true });
console.log('Saved example.png');
} finally {
await browser.close();
}
})().catch(error => {
console.error(error);
process.exitCode = 1;
});
Run it with:
node shot.js
A successful run writes example.png next to the script. The finally block closes Chrome even when navigation or capture fails, which prevents orphaned browser processes in repeated jobs.
What gets installed, and where
The puppeteer package installs the JavaScript library and manages a compatible Chrome for Testing binary. Puppeteer stores downloaded browsers in a cache directory by default. If your machine has limited space or a build agent uses a writable workspace, set a different cache location with PUPPETEER_CACHE_DIR before installing, or configure cacheDirectory in Puppeteer’s configuration file.
Rank #2
- 1.1 GHz (boost up to 2.4GHz) Intel Celeron N5030 Quad-Core
- 4GB DDR4 System Memory; 128GB Solid State Drive
- 11.6" HD (1366 x 768) Multi-Touch Display
- Combo headphone/microphone jack - Noble Wedge Lock slot - HDMI; 2 USB 3.1 Gen 1
- Windows 11 Pro
After changing download-related configuration, reinstall so the browser is placed in the new location. The Windows account that runs Node must be able to read that directory.
Fix “Chrome not found” after npm install
The most common cause is an install policy that blocks dependency scripts. npm can finish writing the package while Puppeteer’s browser-download step never runs.
- From the project directory, run:
npx puppeteer browsers install
- Run the test again:
node shot.js
If the command still cannot download a browser, review your package-manager policy and permit Puppeteer’s install script for this project. In controlled corporate environments, a security policy, proxy, or permissions rule may also prevent the download. Check that the cache directory exists and is readable by the account launching Node.
Choose between puppeteer and puppeteer-core
| Package | Who manages Chrome | Automatic browser download | Launch requirement | Best fit |
|---|---|---|---|---|
puppeteer |
Puppeteer’s browser-management defaults | Normally yes | Usually no explicit path | Applications that want the standard, compatible setup |
puppeteer-core |
Your project or operating environment | No | Provide executablePath or a standard channel |
Teams supplying their own Chrome or Chromium |
Install the managed package with:
npm i puppeteer
Use the library-only package when your deployment already controls the browser:
npm i puppeteer-core
With puppeteer-core, launch by pointing to the executable you manage:
Rank #3
- 256 GB SSD of storage.
- Multitasking is easy with 16GB of RAM
- Equipped with a blazing fast Core i5 2.00 GHz processor.
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
headless: true,
executablePath: 'C:\Program Files\Google\Chrome\Application\chrome.exe'
});
await browser.close();
})();
The exact path differs by Windows installation and user. A standard installed browser can also be selected with a supported channel launch option instead of a hard-coded path. Do not choose puppeteer-core merely to avoid a download: you then own browser installation, version updates, permissions, and compatibility.
Install a specific Chrome for Testing channel
If you intentionally manage the browser binary but still want Puppeteer’s browser installer, install a channel explicitly:
npx @puppeteer/browsers install chrome@stable
Use this approach when your build process pins browser installation separately from the npm dependency. Keep the resulting cache available to the account that runs your script.
Windows launch problems and precise fixes
Chrome policy prevents launch
Some managed Windows environments enforce Chrome extension policies. If policy restrictions are the reason launch fails, try Puppeteer’s documented enableExtensions: true launch option. Apply it only when the policy-related error calls for it.
Access-denied or sandbox permissions
Current Puppeteer versions attempt to configure permissions for downloaded Chrome on Windows. If an older version or a failing environment reports an access-denied sandbox error, repair permissions on the downloaded Chrome directory using Windows’ icacls procedure, then retry as the same account that runs Node. Avoid broad permission changes on unrelated folders.
Recommended Free Tools
Rank #4
- EFFORTLESS EVERYDAY PERFORMANCE: Powered by Intel Celeron N4020 processor and Windows 11 Home system, delivering reliable, low-power efficiency for daily tasks like document editing, email, online classes, and web browsing
- 15.6-INCH FULL HD DISPLAY: Enjoy immersive visuals on the 15.6" FHD (1920x1080) anti-glare screen with micro-edge bezels. Delivers clear details and comfortable viewing for long study sessions, working on spreadsheets, and video playback
- RESPONSIVE MULTITASKING & STORAGE: Built with 4GB LPDDR4 RAM and 128GB eMMC storage for smooth daily essential use. Expand your storage by up to 1TB via the integrated TF card slot to easily store movies, photos, and working files
- ADVANCED CONNECTIVITY: Outfitted with 2x Full-Featured Type-C ports for data transfer, fast charging, and dual-monitor output, alongside 2x USB 3.2 Gen1 ports and a 3.5mm audio jack for complete peripheral compatibility
- LIGHTWEIGHT & SILENT OPERATION: Slim and portable for effortless travel or commuting. Features a 1MP HD webcam for remote meetings, 38Wh battery with 45W Type-C fast charging, and a fanless silent design for peaceful work environments.
Browser downloaded but cannot be read
Inspect the configured cache path, confirm that it exists, and verify that the service account, scheduled task, or terminal user has read and execute access. A browser downloaded under one Windows profile may not be usable by another profile when the cache is private.
Navigation times out
A browser can launch correctly while a page still fails to load. Check the URL, proxy and firewall rules, then increase the navigation timeout only when the target is legitimately slow:
await page.goto('https://example.com', {
waitUntil: 'domcontentloaded',
timeout: 60_000
});
Use networkidle2 for pages that need most network requests settled, but remember that analytics, live feeds, and other long-lived requests can delay that condition.
Blank or incomplete screenshots
Wait for the content that matters rather than relying only on a fixed delay:
Free tools Windows power users keep installed
One-click scans. No signup required.
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
await page.waitForSelector('main', { timeout: 30_000 });
await page.screenshot({ path: 'page.png', fullPage: true });
For lazy-loaded pages, scroll or wait for the application’s own ready signal before capturing. A screenshot taken before client-side rendering finishes can be valid but visually incomplete.
Best Value
- WINDOWS 11 | STABLE PERFORMANCE: Powered by Intel Celeron N4020 processor and Windows 11 system, this laptop delivers stable performance for everyday computing tasks. It supports web browsing, online learning, document editing, email communication, and basic office work with optimized power efficiency, providing a practical and reliable experience for essential daily use for daily use.
- 15.6” FHD IPS DISPLAY: Features a 15.6-inch Full HD IPS display with narrow bezels, offering wider viewing angles and clearer image details compared to standard panels. The improved screen-to-body ratio enhances visual experience for study, reading, document work, and video playback, making it suitable for both productivity and entertainment use.
- 4GB DDR4 + 128GB eMMC STORAGE: Equipped with 4GB DDR4 memory and 128GB eMMC storage for everyday basics such as browsing, documents, email, and online learning platforms. The built-in TF card slot supports storage expansion up to 1TB, giving you more flexibility for files, photos, videos, and daily documents. TF card not included.
- CONNECTIVITY & PORTS: Includes 1× TF card slot, 2× USB 3.2 Gen1 ports, and 2× full-featured Type-C ports (USB 3.2 Gen1). The Type-C ports support data transfer, charging, and video output, enabling flexible connection with external devices such as monitors, storage, and peripherals for daily work and study use.
- LIGHTWEIGHT DESIGN | ONLINE COMMUNICATION: Designed with a slim, portable profile, this laptop is easy to carry for school, commuting, and travel. A built-in 1MP front camera supports online classes, video meetings, remote communication, and everyday conferencing. The 3300mAh battery works with the low-power system design to support practical daily use, while thermal optimization helps maintain quieter operation during extended tasks.
Make installation repeatable in teams and CI
- Commit
package-lock.jsonand usenpm ciin clean builds so the dependency tree is reproducible. - Cache Puppeteer’s browser directory in CI, or run
npx puppeteer browsers installduring provisioning when the cache is intentionally ephemeral. - Keep the cache path on a writable local or workspace volume, not a location restricted by Windows policy.
- Run the smoke test after dependency installation and fail the job if Chrome cannot launch.
- Close every browser in a
finallyblock and set explicit navigation timeouts.
When a build uses puppeteer-core, provision Chrome separately and pin the executable or channel as part of the build configuration. This makes ownership clear but shifts updates and compatibility checks to your team.
Performance, reliability and cost considerations
Browser startup is usually more expensive than opening a new page in an already-running browser. For a batch, launch one browser and create or close pages per URL, while limiting concurrency to the memory available on the Windows host. Reuse the downloaded browser cache across runs, but refresh it deliberately when upgrading Puppeteer or changing the browser channel.
Full-page screenshots can consume substantial memory on long documents. Capture a specific element when that is all you need, and choose an image format and viewport appropriate to the output. Treat third-party pages as untrusted: do not expose secrets in page scripts, cookies, or custom headers, and isolate jobs that visit user-supplied URLs.
Or skip the browser setup
If your goal is a reliable website image rather than maintaining Chrome on Windows, ScreenshotNeo provides a single HTTP request. It accepts a URL and returns PNG, JPEG, WebP, or PDF. Before capture it accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing result in X-Page-Verdict and X-Billed headers.
cURL:
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)
r.raise_for_status()
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}`);
if (!res.ok) throw new Error(`${res.status} ${res.statusText}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));
See the ScreenshotNeo documentation for the full request options. It also offers an MCP server with take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. Features include device presets, arbitrary viewports, retina scale, selectors, dark mode, custom CSS and JavaScript, clicks, waits, request blocking, headers, cookies, user agents, timezone and geolocation, transparent backgrounds, resizing, TTL caching, signed links, asynchronous webhooks, bulk capture of up to 100 URLs per call, a usage API, and an OpenAPI specification.
The Free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 shots; every feature is included on every plan. Create a free ScreenshotNeo account to start.
Quick decision checklist
- Choose
puppeteerwhen you want Puppeteer to download and manage a compatible browser. - Run
npx puppeteer browsers installwhen installation scripts were blocked. - Choose
puppeteer-coreonly when your project deliberately supplies Chrome or Chromium. - Set and verify a shared cache path when multiple Windows users or CI jobs run the code.
- Use a managed screenshot API when maintaining a local browser is unnecessary.
Frequently Asked Questions
Does installing Puppeteer install Google Chrome for normal browsing?
The package normally downloads a Chrome for Testing browser for Puppeteer’s automation; it is not the same as installing the consumer Chrome application for everyday browsing.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsCan I use my existing Chrome installation?
Yes. Use puppeteer-core and provide its executable path, or use a standard channel launch option when the browser is installed in a recognized location.
Why did npm report success but Puppeteer still fail?
A package-manager policy may have blocked Puppeteer’s install script. Run npx puppeteer browsers install, then verify the cache permissions and launch again.
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.

