Skip to content

Interaction to Next Paint (INP)

Also called INP

What is Interaction to Next Paint?

Interaction to Next Paint (INP) is a Core Web Vitals metric that measures how quickly a page visibly responds to clicks, taps and key presses. It times each interaction from the input until the browser paints the next frame, and reports roughly the slowest one during the visit. Good is 200 milliseconds or less; poor is above 500 milliseconds.

A cursor clicks a toggle switch on a device screen, a stopwatch timing the action, for Interaction to Next Paint.

INP replaced First Input Delay (FID) as a Core Web Vital in March 2024. FID only measured the delay before the browser started handling the first interaction. INP covers every interaction on the page and includes the time to run event handlers and update the screen, so it catches slow menus, filters and add-to-basket buttons that FID missed. Scrolling and hovering are not counted.

Each interaction has three parts: input delay (waiting for the main thread to be free), processing time (running your event handlers) and presentation delay (working out layout and painting). On pages with many interactions, INP ignores one outlier for every 50 interactions, so a single freak delay does not define the score.

Why Interaction to Next Paint matters for SEO

A page that looks loaded but freezes when tapped feels broken. INP is the measure Google uses for that experience, and as a Core Web Vital it is part of page experience in ranking. Sites heavy with JavaScript, third-party tags and client-side frameworks are the most likely to fail it.

INP can only be measured with real users, because it needs real interactions. Lab tools such as Lighthouse report Total Blocking Time instead, which is a useful proxy but not the same thing.

How to improve INP

  1. Find the slow interactions. Use field data from PageSpeed Insights or real-user monitoring, then reproduce them in the Chrome DevTools Performance panel with CPU throttling on.
  2. Break up long tasks (anything over 50 ms on the main thread) so the browser can respond between them, for example by yielding with scheduler.yield() or setTimeout.
  3. Do the minimum in event handlers: update the screen first, then defer analytics calls and other non-urgent work.
  4. Remove or delay third-party scripts that compete for the main thread, such as chat widgets and tag managers.
  5. Keep the DOM small and avoid forcing layout repeatedly in a loop.
  6. Ship less JavaScript overall, and consider server-side rendering so less work happens in the browser.

Interaction to Next Paint FAQ

When did INP replace FID?

In March 2024. Interaction to Next Paint became a Core Web Vital and First Input Delay was retired.

What is a good INP score?

200 milliseconds or less at the 75th percentile of visits. 200 to 500 ms needs improvement, and over 500 ms is poor.

Why does Lighthouse not show INP?

A standard Lighthouse run loads the page without anyone interacting with it, so there is nothing to measure. It shows Total Blocking Time as a lab stand-in.

Related SEO terms

  • Core Web Vitals

    Core Web Vitals are Google’s three metrics for real-world page experience: Largest Contentful Paint, Interaction to Next Paint and Cumulative Layout Shift.

  • Page speed

    Page speed is how quickly a page loads, shows its content and responds to input. Google measures it mainly through Core Web Vitals.

  • JavaScript SEO

    JavaScript SEO is the work of making sure search engines can crawl, render and index content and links that a site builds with JavaScript.

  • Lighthouse

    Lighthouse is Google’s open-source tool that tests a page in a lab and scores its performance, accessibility, best practices and SEO.

  • PageSpeed Insights

    PageSpeed Insights is Google’s free tool that shows a page’s real-user Core Web Vitals and a Lighthouse lab test with suggestions, for mobile and desktop.

Back to the SEO glossary

Put the terms to work

Every term here is something OpenSEO measures. It is open source: start online in a minute, or run it on your own server.