ShopperCove
Menu
All writingBlogTopicsCategoriesAboutRSS
Blog
Categories
Observability & SRE62All categories
Topics
sre111localhost lab102performance70python50javascript47bundle size36benchmarking35node.js33typescript19web development17benchmark16ops/s14All topics
About

On this page

  1. What INP measures and what a good score is
  2. Step 1: Find slow interactions in field data
  3. Step 2: Reproduce the slow interaction in the lab
  4. Step 3: Reduce input delay
  5. Step 4: Make event handlers do less, and yield
  6. Step 5: Cut presentation delay
  7. Step 6: Re-measure and repeat
  8. FAQ
  9. What is a good INP score?
  10. Why does PageSpeed Insights show no INP for my page?
  11. Did INP replace FID?
  12. Sources
  1. Blog

How to Improve INP (Interaction to Next Paint) in 2026

INP is the Core Web Vital that measures how fast your page reacts to clicks, taps and key presses, and the fixes are mostly about freeing the main thread.

Aditya Challa·10 October 2026·5 min read

Summary

Disclosure

This post contains affiliate links. If you buy through them, I may earn a commission at no extra cost to you. I only make firsthand claims about products I have actually used.

Explore the product

Ready Client Sites for prebuilt websites

Untested by us. Check what's included, the license and refund terms before you buy.

See Ready Client Sites detailsSee AI Traffic Secrets details
On this page
  1. What INP measures and what a good score is
  2. Step 1: Find slow interactions in field data
  3. Step 2: Reproduce the slow interaction in the lab
  4. Step 3: Reduce input delay
  5. Step 4: Make event handlers do less, and yield
  6. Step 5: Cut presentation delay
  7. Step 6: Re-measure and repeat
  8. FAQ
  9. What is a good INP score?
  10. Why does PageSpeed Insights show no INP for my page?
  11. Did INP replace FID?
  12. Sources

To improve INP, aim for an Interaction to Next Paint of 200 milliseconds or less at the 75th percentile of real visits, measured separately on mobile and desktop. Find the slowest real click, tap or key press first, then shorten its input delay, its event-handler work and the rendering that follows.

What INP measures and what a good score is

INP is a stable Core Web Vital that replaced First Input Delay (FID). FID only timed the input delay of the first interaction; INP watches every click, tap and key press during the visit and reports roughly the slowest one. On pages with many interactions, one highest interaction is ignored for every 50.

  • Good: 200 ms or less
  • Needs improvement: over 200 ms, up to 500 ms
  • Poor: over 500 ms

Scrolling, hovering and zooming are not counted. Google notes that Chrome usage data shows about 90% of a user's time on a page is spent after it loads, which is why INP covers the whole visit rather than only page load.

Step 1: Find slow interactions in field data

Start with real-user data, not a lab score. If your site is in the Chrome User Experience Report (CrUX), PageSpeed Insights shows INP at origin level and sometimes per URL. CrUX tells you there is a problem but not which interaction caused it, so add real-user monitoring (RUM). The free web-vitals library does this in a few lines:

  • Install web-vitals and call onINP() with a function that sends the value to your analytics.
  • Use the attribution build to record which element and interaction type (click, tap or keypress) was slowest.
  • Report on visibilitychange, because mobile browsers often skip unload events. The library already handles this.

Step 2: Reproduce the slow interaction in the lab

Lighthouse page-load runs often show no INP because nobody interacts with the page. Instead, open Chrome DevTools, throttle the CPU, record a Performance trace and repeat the slow interaction. Also try clicking while the page is still loading, when the main thread is busiest. Total Blocking Time (TBT) is a reasonable lab proxy, but it does not replace INP.

Step 3: Reduce input delay

Input delay is the time between the user acting and your event handlers starting. It usually comes from long tasks that are already running, often script parsing, compiling and executing during startup, plus timers and overlapping interactions.

  • Ship less JavaScript on first load. Defer or code-split anything that is not needed for the first screen.
  • Audit third-party tags (chat widgets, A/B testing, analytics), which often run long tasks during startup.
  • Remember that iframes count. A slow click inside an embedded widget still adds to your page's INP.

Step 4: Make event handlers do less, and yield

Processing duration is how long your callbacks take to run. Do the minimum needed for the visual update, then hand the rest back to the browser:

  • Update the UI first, then defer non-urgent work (saving, analytics, recalculating counts) with requestAnimationFrame plus setTimeout(..., 0), as shown in web.dev's guide.
  • Split long loops into chunks and yield between them so no single task blocks the main thread.
  • Avoid layout thrashing, where you write styles and then read layout values (such as offsetHeight) in the same task. That forces a synchronous layout.

Step 5: Cut presentation delay

Presentation delay is the time from your handlers finishing to the next frame being painted. Large DOMs make rendering more expensive.

  • Keep the initial DOM small. Render long lists, menus and tabs only when they are needed.
  • Use CSS content-visibility: auto on below-the-fold sections so the browser skips rendering them until they are close to the viewport.
  • Avoid injecting large chunks of HTML with client-side JavaScript in response to a click. Server-streamed HTML lets the browser yield on its own while it parses.

Step 6: Re-measure and repeat

Field data from CrUX covers a rolling 28-day window, so expect a few weeks before PageSpeed Insights reflects a fix. Your RUM data will show changes sooner. Google calls INP work iterative: once you fix the worst interaction, the next-slowest one becomes your INP, so keep working through the list. For a broader pre-launch pass, see our Next.js 16 App Router production checklist (Open shoppercove.com). To get help reading traces, see our guide to Chrome DevTools AI assistance (Open shoppercove.com).

FAQ

What is a good INP score?

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

Why does PageSpeed Insights show no INP for my page?

There may not be enough Chrome user data in CrUX, or visitors only scrolled or hovered, which INP does not count. Lab-only runs that never interact with the page also report no INP.

Did INP replace FID?

Yes. INP is FID's successor as the responsiveness Core Web Vital. It measures every interaction's full latency (input delay, processing and presentation), not just the first input's delay.

Sources

  • 01web.dev/articles/inp
  • 02web.dev/articles/optimize-inp
  • 03github.com/GoogleChrome/web-vitals
  • 04developer.chrome.com/docs/crux/methodology
  • 05web.dev/articles/content-visibility

Lab evidence

What I found running this

Read Google's web.dev INP and Optimize INP guides (last updated 2 Sep 2025) and the web-vitals library docs on 10 Oct 2026. We did not run our own benchmarks for this post; all thresholds and techniques come from those sources.

Notes when a lab post goes up

Occasional email for new hands-on reviews. No sequence and no sponsors.

Explore the product

Ready Client Sites for prebuilt websites

Untested by us. Check what's included, the license and refund terms before you buy.

See Ready Client Sites detailsSee AI Traffic Secrets details

Keep reading

  • Should Australian eBay Sellers Use Balance Now?

    eBay Australia said on 2 October 2026 that from 3 November 2026 eBay balance becomes part of Free Selling: required account feature, spendable on purchases and labels, or withdrawable to bank. What the terms change, the spending caps and when local sellers should lean in.

    Summary9 Oct 20266 min read

  • Will eBay's Currency Fee Hike Hit Cross-Border Sellers?

    eBay is raising the seller currency conversion charge by 0.25 points, starting 14 October 2026 for US and Canada sellers, then Australia on 1 November and the UK on 1 December. Who pays only when eBay converts funds, and how to reprice before each date.

    Summary9 Oct 20265 min read

  • Should Shopify Merchants Hire Grok to Run Their Store?

    Shopify launched official Grok and Grok Bot store connectors on 8 October 2026 so merchants can query business data or run agent teams on inventory and listings. What Shopify Help allows, what stays blocked even with write access, and when hiring the bot is worth it.

    Summary9 Oct 20266 min read

ShopperCove

Hands-on notes on developer tools, written after the tool has actually been run.

All writingBlogCategoriesTopicsAboutPrivacyRSS

© 2026 ShopperCove