Interaction to Next Paint (INP)

Measures how long the browser takes to visually respond to user interactions.

INP captures the worst latency (or high percentile) from tap, click, or key until the next paint the user sees—after event handlers and scheduling settle. Long tasks on the main thread, hydration storms, and third-party tag soup inflate INP even when First Input Delay looked fine.

Why developers care

INP replaced FID in 2024 as a Core Web Vital because FID only measured first input and missed sluggish apps after load. High INP means the UI feels frozen. Mitigations include smaller JS bundles, yielding after chunks of work, moving analytics to web workers (e.g. Partytown), and deferring non-critical scripts.

Example

# Patterns that help INP: # - split long click handlers with scheduler.yield() / setTimeout(0) # - defer third-party: <script defer> or type="module" # - Partytown for analytics in a worker

Spec

web.dev — INP

Improve INP with SpeedFixer →