ESC

Type to search the knowledge base.

Throttling CPU and Network

DevTools CPU and network throttling: when lab numbers lie, custom profiles, and reproducing field pain.

beginner3 min read
  • browser
  • devtools
  • throttling
  • performance
  • lab

Your MacBook on office Wi‑Fi is not your user. CPU and network throttling in DevTools approximate slower devices and links so lab debugging correlates closer to field Core Web Vitals — without pretending to be perfect RUM.

Docs: Chrome Network throttling, Performance throttling, Lab vs field.

Network throttling

Presets like Fast 3G, Slow 3G, Offline:

Knob Effect
Download / upload throughput Stretch transfer time
RTT latency Inflate TTFB-ish and handshakes
Offline SW / offline UX tests

Use when debugging LCP resource delay, font loading, and waterfall contention — Network panel.

Custom profiles: set latency + throughput to match a p75 user from RUM if you have data.

CPU throttling

Performance panel → CPU 4× / 6× slowdown. This multiplies main-thread task time approximately — good for surfacing long tasks and INP-ish lab interactions.

Reproduce: 4× CPU + Fast 3G → click filter → record Performance

Without CPU throttle, many “works on my machine” handlers look fine.

What throttling is not

  1. Not a substitute for field CWV (CrUX / RUM).
  2. Not perfect mobile GPU / thermal modeling.
  3. Not identical across browsers.
  4. Lighthouse uses its own simulated throttling — numbers won’t match DevTools live throttle exactly.

See Lighthouse score interpretation.

Workflow that works

  1. Read field metrics for a page type (mobile p75 LCP/INP).
  2. Throttle to a harsh but plausible profile.
  3. Reproduce the user journey (not only load).
  4. Fix discovery, bytes, or long tasks.
  5. Confirm field after deploy.

Anti-patterns

  • Optimizing only unthrottled local.
  • Using Slow 3G forever so you overfit to unrealistic extremes.
  • Ignoring that disable cache + throttle changes first-load story.
  • Comparing Lighthouse mobile score to DevTools live session 1:1.

Offline and SW

Set Offline → reload to verify shell. Pair with Application panel service worker status. Don’t test offline only on fast CPU — install/activate also costs.

Interview out-loud

“I use network throttling for LCP/waterfall and CPU throttling for long tasks and interactions. Lab still isn’t field — I calibrate with RUM p75 and treat Lighthouse simulated numbers as directional.”

Team ritual

Once a sprint, demo a critical flow at 4× CPU + Fast 3G on a mid-tier Android if available. Many “impossible” INP bugs become obvious in five minutes of shared pain. Capture a Performance profile and attach it to the ticket.

Further depth

Teams often under-invest in this topic until an incident or CWV regression. Schedule a one-hour drill: reproduce the failure mode in DevTools, list the top three mitigations for your stack, and file tickets with owners. Revisit after the next major feature that touches networking, rendering, auth, or third parties — those are the moments regressions land. Keep primary documentation links in the runbook so on-call is not searching chat history at 2am.

Concrete artifacts to leave behind: a short architecture note, a CI assertion or header snapshot, and a dashboard panel (lab or field) that would have caught the last bug. Teaching the rest of the team the mental model matters as much as the one-line fix.

Further reading

Related guides