GoogleChrome/lighthouse · error · Error
Launching Chrome on Mac Silicon (arm64) from an x64 Node ins
Error message
Launching Chrome on Mac Silicon (arm64) from an x64 Node installation results in Rosetta translating the Chrome binary, even if Chrome is already arm64. This would result in huge performance issues. To resolve this, you must run Lighthouse CLI with a version of Node built for arm64. You should also confirm that your Chrome install says arm64 in chrome://version
What it means
On macOS, Lighthouse detects when the Node.js process is an x64 build running on Apple Silicon (arm64) hardware. In this configuration, macOS's Rosetta 2 translates the Chrome binary, causing severe performance measurement corruption even if Chrome itself is arm64. Lighthouse proactively refuses to launch rather than produce misleading metrics. The detection checks process.platform === 'darwin', process.arch === 'x64', and whether the CPU model string contains 'Apple'.
Source
Thrown at cli/run.js:76
if (parsed[key] === true) return `--${key}`;
// ChromeLauncher passes flags to Chrome as atomic arguments, so do not double quote
// i.e. `lighthouse --chrome-flags="--user-agent='My Agent'"` becomes `chrome "--user-agent=My Agent"`
// see https://github.com/GoogleChrome/lighthouse/issues/3744
return `--${key}=${parsed[key]}`;
});
}
/**
* Attempts to connect to an instance of Chrome with an open remote-debugging
* port. If none is found, launches a debuggable instance.
* @param {LH.CliFlags} flags
* @return {Promise<ChromeLauncher.LaunchedChrome>}
*/
function getDebuggableChrome(flags) {
if (process.platform === 'darwin' && process.arch === 'x64') {
const cpus = os.cpus();
if (cpus[0].model.includes('Apple')) {
throw new Error(
'Launching Chrome on Mac Silicon (arm64) from an x64 Node installation results in ' +
'Rosetta translating the Chrome binary, even if Chrome is already arm64. This would ' +
'result in huge performance issues. To resolve this, you must run Lighthouse CLI with ' +
'a version of Node built for arm64. You should also confirm that your Chrome install ' +
'says arm64 in chrome://version');
}
}
return ChromeLauncher.launch({
port: flags.port,
ignoreDefaultFlags: flags.chromeIgnoreDefaultFlags,
chromeFlags: parseChromeFlags(flags.chromeFlags),
logLevel: flags.logLevel,
});
}
/** @return {never} */
function printConnectionErrorAndExit() {View on GitHub (pinned to 9515cd4e58)
Solutions
- Install an arm64-native Node.js build: use nvm to install an arm64 version, or download from nodejs.org choosing the arm64 Darwin installer
- Verify your Node architecture: node -p "process.arch" should print 'arm64', not 'x64'
- If using nvm: arch -arm64 zsh && nvm install --arch=arm64 lts/iron
- Verify Chrome is also arm64 by checking chrome://version for 'arm64' in the platform line
- Alternatively, run Lighthouse in a Docker container with an x64 image on an x64 host (avoids Rosetta entirely)
Example fix
# before: node -p "process.arch" prints 'x64' # fix with nvm: arch -arm64 zsh nvm install --arch=arm64 20 nvm use 20 node -p "process.arch" # should print 'arm64' lighthouse https://example.com
Defensive patterns
Strategy: validation
Validate before calling
// Check for the Apple Silicon + x64 Node mismatch before running Lighthouse
const os = require('os');
function checkPlatformCompatibility() {
if (process.platform === 'darwin' && process.arch === 'x64') {
const cpus = os.cpus();
if (cpus[0]?.model?.includes('Apple')) {
console.error('ERROR: x64 Node on Apple Silicon. Install arm64 Node: nvm install --arch=arm64 lts/iron');
process.exit(1);
}
}
} Prevention
- On Apple Silicon Macs, always install arm64-native Node (check with: node -p process.arch)
- Use nvm with --arch=arm64: nvm install --arch=arm64 20
- In CI/Docker on arm64 hosts, use arm64 images for both Node and Chrome
- Verify Chrome is arm64 via chrome://version before relying on performance metrics
When it happens
Trigger: Running the Lighthouse CLI on an Apple Silicon Mac (M1/M2/M3/M4) where the Node.js binary is an x64 (Intel) build running under Rosetta. The check fires at Chrome launch time in getDebuggableChrome before any audit work begins.
Common situations: Installing Node via a version manager (nvm, homebrew) that provided the Intel x64 build on an Apple Silicon machine; CI runners or Docker containers using x64 Node images on arm64 hosts; corporate IT-provided Node installations that default to x64.
Related errors
AI-assisted analysis of GoogleChrome/lighthouse@9515cd4e58 (2026-08-13).
Data as JSON: /api/errors/61474dfcf8da11cc.
Report an issue: GitHub.