Free tools Windows power users keep installed
One-click scans. No signup required.
iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Puppeteer can configure a browser’s download policy and destination folder, but it does not provide a built-in API for handling a download’s completion or file lifecycle. Its Files guide says, “Currently, Puppeteer does not offer a way to handle file downloads in a programmatic way.” You can allow a browser download, then use Node.js code to detect, validate, rename, and clean up the resulting file.
What Puppeteer does—and does not—manage
Download configuration tells the browser whether downloads are allowed and where to save them. It does not give your Puppeteer script a documented download-complete event or manage the file after it is saved. The official Files guide for Puppeteer 25.12.0 makes this limitation explicit: Puppeteer Files guide.
That distinction matters in automation: a click that starts a download is not proof that the file finished writing, is complete, or has the name your application expects. Your Node.js application must handle those checks. The API reference documents the browser-side policy and path settings; confirm that the API matches the Puppeteer version and browser protocol you actually run.
Recommended Free Tools
Downloads are not uploads
The Files guide’s example using input[type=file] and uploadFile() is for uploading a local file through a page form. It does not download a file from the page. Do not treat upload support as a download-completion API.
#1 Best Overall
- FULL HD IPS DISPLAY - Enjoy vibrant, crystal-clear images with 178-degree wide-viewing angles
- AMD RYZEN 3 30 PROCESSOR - Everyday performance you can count on; Multitask, stream, game casually, and edit photos smoothly with responsive power and vibrant HDR visuals
- ENJOY UP TO 14 HOURS AND 15 MINUTES OF BATTERY LIFE - HP Fast Charge restores battery from 0 to 50% in approximately 45 minutes
- AMD RADEON 610M GRAPHICS - Experience smooth entertainment; Built for streaming and multitasking, enjoy realistic visuals and efficient performance for work and play
- STORAGE AND MEMORY - 512 GB PCIe NVMe M.2 SSD offers fast speed and efficient storage; and 8 GB LPDDR5 RAM memory boosts performance with higher bandwidth
Configure a download directory and policy
Use a dedicated directory for each browser context or job. The DownloadBehavior API describes three policy choices: allow downloads, deny them, or use the browser’s default behavior. It requires downloadPath when the policy is allow or allowAndName. With allowAndName, files are named according to their download GUIDs; do not expect the server-provided filename to be preserved.
In the Puppeteer 25.12.0 API, ConnectOptions exposes downloadBehavior as a context-level setting. The following illustrates the shape of that configuration; adapt it to the browser connection and version in your application:
const browser = await puppeteer.connect({
browserWSEndpoint: process.env.BROWSER_WS_ENDPOINT,
downloadBehavior: {
policy: 'allow',
downloadPath: downloadDir,
},
});
The example assumes downloadDir already exists and that your installed Puppeteer version accepts this configuration. Consult the ConnectOptions API reference for the exact version in use. Puppeteer’s BrowserContextOptions Next reference also lists downloadBehavior, but it is explicitly a Next reference, not a stable-release guarantee.
Rank #2
- 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.
Choose a policy for the job
allow: permit downloads and setdownloadPathto the destination.allowAndName: permit downloads and use GUID-based names, withdownloadPathset. Your application may need to map those names to its own records.- Default or deny: use the browser’s default behavior or prevent downloads, as appropriate for the context. Do not assume a default destination or policy without checking the browser setup.
Wait for and manage the downloaded file in Node.js
Because Puppeteer does not provide programmatic download handling, completion detection and file lifecycle management are application responsibilities. One practical pattern is to create a fresh directory for the job, trigger the download, then poll for a file that exists, is no longer changing size, and passes application-specific checks. This is an implementation pattern, not a recipe prescribed by Puppeteer’s documentation.
const fs = require('node:fs/promises');
const path = require('node:path');
const { setTimeout: delay } = require('node:timers/promises');
async function waitForStableFile(directory, timeoutMs = 60_000) {
const deadline = Date.now() + timeoutMs;
let previous = new Map();
while (Date.now() < deadline) {
const entries = await fs.readdir(directory, { withFileTypes: true });
const files = [];
for (const entry of entries) {
if (!entry.isFile() || entry.name.endsWith('.crdownload')) continue;
const fullPath = path.join(directory, entry.name);
const stat = await fs.stat(fullPath);
files.push({ path: fullPath, size: stat.size });
}
for (const file of files) {
const oldSize = previous.get(file.path);
if (oldSize !== undefined && oldSize === file.size && file.size > 0) {
return file;
}
}
previous = new Map(files.map(file => [file.path, file.size]));
await delay(500);
}
throw new Error(`No stable downloaded file appeared within ${timeoutMs} ms`);
}
This Chromium-oriented example ignores a common partial-download suffix, but that is not a universal completion signal. Adapt it to the browser and download types you support. A size that stops changing can still represent an incomplete or invalid file; where correctness matters, validate expected file type, minimum or exact size, checksum, or parseability before accepting it. Set a finite timeout and report a useful failure rather than waiting indefinitely.
Use safe names and cleanup rules
- Keep downloads in an isolated directory rather than mixing them with other jobs or user files.
- Do not trust a suggested filename as a safe filesystem path. Generate an application-owned name or sanitize the name before moving the validated file.
- Use file-type or content checks appropriate to the expected artifact; an extension alone does not prove the contents are valid.
- Delete temporary files and job directories in a
finallyblock after success or failure, unless retention is required for audit or recovery. - When parallel jobs run, give each its own destination so one job cannot mistake another job’s file for its own.
Choose the right Puppeteer browser setup
| Setup | Browser ownership | Useful when | Download consideration |
|---|---|---|---|
puppeteer |
The package downloads Chrome for Testing and chrome-headless-shell by default and drives Chrome using puppeteer-core. |
You want Puppeteer to provide the browser installation as part of package setup. | Configure download behavior for the browser/context you launch, and keep the destination isolated. |
puppeteer-core |
Does not download Chrome; intended for remote connections or browsers you manage yourself. | You already have a remote browser or control executable installation and updates. | Verify that your remote or separately managed browser supports the protocol behavior expected by your Puppeteer version. |
The official Puppeteer Installation guide lists approximate browser-download sizes of 170 MB on macOS, 282 MB on Linux, and 280 MB on Windows for the documented 25.12.0 setup. These are approximate, platform-specific figures, not permanent size guarantees.
Rank #3
- Stunning 15.6" FHD IPS Display: Experience crisp 1920x1080 resolution on this 15.6 inch laptop with an IPS panel that delivers wide viewing angles and vivid colors. The narrow-bezel design maximizes screen real estate for comfortable viewing on this Win 11 laptop, whether you're studying or working.
- Celeron J4105 Processor & 256GB SSD: Powered by a reliable Celeron J4105 processor paired with 12GB DDR4 memory and a fast 256GB M.2 SSD. This laptop computer supports SSD expansion up to 2TB and TF card expansion up to 1TB, so your storage grows with your needs. Delivers smooth multitasking for daily productivity.
- AI-Powered Win 11 Laptop: Built-in AI features enhance your productivity with smart assistance for writing, summarizing, and task management. Pre-installed with Win 11 and includes Office 365 subscription. This student laptop is backed by 1-year warranty and 24/7 customer support.
- All-Day 7000mAh Battery & 180° Hinge: The high-capacity 7000mAh battery keeps this laptop powered through long classes or meetings. The 180-degree lay-flat hinge lets you share your screen effortlessly during presentations. This durable laptop computer adapts to your dynamic workflow.
- Versatile Connectivity Hub: Equipped with USB 3.2, Type-C, Mini HDMI, and 3.5mm audio jack to connect all your peripherals. Stay online anywhere with high-speed 5G WiFi and Bluetooth 4.2. This college laptop keeps you connected at home, in the library, or on the go.
Fix common setup and download problems
Launching fails with a missing Chrome error
Puppeteer’s install guide says package-manager configurations that block install scripts can skip the browser download. Check the package manager’s install-script policy, then run the documented manual install command:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
npx puppeteer browsers install
The installation guide also explains how to opt back in to the package’s postinstall script. Use the method suitable for your package manager and deployment policy.
The browser does not save the download where expected
- Confirm that the active context has the intended download behavior, rather than assuming a page-level setting or unrelated context controls it.
- For
alloworallowAndName, verify thatdownloadPathis set and that the process can write to it. - Check which browser instance is connected. A remote or separately managed browser may have different filesystem paths and permissions from the Node.js host.
- Confirm that the browser’s protocol behavior and your installed Puppeteer API version are compatible.
The script times out or captures a partial file
A click, navigation, or fixed delay alone does not establish that a file has completed. Use a bounded application-side wait, ignore temporary artifacts where appropriate, and validate the final file before consuming it. Increase the timeout only when expected download size or network conditions justify it; also log the directory contents and sizes on failure.
Rank #4
- Efficient Performance for Everyday Computing: Powered by Intel N150 processor with up to 3.6 GHz Intel Turbo Boost Technology, 6 MB L3 cache, 4 cores, and 4 threads, this HP laptop delivers responsive performance for web browsing, streaming, document editing, and multitasking. Paired with 4GB LPDDR5 RAM and 128GB UFS storage, it handles daily tasks smoothly. Includes 1-year Microsoft 365 Personal subscription for Word, Excel, PowerPoint, and cloud storage to maximize your productivity.
- 14-Inch HD Micro-Edge Display:Enjoy clear visuals on the 14-inch HD (1366 x 768) anti-glare screen with 250-nit brightness and 62.5% sRGB coverage. The micro-edge bezel delivers a 79% screen-to-body ratio in a compact design. An HP True Vision 720p HD camera with noise reduction and dual-array microphones supports clear video calls, remote work, and online learning.
- Modern Connectivity and Wireless Technology: Stay connected with Wi-Fi 6 (2x2) for faster wireless speeds and Bluetooth 5.4 for seamless pairing with accessories. Versatile port selection includes 1 USB Type-C 10Gbps with DisplayPort 1.2 for external displays, 2 USB Type-A 5Gbps ports for peripherals, 1 HDMI 1.4b port, 1 headphone/microphone combo jack, and 1 multi-format SD media card reader. Connect monitors, transfer files quickly, and expand your workspace with ease.
- All-Day Battery Life and Portable Design: Enjoy up to 11 hours of video playback, 7.5 hours of mixed usage, or 7.5 hours of wireless streaming on a single charge, perfect for students and professionals on the go. Weighing just 3.24 lb and measuring 12.76" x 8.86" x 0.71", this lightweight laptop fits easily in backpacks and bags. The stylish willow green top cover with matte finish and natural silver keyboard deck with vertical brushing pattern offer a modern, professional look.
- AI-Enhanced Productivity: Access Microsoft Copilot instantly with the dedicated Copilot key for faster assistance. AI Noise Reduction filters background sounds and improves voice clarity during calls. Dual speakers provide clear audio, while the full-size natural silver keyboard and HP Imagepad support comfortable typing and navigation.
The filename is unexpected
If you selected allowAndName, GUID-based naming is expected. Record the files produced by that job and associate the validated result with your own application-level name instead of relying on the server filename.
Or skip the browser setup
If your goal is a clean screenshot of a page rather than downloading an arbitrary file, ScreenshotNeo provides a website screenshot API and MCP server for developers. It does not replace Puppeteer for general browser download workflows, but a single GET request can return an image or PDF:
Crashes, 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 minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11curl -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/consent banners like a visitor and removes 60+ known consent platforms, newsletter popups, and chat widgets; each step can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, with the result identified in response headers. Its MCP server gives AI agents tools for screenshots, page information, and PDF capture. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000.
Sign up free for 1,000 screenshots a month, with no card required.
Best Value
- 【Powerful Performance】Equipped with an Intel N150 CPU, featuring up to 4.4 GHz, ensuring efficient and powerful multitasking capabilities.
- 【Versatile Connectivity】Stay connected with multiple ports including USB 3.0 Type-C, USB 3.0 Type-A, and a headphone/mic combo jack, with Wi-Fi and Bluetooth for seamless wireless networking.
Frequently Asked Questions
Does Puppeteer support file uploads?
Yes. Its Files guide documents uploading a local file through a file input with `uploadFile()`; that is separate from downloading files.
Does `allowAndName` keep the original download filename?
No. The API reference says it names files according to their download GUIDs.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsQuick 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.

