Recommended Free Tools
Puppeteer’s DownloadPolicy controls files that a page tries to download while the browser is running. It has four values: deny, allow, allowAndName, and default. Choose deny to block downloads, allow to save them under a configured download path, allowAndName to save them using download GUIDs, or default to defer to Chrome’s default behavior when available.
What Puppeteer’s DownloadPolicy controls
DownloadPolicy is a runtime browser setting for download requests made by pages that Puppeteer controls. In Puppeteer’s API documentation version 25.12.0, checked October 3, 2026, the four documented policy strings are deny, allow, allowAndName, and default.
This is separate from downloading a browser binary when installing Puppeteer. The policy does not decide whether Puppeteer downloads Chrome during package installation.
Compare the four DownloadPolicy values
| Policy | Effect | Download path | When to use it |
|---|---|---|---|
deny |
Denies download requests. | Not required for this policy. | When automation must prevent pages from downloading files. |
allow |
Allows download requests and uses the browser’s usual filename behavior. | Required. Set downloadPath to choose the default save directory. |
When you want downloads saved to a known directory and do not need GUID-based names. |
allowAndName |
Allows downloads and names files using their download GUIDs, rather than the website’s suggested filenames. | Required. | When GUID filenames are acceptable and your automation can map GUIDs to the files it expects. |
default |
Uses Chrome’s default behavior when available; otherwise, downloads are denied. | Not stated as required for this policy. | When you want to defer to the browser’s available default behavior. |
Puppeteer’s DownloadBehavior documentation says downloadPath is required for both allow and allowAndName. Do not rely on an implicit save location when enabling either policy.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minute#1 Best Overall
Which Puppeteer download policy should you use?
- Choose
denywhen downloads are unwanted or should be prevented as part of the automation. - Choose
allowwhen you need files saved to a known directory and want browser filename behavior. - Choose
allowAndNameonly when you can work with GUID-based filenames or maintain a mapping from GUIDs to the files you need. - Choose
defaultwhen the browser’s default behavior is what you want and you are comfortable with denial if that behavior is unavailable.
Download behavior and browser contexts
Puppeteer’s ConnectOptions includes an optional downloadBehavior setting for a context. At the lower-level Chrome DevTools Protocol interface, Browser.setDownloadBehavior can take a browser-context ID; if you omit it, the behavior applies to the default browser context. That protocol method is marked experimental in the current protocol reference, so check the reference for the Chromium version you use before depending on it.
The protocol method also has an eventsEnabled parameter, which defaults to false in the current reference. Do not assume download events will be emitted unless you enable them where appropriate.
Rank #2
Runtime downloads are not Puppeteer installation downloads
If the issue is that Puppeteer did not install a browser, changing DownloadPolicy will not fix it: that policy concerns downloads initiated by pages in a running browser. Puppeteer’s installation guide says the puppeteer package normally downloads a compatible browser, while puppeteer-core does not download Chrome and is intended for users who manage a browser or connect to a remote one. If install scripts are blocked, the guide documents npx puppeteer browsers install as a manual browser-install command.
Or skip the browser setup
If your goal is to capture a webpage rather than automate its downloads, ScreenshotNeo offers a screenshot API and MCP server. One GET request can return an image or PDF without setting up a Puppeteer browser in your project. The API accepts screenshot options, but it is not a substitute for downloading files from a page.
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #3
Example request, with the target URL set to Stripe:
Quick Recap
Best Value
Rank #4
curl -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. Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed. Its 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 ScreenshotNeo’s free plan.
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.

