SEO glossary

Interaction to Next Paint (INP)

Definition

Interaction to Next Paint measures the delay between a user tapping something and the screen visibly changing. Under 200 milliseconds is good, over 500 is poor, measured at the 75th percentile of real visits. It replaced First Input Delay in March 2024 and it is much harder to pass.

Updated 26 July 2026 · Written by the Last Agency team · See what SEO actually costs

The short version

  • INP replaced First Input Delay in March 2024. FID measured the delay before your handler ran, once. INP measures every interaction, all the way to the paint.
  • Under 200ms is good. Between 200 and 500 needs work. Over 500 is poor.
  • The offenders are nearly always third-party: tag manager containers, live chat, review apps, exit-intent popups, session recorders.
  • You cannot debug INP from a lab score. It needs real interactions from real users on real Android phones.

Why INP is stricter than the metric it replaced

First Input Delay measured only the wait before your event handler started running, and only for the first interaction of the visit. Almost everything passed it, which is a decent sign a metric isn't telling you much.

INP measures the whole thing: input delay, the handler running, then the browser painting the result — for every click, tap and keypress in the visit, reporting roughly the worst. A page that opens fast and then locks up when someone taps the size chart now fails, correctly. That's three places for the delay to hide, and which one it is changes the fix entirely.

The three phases of an INP measurement.
PhaseWhat it isTypical cause
Input delayThe tap lands while the main thread is busy doing something else.A third-party script running a long task at exactly the wrong moment.
Processing timeYour event handler running.Heavy work in the handler — DOM queries, big loops, synchronous storage reads.
Presentation delayThe browser recalculating layout and painting the new frame.Enormous DOM, expensive CSS, layout thrash inside the handler.

The scripts that actually break INP on Indian sites

In audits, the pattern repeats with depressing consistency. The site's own JavaScript is fine. Then marketing added things, one tag at a time, each of which seemed free.

Anything blocking the main thread for more than 50ms is a long task, and long tasks are where INP dies. The usual cast, in rough order of damage:

  • A Tag Manager container with a dozen tags — GA4, Meta pixel, Google Ads, LinkedIn, Hotjar, Clarity, two affiliate pixels and something nobody remembers adding. Each is main-thread work.
  • Live chat widgets — Tawk.to, Intercom, WhatsApp buttons. They pull in a whole app to render one bubble, early, because someone wanted it "always available".
  • Exit-intent and offer popups — they bind mousemove and scroll listeners on load, then do work on every event.
  • Shopify review apps — Judge.me, Loox and friends re-render star widgets per product card across a whole collection page.
  • Session recording and heatmaps — Hotjar and Clarity record continuously. That's the trade you're making.

Fixing it: load order, then handler work

You rarely need to delete third-party scripts. You need to stop them competing with the user for the main thread during the first few seconds, which is when people interact.

  1. Audit the container first. List every tag firing on All Pages. Half usually belong to a campaign that ended. Delete those before engineering anything.
  2. Move the rest off the critical path. Fire non-essential tags on Window Loaded, scroll depth or a timer instead of Page View. Analytics that starts three seconds late still counts the session.
  3. Delay chat and popups until interaction. Load the widget on scroll, on hover, or when the page goes idle. Nobody opens live chat in the first 400 milliseconds.
  4. Break up your own long tasks. If a handler does real work, yield mid-way — await scheduler.yield() where supported, setTimeout where it isn't — so the tap can paint first.
  5. Paint first, compute second. Show the accordion opening or the button state changing, then fire the tracking call. Users judge the paint, not the payload.

How to measure it honestly

Lab tools can't measure INP properly, because nobody is clicking anything. PageSpeed Insights gives you Total Blocking Time as a lab proxy — useful for direction, useless as proof.

The real measurement is field data: Search Console's Core Web Vitals report and the field section of PageSpeed Insights, both from real Chrome users at the 75th percentile. To name the guilty script, install the web-vitals library's attribution build — it reports which element was interacted with and what ran during the delay.

Throttle honestly while debugging. Set Chrome's CPU throttling to 4x or 6x, because a large share of Indian traffic arrives on mid-range Android hardware, not the MacBook the site was built on. Then check the same URLs for LCP and CLS — third-party scripts usually damage all three at once, so one clean-up pays three times.

Related questions.

What is a good INP score?

Under 200 milliseconds is good, 200 to 500 needs work, and over 500 is poor. Google assesses it at the 75th percentile of real visits, so a quarter of your users can be worse than the threshold and you still pass.

What's the difference between INP and FID?

FID measured only the input delay of the first interaction in a visit. INP measures the full round trip — delay, handler, paint — across every interaction, then reports roughly the worst. INP became a Core Web Vital in March 2024 and FID was retired.

Why did my INP get worse without a code change?

Someone added a tag. Tag manager changes ship without a deploy, which is exactly why they escape review. Check the container's version history against the date the metric moved — it's the first place to look and it's right more often than not.

Can I fix INP without removing my tracking?

Usually yes. Most of the damage comes from load timing, not from the tags existing. Delaying non-essential tags to a window-load or scroll trigger keeps the data and returns the main thread to the user during the seconds that get measured.

Does INP affect rankings?

It's one of Google's page experience signals, which act as a tiebreaker rather than a primary factor. The stronger argument is commercial: a checkout that takes 700ms to acknowledge a tap gets tapped again, and double-taps on a payment button are their own kind of problem.

Why does PageSpeed Insights show no INP data for my page?

Field data needs enough real Chrome traffic to report on. Low-traffic URLs fall back to origin-level data or show nothing at all. Use your own real-user monitoring, or judge the template by a higher-traffic page that uses it.

Last slot's open

Make this the last growth call you book.

Grab the free strategy call and walk away with a 90-day growth plan — hired or not. Or just text us. Either way, you'll know exactly how we'd win.

Guaranteed or it's free · No lock-in · Free strategy call