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”).
| Setting | Default value |
|---|
| Latency (RTT) | 150ms |
| Download throughput | 1.6 Mbps |
| Upload throughput | 750 Kbps |
| Packet loss | None |
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 class | Benchmark index range |
|---|
| High-end desktop | 1500–2000 |
| Low-end desktop | 1000–1500 |
| High-end mobile | 800–1200 |
| Mid-tier mobile | 125–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
Simulated (default)
DevTools
Provided (disabled)
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
Lighthouse applies throttling through Chrome DevTools Protocol, which interrupts network requests at the request level and throttles CPU by periodically interrupting execution.Advantages:
- More transparent — the performance trace reflects the actual throttled load
- Clicking
View Trace in DevTools shows data that matches Lighthouse’s metric results
Tradeoffs:
- Request-level network throttling is less accurate than packet-level throttling
- Latency affects real connections at the packet level, not the request level
lighthouse --throttling-method=devtools https://example.com
Lighthouse applies no throttling of its own. Use this when throttling is applied externally — for example, via a packet-level tool like @sitespeed.io/throttle or when running on a real mobile device.# Disable Lighthouse's built-in throttling entirely
lighthouse --throttling-method=provided https://example.com
Without throttling, scores will reflect your machine’s performance rather than a mobile baseline. Only disable throttling when you are applying equivalent conditions externally.
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
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 \ Target | High-end desktop | Low-end desktop | High-end mobile | Mid-tier mobile | Low-end mobile |
|---|
| High-end desktop | 1x | 2x (1–4) | 2x (1–4) | 4x (2–10) | 10x (5–20) |
| Low-end desktop | — | 1x | 1x | 2x (1–5) | 5x (3–10) |
| High-end mobile | — | — | 1x | 2x (1–5) | 5x (3–10) |
| Mid-tier mobile | — | — | — | 1x | 2x (1–5) |
| Low-end mobile | — | — | — | — | 1x |
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