Measure which Chromium major a shipped product actually embeds. From the installer, the extension package, or the repository. No guessing from changelogs.
Chromium ships a new major every four weeks. Products built on it (browser forks, kiosk shells, CEF and Electron apps, extensions) only move when someone moves them. These three scripts answer one question: how far behind is this thing today?
| Script | Input | What it reads |
|---|---|---|
measure_installer.py |
a Windows installer URL or file | Chrome/NNN.x.y.z, Electron/NN.x.y and the CEF product version string, out of the binaries inside the package (nested archives included) |
crx_manifest.py |
a Chrome Web Store extension id | the live CRX3 package: manifest version, permissions, host permissions, content scripts, packed and unpacked size |
github_pins.py |
a GitHub token | organisation repositories that pin cef_binary_<ver> or an old "electron": "^NN", mapped to a Chromium major |
Release notes lie by omission. A vendor's "what's new" page may say nothing about the engine for a year while the product ships. The version resources inside chrome.dll, libcef.dll or the Electron executable cannot. Everything this tool prints came from a file the vendor published, and the output says which file.
$ python measure_installer.py https://vendor.example/Setup.exe --stable 152
target : https://vendor.example/Setup.exe
bytes : 286640296
Chrome majors : [122, 127]
Electron : [29]
CEF : ['127.3.5+g114ea2a+chromium-127.0.6533.120']
engine major : 127 (25 behind stable 152)
Two engines in one package: the Electron shell on Chromium 122 and a CEF browser source on 127. That is a real result from a real desktop app measured in September 2026, with the name left out.
$ python crx_manifest.py <extension id>
name ...
version 18.0.0
manifest_version 3
background service_worker
host_permissions ["<all_urls>"]
files 887
packed_bytes 120180000
unpacked_bytes 231600000
$ set GITHUB_TOKEN=...
$ python github_pins.py cef --since 2025-09-01 --out cef.json
Anonymised, because the vendors got the numbers by email first:
| Product type | Engine found | Behind stable 152 |
|---|---|---|
| Commercial Windows kiosk browser | Chromium 136 | 16 |
| Cloud-gaming desktop client, updated August 2026 | CEF 128 | 24 |
| Desktop email client, stable channel | CEF 73 (beta channel: 148) | 79 / 4 |
| Streaming studio app | Electron 29 + libcef 127 | 30 / 25 |
| Security-branded consumer browser | Chromium 134 | 18 |
| Crypto key-recovery desktop tool, released June 2026 | Electron 22 | 44 |
| Game HTML layer (public repo) | CEF 80 | 72 |
| Anti-detect browsers (three vendors) | 152 | 0 |
| Password-manager desktop apps (two vendors) | 150 | 2 |
Python 3.9+, no third-party packages. measure_installer.py needs 7-Zip. github_pins.py needs a GitHub token in GITHUB_TOKEN.
- Stub installers (a 2 MB bootstrapper that downloads the real package) contain no engine. Use the offline or full installer.
- Inno Setup packages do not unpack with 7-Zip; use
innoextractfirst. - A
Chrome/NNNstring in an installer can be the installer's own user agent, not the product's. The tool prints every major it saw so you can tell. - MSIX bundles unpack fine; the engine is inside the per-architecture
.msix.
INNERLUXES builds and rebases Chromium-based browsers, CEF and Electron hosts, and browser extensions. We wrote these tools to measure products before offering to bring them back to current stable. If yours is on the list above, you already have our email.
MIT licence.
We ship a Chromium-based enterprise browser of our own. The engineering evidence, measured the same way this tool measures other products, is here: Our own Chromium browser, measured.