> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/GoogleChrome/lighthouse/llms.txt
> Use this file to discover all available pages before exploring further.

# Throttling

> Lighthouse throttles network and CPU to simulate real-world mobile conditions. Learn how each throttling method works and how to configure or disable it.

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.

```bash theme={null}
# Run with a 6x CPU slowdown
lighthouse --throttling.cpuSlowdownMultiplier=6 https://example.com
```

## Throttling methods

<Tabs>
  <Tab title="Simulated (default)">
    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.

    ```bash theme={null}
    # Simulated throttling is the default; no flag needed
    lighthouse https://example.com
    ```
  </Tab>

  <Tab title="DevTools">
    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

    ```bash theme={null}
    lighthouse --throttling-method=devtools https://example.com
    ```
  </Tab>

  <Tab title="Provided (disabled)">
    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.

    ```bash theme={null}
    # Disable Lighthouse's built-in throttling entirely
    lighthouse --throttling-method=provided https://example.com
    ```

    <Warning>
      Without throttling, scores will reflect your machine's performance rather than a mobile baseline. Only disable throttling when you are applying equivalent conditions externally.
    </Warning>
  </Tab>
</Tabs>

## 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`](https://www.npmjs.com/package/@sitespeed.io/throttle) package is a cross-platform CLI tool for this on Mac and Linux.

<Warning>
  `@sitespeed.io/throttle` changes your entire machine's network interface and requires `sudo`.
</Warning>

```bash theme={null}
# 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
```

<Note>
  On Windows, use [WinShaper](https://calendar.perfplanet.com/2016/testing-with-realistic-networking-conditions/#introducing_winshaper) or [Clumsy](http://jagt.github.io/clumsy/) for Windows 7, or [NetLimiter](https://www.netlimiter.com/) / [TMeter](http://www.tmeter.ru/en/) for Windows 10.
</Note>

## 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.

```bash theme={null}
lighthouse --throttling.cpuSlowdownMultiplier=6 https://example.com
```
