Where the build number went
Chrome's User-Agent used to carry the full build, for example Chrome/156.0.8078.73. Since User-Agent reduction it carries the major version followed by zeros. The detail moved to User-Agent Client Hints: a server that sends Accept-CH: Sec-CH-UA-Full-Version-List receives the header on later requests, and any page can ask for it in JavaScript without permission.
Challenge scripts do ask. One widely deployed widget requests fullVersionList together with architecture, bitness, formFactor, model and platformVersion in a single call. The build number still matters; it is just one call away instead of in every request.
One major version, many builds
Chrome ships several stable builds per major version, and not every platform gets every build. Chrome 156 in its first two weeks (October 2026, from the public release listings):
| Platform | Stable builds |
|---|---|
| Windows | 156.0.8078.35, .36, .47, .48, .49, .73, .74, plus an early 157.0.8103.15 |
| macOS | .35, .36, .47, .48, .49, .73, .74 |
| Linux | .47 and .73 only |
| Android | .39, .47, .48, .49, .73, plus an early 157.0.8103.14 |
Updates roll out gradually, so on any given day the real population on a platform is a mix of the last few builds, weighted toward the newest.
What a full version can contradict
- The platform. Chrome on Linux reporting 156.0.8078.74 is impossible; that build never shipped on Linux.
- The date. A build superseded weeks ago describes a user who has not restarted the browser in a long time. Possible for one user, implausible for a whole fleet pinned to the same old build.
- The engine. Each build has a known V8 version and behaviour, so the number also has to fit what the page measures directly; see engine and OS oracle fingerprinting.
- The other brands. The Chromium and Google Chrome entries have to agree with each other, and the GREASE brand and brand order have to match what that major generates.
A browser that reports its own build is consistent with its engine automatically but ages as Google ships patches. Anything that sets the version by hand, such as a user agent rotation list, has to pick a build that shipped on the claimed platform recently and keep it in step with the engine. A managed web data API that keeps its browsers on current builds avoids carrying that table at all.
