Skip to main content
Lighthouse emulates a mobile device by default, applying screen dimensions, device scale factor, and a mobile user agent string. This simulates how a typical mobile user experiences your page, independent of the device running Lighthouse.
“Emulation” in Lighthouse refers specifically to screen and user agent emulation. Network and CPU throttling are covered separately in Throttling.

Mobile vs desktop

By default, Lighthouse runs in mobile mode. To run with desktop settings and scoring calibration, use the --preset=desktop flag.
--preset=desktop is the recommended way to test desktop performance. It replaces the older --emulated-form-factor=desktop flag, which was removed in Lighthouse v7.

The --form-factor flag

The formFactor setting does not control emulation directly. Instead, it tells Lighthouse how to interpret the run — specifically for scoring performance metrics and skipping mobile-only tests when running in desktop mode. You must always set formFactor when configuring emulation externally. The allowed values are mobile (default) and desktop.

Screen emulation

The screenEmulation setting controls the viewport applied to the page. It accepts an object with the following fields: To disable screen emulation — for example, when running against a real device or when emulation is applied externally by Puppeteer:

User agent emulation

By default, Lighthouse spoofs a mobile user agent string to ensure pages return their mobile variants. The emulatedUserAgent setting controls this behavior. Disabling user agent spoofing is safe to do redundantly — if the real device is already sending the correct user agent, setting emulatedUserAgent: false has no negative effect.

Testing on a real mobile device

When running Lighthouse against Chrome on an actual mobile device, you should disable Lighthouse’s own screen emulation and CPU throttling, since the device provides real conditions.
--form-factor=mobile is the default and does not need to be set explicitly in this case.

Changes in v7

Lighthouse v7 overhauled the emulation configuration to be more explicit and consistent. Key changes: The throttling and throttlingMethod settings were not changed in v7.