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 getDownloadUrl(browser, platform, buildId, baseUrl?) from @puppeteer/browsers when you need the browser archive URL as a value. Supply the browser, target platform, and exact build ID; pass baseUrl only when you need a different download host. The returned URL depends on all of those inputs, so there is no safe universal archive URL to assemble by hand. Puppeteer’s API reference documents the function.
Get the URL with the supported API
Install or otherwise make @puppeteer/browsers available in your project, then call getDownloadUrl with a browser identifier, platform, and build ID supported by that package version. The optional fourth argument is a base URL. The function returns a JavaScript URL object, which you can inspect, log, or pass to a downloader.
As an Amazon Associate I earn from qualifying purchases.
import { getDownloadUrl } from '@puppeteer/browsers';
const url = getDownloadUrl('chrome', 'linux', '1234567');
console.log(url.href);
This example illustrates the call shape, not a guarantee that the sample build ID exists or is available for that browser and platform. Choose a build ID that matches the archive you intend to retrieve. The API reference describes the signature and return value, but does not publish a universal path template for every browser-platform pair.
What each argument means
browserselects the browser distribution, such as Chrome or Firefox.platformselects the platform-specific archive. Use the platform identifier expected by the installed package version.buildIdselects a particular build. Build IDs identify binaries and are also used in Puppeteer’s browser caching workflow.baseUrl, when supplied, changes the download host or prefix. It does not make an incompatible browser, platform, or build combination valid.
Choose between generating a URL and configuring installation
Call getDownloadUrl when your code needs the archive address itself. If your goal is simply to install a browser through Puppeteer’s browser installer, configure the download host in the install workflow instead. The InstallOptions reference documents baseUrl and the defaults for Chrome for Testing and Firefox.
#1 Best Overall
| Need | Use | Relevant setting |
|---|---|---|
| Obtain the archive URL as a value | getDownloadUrl(browser, platform, buildId, baseUrl?) |
Optional fourth argument baseUrl |
| Change the host used by a browser installation | Puppeteer browser install workflow | InstallOptions.baseUrl |
| Set a persistent browser-specific download host in package configuration | Puppeteer configuration | Browser-specific downloadBaseUrl; Chrome also documents PUPPETEER_CHROME_DOWNLOAD_BASE_URL |
Puppeteer documents https://storage.googleapis.com/chrome-for-testing-public as the Chrome for Testing default base URL and https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central for Firefox. These are base URLs, not a complete archive URL for every build and platform. Configuration documentation says a base URL must include a protocol and should not end with a slash. See the configuration guide.
Use a custom host carefully
A custom base URL can point installation at an alternative source, but the browser archive must still match the browser, platform, and build ID expected by your code. Puppeteer’s install documentation notes that alternative providers are not officially supported; you are responsible for their compatibility and testing. Do not assume that changing the host alone makes every mirror or storage layout interchangeable.
Rank #2
When automatic browser download does not happen
If installing a Puppeteer package did not fetch a browser, a package manager may have blocked install scripts. Puppeteer’s documented manual route is:
npx puppeteer browsers install
puppeteer-core is the package option when you do not want Puppeteer to download Chrome automatically. See the installation guide for the installation workflow.
Rank #3
Proxy, caching, and archive verification
- Proxy: Puppeteer documents
HTTP_PROXY,HTTPS_PROXY, andNO_PROXYfor proxy configuration. The@puppeteer/browserspackage requires the optionalproxy-agentpeer dependency for proxy support. - Cache: the build ID is used in browser caching; keep the build ID consistent with the binary your application expects.
- Integrity: the install API offers optional
expectedHashvalidation using a SHA-256 archive hash.
These settings affect how an installation retrieves or validates an archive; they do not replace the browser, platform, and build ID needed to identify the intended download. Details are in the install options and installation documentation.
Troubleshoot URL and download problems
- The URL points to an unexpected archive: verify all three selection inputs—browser, platform, and build ID. They jointly determine the archive.
- A custom host does not work: confirm the base URL includes
https://or another appropriate protocol, has no trailing slash, and serves a compatible archive layout. - No browser was downloaded during package installation: check whether install scripts were disabled by your package manager, then use
npx puppeteer browsers installif appropriate. - Downloads fail behind a proxy: configure the documented proxy environment variables and ensure the optional
proxy-agentdependency is installed. - You need to verify an archive: provide the expected SHA-256 value through
expectedHashin the install workflow.
Or skip the browser setup
If your goal is a website screenshot rather than running Puppeteer in your own browser environment, ScreenshotNeo offers a screenshot API and MCP server. A single request returns an image or PDF; see the API documentation for options and response details.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo accepts cookie or consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for AI agents and MCP clients. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Sign up for 1,000 free screenshots a month, with no card.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Frequently Asked Questions
Does getDownloadUrl download the browser?
No. It returns a URL object for the selected archive; use the browser installation or a separate download workflow to retrieve it.
Best Value
Can I build the archive URL by concatenating the browser, platform, and build ID?
Avoid assuming a universal path pattern. Use the API for the combination you need because the published reference does not specify a complete path template for every browser and platform.
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.




