Skip to main content
Lighthouse applies both network and CPU throttling by default to emulate the experience of a typical mobile user on a mid-range device and a slow 4G connection, even when your own machine has a fast CPU and fiber internet.

Why Lighthouse throttles

Performance scores measured on a fast developer machine without throttling are not representative of what real users experience. By simulating a mobile network and a slower CPU, Lighthouse produces scores that reflect the ~85th percentile mobile experience, making results more actionable and comparable across machines.

Network throttling

The default network throttling preset targets roughly the bottom 25% of 4G connections and top 25% of 3G connections. In Lighthouse this is called “Slow 4G” (previously labeled “Fast 3G”).
SettingDefault value
Latency (RTT)150ms
Download throughput1.6 Mbps
Upload throughput750 Kbps
Packet lossNone
This preset matches WebPageTest’s “Mobile 3G - Fast” profile.

CPU throttling

Lighthouse applies a 4x CPU slowdown multiplier by default. This moves a typical high-end desktop CPU into the performance range of a mid-tier mobile device. CPU throttling is relative to the host machine’s speed, unlike network throttling which targets absolute values. This means results can differ across devices. Lighthouse computes a benchmarkIndex for every run to help you understand your machine’s relative performance. You can find it under “CPU/Memory Power” at the bottom of the report.
Device classBenchmark index range
High-end desktop1500–2000
Low-end desktop1000–1500
High-end mobile800–1200
Mid-tier mobile125–800
Low-end mobile< 125
The default 4x multiplier is calibrated for a high-end desktop. If your machine falls into a different bracket, use the --throttling.cpuSlowdownMultiplier flag to adjust.
# Run with a 6x CPU slowdown
lighthouse --throttling.cpuSlowdownMultiplier=6 https://example.com

Throttling methods

Lighthouse records an unthrottled page load, then uses a network and CPU simulation model to estimate how long the page would have taken under throttled conditions.Advantages:
  • Fast — only one real page load required
  • Low variance — results are deterministic
Tradeoffs:
  • Accuracy depends on the simulation model
  • Edge cases in complex JavaScript execution paths may be less accurate
  • The View Original Trace button in DevTools shows the unthrottled trace, not the simulated one
This method matches the defaults used by PageSpeed Insights and the Lighthouse CLI, so results are comparable across tools.
# Simulated throttling is the default; no flag needed
lighthouse https://example.com

Packet-level throttling

For the most accurate network simulation, use a packet-level throttling tool alongside Lighthouse’s provided method. Packet-level throttling affects all traffic (TCP/UDP/ICMP) at the OS level. The @sitespeed.io/throttle package is a cross-platform CLI tool for this on Mac and Linux.
@sitespeed.io/throttle changes your entire machine’s network interface and requires sudo.
# Install
npm install @sitespeed.io/throttle -g

# Apply the 3gfast throttling profile (matches Lighthouse's default network preset)
throttle 3gfast

# Run Lighthouse with its own network throttling disabled (CPU throttling still applies)
lighthouse --throttling-method=devtools \
  --throttling.requestLatencyMs=0 \
  --throttling.downloadThroughputKbps=0 \
  --throttling.uploadThroughputKbps=0 \
  https://example.com

# Stop throttling once Lighthouse begins gathering
throttle --stop
On Windows, use WinShaper or Clumsy for Windows 7, or NetLimiter / TMeter for Windows 10.

Calibrating CPU slowdown

If your machine’s benchmarkIndex is outside the typical high-end desktop range, calibrate the CPU multiplier accordingly. Use the table below to determine an appropriate cpuSlowdownMultiplier for your host device and target device:
Host \ TargetHigh-end desktopLow-end desktopHigh-end mobileMid-tier mobileLow-end mobile
High-end desktop1x2x (1–4)2x (1–4)4x (2–10)10x (5–20)
Low-end desktop1x1x2x (1–5)5x (3–10)
High-end mobile1x2x (1–5)5x (3–10)
Mid-tier mobile1x2x (1–5)
Low-end mobile1x
If your benchmarkIndex is on the higher end of its bracket, use a higher multiplier from the range. If it’s lower, use a lower multiplier.
lighthouse --throttling.cpuSlowdownMultiplier=6 https://example.com

Build docs developers (and LLMs) love