October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk5 min

How Puppeteer Gets Browser Download URLs

Puppeteer’s getDownloadUrl helper returns an archive URL for a specific browser, platform, and build ID. Learn when to use it, how to install instead, and how to set a download host.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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:

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.

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:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npx puppeteer browsers install

Other package managers may require their equivalent command invocation. Consult the installation guide for the package manager you use.

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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

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-core did not download Chrome: that is expected. Install a browser separately, then configure the executable path or channel when launching.
  • Installing puppeteer did not fetch a browser: the package manager may have disabled install scripts. Run npx puppeteer browsers install from 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-agent guidance.
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.