Download and launch browsers
npm install @puppeteer/browsersManage and launch browsers/drivers from a CLI or programmatically.
- A compatible Node version (see engines in package.json).
- For Firefox downloads:
- Linux builds: xz and bzip2 utilities are required to unpack .tar.gz and .tar.bz2 archives.
- MacOS builds: hdiutil is required to unpack .dmg archives.
Use npx to run the CLI:
``bash`This will install and run the @puppeteer/browsers package.
If it is already installed in the current directory, the installed
version will be used.
npx @puppeteer/browsers --help
Built-in per-command help will provide all documentation you need to use the CLI.
`bash`
npx @puppeteer/browsers --help # help for all commands
npx @puppeteer/browsers install --help # help for the install command
npx @puppeteer/browsers launch --help # help for the launch command
npx @puppeteer/browsers clear --help # help for the clear command
npx @puppeteer/browsers list --help # help for the list command
You can specify the version of the @puppeteer/browsers when usingnpx:
`bash`Always install and use the latest version from the registry.
npx @puppeteer/browsers@latest --helpAlways use a specifc version.
npx @puppeteer/browsers@2.4.1 --helpAlways install the latest version and automatically confirm the installation.
npx --yes @puppeteer/browsers@latest --help
To clear all installed browsers, use the clear command:
`bash`
npx @puppeteer/browsers clear
To list all installed browsers, use the list command:
`bash`
npx @puppeteer/browsers list
Some example to give an idea of what the CLI looks like (use the --help command for more examples):
`shDownload the latest available Chrome for Testing binary corresponding to the Stable channel.
npx @puppeteer/browsers install chrome@stable
Known limitations
1. Launching the system browsers is only possible for Chrome/Chromium.
Custom Providers
You can implement custom browser providers to download from alternative sources like corporate mirrors, private repositories, or specialized browser builds.
`typescript
import {
BrowserProvider,
DownloadOptions,
Browser,
BrowserPlatform,
} from '@puppeteer/browsers';class SimpleMirrorProvider implements BrowserProvider {
constructor(private mirrorUrl: string) {}
supports(options: DownloadOptions): boolean {
return options.browser === Browser.CHROME;
}
getDownloadUrl(options: DownloadOptions): URL | null {
const {buildId, platform} = options;
const filenameMap = {
[BrowserPlatform.LINUX]: 'chrome-linux64.zip',
[BrowserPlatform.MAC]: 'chrome-mac-x64.zip',
[BrowserPlatform.MAC_ARM]: 'chrome-mac-arm64.zip',
[BrowserPlatform.WIN32]: 'chrome-win32.zip',
[BrowserPlatform.WIN64]: 'chrome-win64.zip',
};
const filename = filenameMap[platform];
if (!filename) return null;
return new URL(
${this.mirrorUrl}/chrome/${buildId}/${filename});
} getExecutablePath(options: DownloadOptions): string {
const {platform} = options;
if (
platform === BrowserPlatform.MAC ||
platform === BrowserPlatform.MAC_ARM
) {
return 'chrome-mac/Chromium.app/Contents/MacOS/Chromium';
} else if (platform === BrowserPlatform.LINUX) {
return 'chrome-linux64/chrome';
} else if (platform.includes('win')) {
return 'chrome-win64/chrome.exe';
}
throw new Error(
Unsupported platform: ${platform});
}
}
`Use with the
install API:`typescript
import {install} from '@puppeteer/browsers';const customProvider = new SimpleMirrorProvider('https://internal.company.com');
await install({
browser: Browser.CHROME,
buildId: '120.0.6099.109',
platform: BrowserPlatform.LINUX,
cacheDir: '/tmp/puppeteer-cache',
providers: [customProvider],
});
`Multiple providers can be chained - they're tried in order until one succeeds, with a default provider such as Chrome for Testing, as an automatic fallback.
:::caution
Custom providers are NOT officially supported by Puppeteer. You accept full responsibility for binary compatibility, testing, and maintenance.
:::
API
The programmatic API allows installing and launching browsers from your code. See the
test folder for examples on how to use the install, canInstall, launch, computeExecutablePath, computeSystemExecutablePath` and other methods.