Estimated Input Latency

Estimated Input Latency is one of six metrics tracked in the Performance section of the Lighthouse report. Each metric captures some aspect of page load speed.

The Lighthouse reports displays Estimated Input Latency in milliseconds:

A screenshot of the Lighthouse Estimated Input Latency audit

What Estimated Input Latency measures

Estimated Input Latency is an estimate of how long your app takes to respond to user input during the busiest 5 second window of page load. The timing of this audit is from First Meaningful Paint to the end of the trace, which is roughly 5 seconds after Time to Interactive. If your latency is higher than 50 ms, users may perceive your app as laggy.

The RAIL performance model recommends that apps respond to user input within 100 ms, while Lighthouse's Estimated Input Latency target score is 50 ms. Why? Lighthouse uses a proxy metric—availability of the main thread—to measure how well your app responds to user input.

Lighthouse assumes that your app needs 50 ms to completely respond to the user's input (from performing any JavaScript executions to physically painting the new pixels to the screen). If your main thread is unavailable for 50 ms or more, that doesn't leave enough time for your app to complete the response.

Approximately 90% of users will encounter Lighthouse's reported amount of input latency or less. 10% of users can expect higher latency.

How to improve your Estimated Input Latency score

To make your app respond to user input faster, optimize how your code runs in the browser. Check out the series of techniques outlined on Google's Rendering Performance page. These tips range from offloading computation to web workers to free up the main thread, to refactoring your CSS selectors to perform fewer calculations, to using CSS properties that minimize the amount of browser-intensive operations.

How to measure Estimated Input Latency manually

To measure Estimated Input Latency manually, make a recording with the Chrome DevTools Timeline. See Do less main thread work for an example of the workflow. The basic idea is to start a recording, perform the user input that you want to measure, stop the recording, and then analyze the flame chart to ensure that all stages of the pixel pipeline are complete within 50 ms.

Resources