Interaction to Next Paint INP Optimization: The Complete 2026 Guide

Interaction to Next Paint (INP) measures a page's responsiveness to user interactions. INP replaced First Input Delay (FID) as a Core Web Vital in March...

Dilshad Akhtar
Dilshad Akhtar
Published: 17 June 2026
3 min read
TL;DRAI summary
  • FID had a blind spot.
  • Long main thread tasks are the primary cause of poor INP.
  • Break up long tasks.
  • Use Chrome DevTools Performance panel.
  • Run PageSpeed Insights on your top pages and check the INP score.

Interaction to Next Paint (INP) measures a page's responsiveness to user interactions. INP replaced First Input Delay (FID) as a Core Web Vital in March 2024. This was a significant change. FID only measured the first interaction. INP measures all clicks, taps, and keyboard interactions...

Why INP Replaced FID

FID had a blind spot. It only captured the delay of the very first interaction. Users who experienced slow interactions later in the session were invisible to FID. Single-page applications (SPAs) and complex web apps often feel responsive on first load but slow on subsequent interactions. INP captures the full picture.

Google's research showed that FID correlated weakly with real user satisfaction for modern web applications. INP correlates strongly with perceived responsiveness across all interaction types. The CrUX dataset transitioned to INP as the primary interaction metric in March 2024.

What Causes Poor INP

Long main thread tasks are the primary cause of poor INP. When the browser's main thread is busy parsing scripts, executing event handlers, or rendering layouts, it cannot respond to user input. Each interaction must wait for the main thread to become idle.

Event handler complexity is another factor. Heavy JavaScript logic inside click handlers, scroll handlers, or keyboard event handlers blocks the next paint. Complex frameworks that re-render large component trees on every state change create interaction latency.

Data from HTTP Archive in 2025 shows that pages using heavy JavaScript frameworks have 35% worse INP on mobile compared to lightweight or server-rendered alternatives. Third-party scripts also frequently delay interactions.

Optimization Strategies

Break up long tasks. Any JavaScript task running longer than 50 milliseconds blocks the main thread. Use setTimeout, requestIdleCallback, or scheduler.yield to split work into smaller chunks. The 50-millisecond threshold is critical for passing INP.

Defer non-critical JavaScript. Load analytics, chat widgets, and social embeds after the page is interactive. Use the defer attribute for script tags. Remove unused JavaScript from your bundles. Code splitting reduces the amount of code that needs to execute on interaction.

Optimize event handlers. Debounce scroll and resize handlers. Use passive event listeners for touch and wheel events. Avoid forcing synchronous layout inside event handlers. Accessing offsetTop, offsetLeft, or getComputedStyle inside handlers triggers forced reflow.

For SPAs and JavaScript-heavy sites, consider server-side rendering or static generation for critical pages. Minimize the JavaScript sent to the client. Use the Interaction to Next Paint performance API to debug specific interaction delays in the browser.

Measuring INP

Use Chrome DevTools Performance panel. Record interactions and look for long tasks in the main thread flame chart. The Web Vitals JavaScript library reports INP in real user monitoring tools. CrUX provides field-level INP data. Check your origin's INP in the CrUX report for PageSpeed Insights.

Lab tools like Lighthouse simulate INP but cannot fully replace field measurement. Real user devices have varied CPU capabilities. Mobile phones with low-end CPUs show the worst INP scores. Always test on actual mobile hardware.

Audit Your INP

Run PageSpeed Insights on your top pages and check the INP score. Profile the interactions on each page using Chrome DevTools Performance panel. Identify the longest tasks and their causes. Remove or defer third-party scripts that block interactions. Break up any task exceeding 50 milliseconds on the main thread.

Note the gap between lab and field INP data. Lab tests run on fast machines and miss real device constraints. Field data from CrUX reveals the true user experience. Fix based on field data. Audit quarterly.

References

  • web.dev/inp (https://web.dev/inp)
  • web.dev/optimize-inp (https://web.dev/optimize-inp)
  • Chrome DevTools INP Guide (https://developer.chrome.com/docs/devtools/performance/inp)
  • HTTP Archive INP Report (https://httparchive.org/reports/interactivity#inp)

Ready to Build Your Dream Website?

Let's discuss your project and create something amazing together.