Synthetic Monitoring — WebPageTest
Lab testing on demand: reading the waterfall and filmstrip, first vs. repeat view, catching regressions in CI.
If RUM tells you that a segment is slow, a synthetic tool like WebPageTest tells you why — frame by frame, request by request. You pick the device, network, and location, run the page in that controlled lab, and get back two views that make the load impossible to misunderstand: the filmstrip and the waterfall.
What WebPageTest gives you
You enter a URL, choose a configuration (e.g. Moto G on 4G in Mumbai), and it runs the page several times — averaging the runs so one flaky result doesn't fool you. It surfaces a performance summary (is the page quick, stable, resilient?), the metrics you know (TTFB, Start Render, LCP, TBT), total page weight, and the two views below.
The filmstrip
The filmstrip is a frame-by-frame screenshot of the load. It makes the invisible obvious: how long the screen stayed blank, the moment of First Contentful Paint, when the LCP element lands — and any layout shift that jumps in late. Scrub through it:
The network waterfall
The waterfall shows every request on a timeline, each broken into its phases — DNS, connect, SSL, wait (TTFB), download — colour-coded so you can see where time actually went. Markers show Start Render and LCP. Click a request to inspect it:
Experiments & opportunities
WebPageTest's Opportunities tab flags issues like render-blocking CSS, and its Experiments let you test a fix without touching your code. It re-runs your page with the change injected — inline the critical CSS, drop lazy-loading from the LCP image, add caching headers — and shows the before/after. You get a quick win confirmed in the lab before you spend time editing anything.
It also shows Real World Metrics from the Chrome UX Report (CrUX) right next to your lab run — a built-in reminder that lab FCP and field FCP won't match, and that interaction metrics like INP only exist in the field.
- →WebPageTest runs your page in a chosen device/network/location, averaged over several runs.
- →The filmstrip shows visual progress frame-by-frame: blank → FCP → LCP → shifts.
- →The waterfall breaks each request into DNS/connect/SSL/wait/download to pinpoint where time went.
- →Experiments test a fix (inline CSS, preload…) without touching your code.
- →Pick lab variables from your real audience (via RUM), and remember field ≠ lab.