October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan 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 desk4 min

How Puppeteer Resolves a Browser Build ID

Puppeteer resolves browser build IDs from a browser, platform and tag. Here’s how package defaults, channel selections, installation and compatibility fit together.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Puppeteer resolves a browser build ID from three inputs: the browser, the target platform, and a tag or identifier. Its public resolveBuildId(browser, platform, tag) function returns a promise containing the browser-specific build ID. In Puppeteer’s package install flow, it selects a configured version, falls back to its pinned revision, or uses latest, then resolves that choice before installation.

What resolveBuildId does

The public function takes the browser, platform, and tag as separate inputs. The platform matters: resolution is not a single global lookup, because the requested binary must correspond to the target operating system and architecture. The result is a string identifying the browser build for those inputs.

Conceptually, the call looks like this:

const buildId = await resolveBuildId(browser, platform, tag);

The API contract defines the inputs and result. The actual tag-to-build mapping depends on the browser data maintained by Puppeteer’s package; the same selector should not be assumed to work identically for every supported browser.

How Puppeteer chooses what to resolve

When Puppeteer’s package installer runs, it chooses an unresolved identifier in this order:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. configuration.version, when configured;
  2. otherwise, the browser’s pinned value in PUPPETEER_REVISIONS[browser];
  3. otherwise, latest.

It then calls resolveBuildId with the selected browser and platform, and passes the resolved ID to the installer. If the resolved value differs from the original selection, the package flow retains the original as buildIdAlias. This is package installation behavior; a direct consumer of @puppeteer/browsers can instead call resolution and installation explicitly.

Channel tags versus exact versions

A channel tag is a moving selection: it asks for the build associated with a release channel on the chosen platform. An exact version specifies a particular browser version rather than a channel. Puppeteer’s package overview demonstrates both forms:

Rank #2
Sale
HTML and CSS: Design and Build Websites
  • HTML CSS Design and Build Web Sites
  • Comes with secure packaging
  • It can be a gift option
  • npx @puppeteer/browsers install chrome@stable requests Chrome’s stable channel.
  • npx @puppeteer/browsers install [email protected] requests that exact version.

The documentation lists channel tags such as stable, beta, dev, canary, and latest, and the package CLI also demonstrates exact browser versions and milestone-style selections. Treat these as browser-specific selectors, not a universal promise that every browser accepts the same values. Puppeteer browsers API and Puppeteer installation guide.

Installing a resolved build ID directly

For direct use of @puppeteer/browsers, resolution and installation are separate operations. Installation options require browser, buildId, and cacheDir; the platform can be auto-detected when omitted.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import { Browser, detectBrowserPlatform, install, resolveBuildId } from '@puppeteer/browsers';

const browser = Browser.CHROME;
const platform = detectBrowserPlatform();
if (!platform) {
  throw new Error('Could not detect a supported browser platform');
}

const tag = 'stable';
const buildId = await resolveBuildId(browser, platform, tag);

const installed = await install({
  browser,
  buildId,
  cacheDir: './.cache/puppeteer',
  buildIdAlias: tag,
});

console.log(`Installed Chrome build ${buildId} at ${installed.executablePath}`);

The example keeps stable as an alias for the resolved ID, matching the documented purpose of buildIdAlias: preserving alias metadata that can support selection by alias in the launch command. Adapt the browser, tag, and cache directory to your application. The install options and build-ID caching behavior are documented in the Puppeteer browsers API.

What a build ID guarantees—and what it does not

A build ID identifies a browser binary for downloading and caching. It is used to distinguish cached binaries, and Puppeteer’s documentation describes build IDs as unique identifiers. It does not by itself guarantee that an arbitrary browser build is compatible with your Puppeteer version.

Rank #4
Sale
Web Design with HTML, CSS, JavaScript and jQuery Set
  • Brand: Wiley
  • Set of 2 Volumes
  • A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers

Puppeteer guarantees compatibility with its bundled browser. You may provide a different executablePath, but the documentation places that choice at your own risk. If you need a non-bundled browser, verify it against your actual Puppeteer version and workload rather than assuming that successful resolution means supported compatibility. Puppeteer configuration and launch options.

Common problems and fixes

  • Resolution fails for a tag: Confirm the browser and tag are a valid combination; channel names are not guaranteed to be interchangeable across browsers. Try a browser-specific documented channel or an exact version.
  • The wrong binary is selected: Check all three resolution inputs—browser, platform, and tag—and check whether Puppeteer’s configured version or pinned revision takes precedence over the fallback.
  • Installation cannot use the resolved ID: Pass the same browser and resolved buildId to install, and provide the required cacheDir. If platform autodetection is unsuitable for your target, pass an explicit platform.
  • The browser installs but behaves incompatibly: A valid build ID only identifies a downloadable binary. Prefer Puppeteer’s bundled browser for the documented compatibility guarantee, or validate the alternate executable against your use case.
  • A channel selection changes over time: That is expected for a moving channel request. Use an exact version when you need a fixed selection, and retain the resulting ID for reproducible downloads and cache behavior.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If your goal is a website screenshot rather than browser automation, ScreenshotNeo offers a screenshot API and MCP server. One GET request returns an image or PDF; it removes cookie banners, newsletter popups, and chat widgets before capture, and bot checks, blank pages, failed loads, timeouts, and cache hits are not billed. AI agents can use its MCP tools to 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.

cURL:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python:

import requests

r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

See the ScreenshotNeo API documentation for request options, and sign up free for 1,000 screenshots a month with no card.

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. Shenzhen desk3 min
    HONOR Expands Beyond Smartphones With Humanoid Robot RevealHONOR said it unveiled its first humanoid robot at MWC 2026 and named shopping assistance, workplace inspections, and supportive companionship as intended uses. Later Robotics D1 claims and a reported…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

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.