Use the public getDownloadUrl(browser, platform, buildId, baseUrl?) helper from @puppeteer/browsers to get the archive URL for one specific browser, platform, and build. It returns a URL; it does not download or install the browser. For an installation, use the package’s install API or Puppeteer’s browser-install command instead.
Get a browser download URL with getDownloadUrl
The API reference labels this helper version 25.10.0. The references cited here were accessed on October 3, 2026; older Puppeteer releases may not expose an identical API. Use the exact build ID and platform you intend to install rather than guessing an archive URL pattern.
As an Amazon Associate I earn from qualifying purchases.
import { Browser, BrowserPlatform, getDownloadUrl } from '@puppeteer/browsers';
const url = getDownloadUrl(
Browser.CHROME,
BrowserPlatform.LINUX,
'YOUR_BUILD_ID',
);
console.log(url.href);
Replace YOUR_BUILD_ID with the build ID for the browser you need. Choose the matching Browser and BrowserPlatform values; the helper returns a JavaScript URL object.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Use a different download host
The optional fourth argument, baseUrl, changes the base host used to form the URL. For example, if you operate a mirror, pass its base URL:
#1 Best Overall
const url = getDownloadUrl(
Browser.CHROME,
BrowserPlatform.LINUX,
'YOUR_BUILD_ID',
'https://mirror.example/browser-archives',
);
This constructs a URL against the supplied base; it does not verify that the host contains the expected archive. Mirror compatibility and availability are your responsibility.
Choose between getting a URL, installing, and launching
| Goal | Use | What happens |
|---|---|---|
| Find the archive URL | getDownloadUrl(browser, platform, buildId, baseUrl?) |
Returns a URL for the specified archive. It does not download or unpack it. |
| Download and install a browser | install({ browser, buildId, cacheDir, baseUrl? }) |
Downloads and installs the browser into the chosen cache directory. |
| Launch a browser | puppeteer.launch() or the browser-management launch API |
Starts an installed browser. If using puppeteer-core or a separately managed browser, supply the executable path or a supported channel as appropriate. |
For current Chrome for Testing and Firefox nightly installs, the documented default hosts are Chrome for Testing’s public storage host and Mozilla’s Firefox nightly host. These defaults do not establish the URL for every browser artifact or provider; specify the browser, platform, and build ID that match your target.
Rank #2
Install through Puppeteer instead of constructing a URL
Use the default Puppeteer package workflow
Installing puppeteer automatically downloads a recent Chrome for Testing binary and chrome-headless-shell according to the current installation guide. If your package manager blocks install scripts, run the documented manual install command:
npx puppeteer browsers install
Other package managers may require their equivalent command invocation. Consult the installation guide for the package manager you use.
Rank #3
Know what puppeteer-core does
puppeteer-core does not download Chrome when installed. It is intended for cases where you connect to a remote browser or manage the browser yourself. At launch, point Puppeteer at the executable you installed or select an appropriate browser channel.
Set the cache location
Since Puppeteer v19.0.0, the default browser cache directory is $HOME/.cache/puppeteer. You can change it through Puppeteer configuration or the PUPPETEER_CACHE_DIR environment variable. Make sure the install process and the code that launches the browser use a consistent cache location.
Rank #4
Configure a custom host or browser provider
Prefer the documented install option when it fits
The install API accepts an optional baseUrl, allowing you to select a download host while using the normal install flow. The configuration reference also documents browser-specific download-base settings, including Firefox’s downloadBaseUrl and its environment-variable override. Use the option appropriate to your workflow rather than hard-coding a URL in application code.
Recommended Free Tools
Use a custom provider only when you own the compatibility work
A custom BrowserProvider can supply an alternative source or archive layout by implementing getDownloadUrl(options) and getExecutablePath(options). Puppeteer’s documentation warns: “Custom providers are NOT officially supported.” It also says, “Puppeteer only tests and guarantees Chrome for Testing binaries.” Provider URLs are not validated in advance, so an invalid or missing archive may fail later during download. You own compatibility checks, testing, and ongoing maintenance.
Best Value
Account for download size and network conditions
Puppeteer’s undated installation documentation, accessed October 3, 2026, gives approximate download sizes of about 170 MB for macOS, 282 MB for Linux, and 280 MB for Windows. These are published estimates, not measurements made for this article. Allow adequate network bandwidth and disk space for the browser archives and installed files.
Downloading through a proxy depends on your environment. The installation guide says to use proxy-agent to use a proxy for downloading. Verify that the install process can reach the configured host and that any proxy settings apply to the process that runs the installer.
Troubleshoot URL and download failures
- The URL points to the wrong archive: confirm the browser enum, platform enum, and build ID all refer to the same intended build. Do not infer build IDs from another platform’s URL.
- A custom-host URL is returned but downloading fails: URL construction does not confirm that the archive exists. Check the mirror’s base path, archive layout, and whether it contains that exact browser/platform/build.
- Installing
puppeteer-coredid not download Chrome: that is expected. Install a browser separately, then configure the executable path or channel when launching. - Installing
puppeteerdid not fetch a browser: the package manager may have disabled install scripts. Runnpx puppeteer browsers installfrom the project environment. - The browser installs but Puppeteer cannot launch it: check that launch configuration points to the installed executable and that the installer and runtime are using the same cache directory.
- Downloads fail behind a proxy: check proxy configuration for the installer process and follow the guide’s
proxy-agentguidance. - A custom provider fails after URL creation: the provider interface does not prevalidate URLs. Check the URL and executable-path logic, and test the provider against the exact builds and platforms you support.
Or skip the browser setup
If your goal is to capture a website rather than manage a local Puppeteer browser, ScreenshotNeo provides a screenshot API and MCP server. A single request returns an image or PDF; cookie banners, popups, and chat widgets are removed before capture, and 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; paid plans start at $5 for 3,000.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →See the ScreenshotNeo API documentation for options.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Sign up for 1,000 free screenshots a month, with no card required.
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.




