INP Optimization: Measuring and Improving Interactivity
Interaction to Next Paint (INP) measures responsiveness to user interactions across the entire page visit. The threshold is ≤200ms. Less than 25 percent of websites keep task duration below the recommended 50ms threshold.
Key Takeaways
- INP measures responsiveness across all interactions of a visit; good is <= 200 ms at the 75th percentile. It replaced FID in March 2024.
- Field data (CrUX, PageSpeed, web-vitals, RUM) is authoritative. Lab data serves only for debugging, with Total Blocking Time as a proxy.
- The overloaded main thread is the primary cause. Mobile sites have 2,366 ms in Long Tasks and 1,208 ms TBT, roughly 18 times higher than on desktop.
- On mobile, only 74% of websites maintain good INP versus 97% on desktop. Mobile requires its own, stricter JavaScript budget.
- Break up long tasks (scheduler.yield, postTask, setTimeout, isInputPending), remove unused JS (44% of delivered bytes on mobile), and throttle event handlers.
- Next.js Server Components, streaming, and selective hydration reduce hydration costs. Economic Times improved from ~1,000 ms to 257 ms INP this way.
- Consent and tracking scripts often block the first interaction. Delayed, consent-based, or offloaded loading protects INP in a GDPR-compliant manner.
INP is the most demanding Core Web Vital for JavaScript-heavy websites, and Next.js 15 offers the best architectural solution.
The Problem
Input Delay at the 90th percentile dominates INP failures. Long main-thread tasks block event processing before handlers execute. Fewer than 25 percent of websites keep task duration under 50ms. Third-party scripts (analytics, chat widgets, A/B testing, tag managers) are the primary culprits.
Server Components as a Solution
Next.js 15 App Router with React Server Components offers a structural advantage: server-side rendered components send zero client-side JavaScript. Vercel demonstrated this impressively: nextjs.org reduced Total Blocking Time from 430ms to 80ms with selective hydration.
Practical Optimization
Break Up Long Tasks: Use `setTimeout`, `requestIdleCallback`, or `scheduler.yield()` to free up the main thread.Third-Party Scripts: Load only what is necessary, use defer/async, leverage Web Workers for heavy computations.Event Handlers: Avoid expensive DOM operations, use virtual scrolling for long lists.
Data & Statistics
INP has been a stable Core Web Vital since 12 March 2024 and replaces First Input Delay; threshold 200 ms at the 75th percentile
web.dev (Google Chrome Team) - 'Interaction to Next Paint is officially a Core Web Vital' (2024)INP < 200 ms, LCP < 2.5 s, CLS < 0.1 as good thresholds; Core Web Vitals are aligned with Google's core ranking systems
Google Search Central - 'Understanding Core Web Vitals and Google search results' (2025)74% of mobile vs. 97% of desktop websites with good INP (<= 200 ms) in 2024
HTTP Archive - Web Almanac 2024, Performance-Kapitel (2024)Median Total Blocking Time: mobile 1,208 ms vs. desktop 67 ms (approx. 18x higher)
HTTP Archive - Web Almanac 2024, JavaScript-Kapitel (2024)Median time in Long Tasks: 2,366 ms mobile vs. 329 ms desktop; 14 vs. 3 Long Tasks at median
HTTP Archive - Web Almanac 2024, JavaScript-Kapitel (2024)558 KB median JS delivery mobile; approx. 206 KB of it unused (44% of delivered bytes)
HTTP Archive - Web Almanac 2024, JavaScript-Kapitel (2024)INP of search page improved by 72%, +7% revenue through debouncing and local state management
web.dev (Google) - Case study 'How redBus improved their website's INP' (2024)TBT 3,260 ms -> 120 ms; INP ~1,000 ms -> 257 ms; -50% bounce rate; +43% page views; migration to Next.js
web.dev (Google) - Case study 'Economic Times quest for fixing INP' (2023)Consistently negative correlation between INP and conversion rate across four e-commerce sites; effect partly already at INP = 100 ms
SpeedCurve - 'Does Interaction to Next Paint actually correlate to user behavior?' (Cliff Crocker) (2023)Austria: 57.6% desktop vs. 42.4% mobile (May 2026)
StatCounter Global Stats - Desktop vs Mobile Market Share Austria (2026)Austria: 8.69 million internet users (95.3% penetration, October 2025); 99.5% of mobile connections broadband (3G/4G/5G)
DataReportal - Digital 2026: Austria (2026)Mobile: INP 64.9% good, CLS 76.9% good, LCP 54.9% good (good experience in at least 75% of cases)
DebugBear - 'Core Web Vitals: Which Metric Is The Hardest To Pass?' (2025)Opens the chat with a prepared prompt.
FAQ
What is a good INP value?
How does INP differ from First Input Delay (FID)?
How do I measure INP correctly?
Why is my INP worse on mobile devices than on desktop?
How does Next.js improve INP?
What role do consent banners and tracking scripts play for INP?
Does INP affect Google ranking?
How does your website perform?
Get a free, AI-powered SEO report of your website by email: technical SEO, on-page, keywords & competitors. No obligation.
Get a free SEO audit →Or go straight to SEO Agency in Vienna