What is LCP? Complete Guide to Largest Contentful Paint
Master Largest Contentful Paint (LCP) - Google's key Core Web Vital for measuring loading performance. Learn what LCP is, why it matters for SEO, and how to optimize it.
Comprehensive guide to Interaction to Next Paint (INP). Learn what INP measures, good INP scores, how INP differs from FID, and proven techniques to improve your site's interactivity.
Interaction to Next Paint (INP) is one of Google's three Core Web Vitals metrics, replacing First Input Delay (FID) in March 2024. INP measures the latency of all user interactions throughout a page's lifecycle, not just the first one.
An interaction includes clicks, taps, and keyboard inputs. INP measures the time from when the user initiates the interaction until the browser presents the next frame showing visual feedback.
Unlike FID which only measured input delay, INP captures the full interaction: input delay + processing time + presentation delay. This gives a more complete picture of how responsive your site feels to users.
First Input Delay (FID) only measured the delay before the browser could begin processing the first interaction. This missed two critical issues: slow event handlers and pages that were fast initially but became sluggish over time.
INP addresses both limitations. It measures the complete interaction cycle and considers all interactions throughout the page's lifetime, selecting the worst one (with some outlier exclusion) as the reported value.
The shift to INP means sites that passed FID might fail INP. A page could have zero input delay (passing FID) but take 500ms to process a click handler (failing INP). This is why INP is a more demanding and more accurate metric.
INP directly correlates with user satisfaction. When users click a button and nothing happens for 300ms, they often click again, leading to double submissions, confusion, and frustration.
As a Core Web Vital, INP is now a Google ranking factor. Poor INP can negatively impact your search visibility, especially in competitive niches where small ranking differences matter.
Mobile users are particularly sensitive to INP issues. Lower-powered devices and slower JavaScript execution mean mobile INP is typically 2-3x worse than desktop. With mobile-first indexing, this directly affects your rankings.
Long JavaScript tasks are the primary cause of poor INP. When JavaScript runs for more than 50ms, it blocks the main thread, preventing the browser from responding to user input or painting visual updates.
Heavy event handlers that do too much work in response to clicks, scrolls, or key presses directly increase INP. Complex calculations, DOM manipulation, or synchronous API calls in handlers are common culprits.
Third-party scripts often cause INP problems because they run on your main thread but you don't control their code. Analytics, chat widgets, and ad scripts frequently block interactivity.
Chrome DevTools Performance panel is essential for debugging INP. Record a user interaction, then look for 'Long Tasks' (highlighted in red) that block the main thread during the interaction.
The web-vitals JavaScript library can measure INP in the field and send it to your analytics. This shows real-world INP across your actual users, not just lab conditions.
Use MakeWebsite.fast to monitor INP trends over time. Compare your INP before and after deployments to catch regressions early.
Break up long tasks using techniques like yielding to the main thread. Use setTimeout, requestIdleCallback, or the scheduler.yield() API to split work into smaller chunks that don't block interactions.
Optimize event handlers to do minimal synchronous work. Move heavy computation to Web Workers, defer non-critical updates with requestAnimationFrame, and avoid layout thrashing.
Reduce JavaScript bundle size and execution time. Code splitting, tree shaking, and lazy loading ensure you only load the code needed for the current interaction.
React applications should use useTransition for non-urgent updates and useDeferredValue to deprioritize expensive renders. React 18's concurrent features are specifically designed to improve INP.
Next.js and other SSR frameworks can improve INP through partial hydration and server components, which reduce the amount of JavaScript that needs to run on the client.
Vue and Svelte applications benefit from their more efficient reactivity systems, but still need attention to computed property complexity and watcher chains that can cause long tasks.
Work through this checklist systematically to improve INP. Start by measuring your current INP in both lab and field, then address the highest-impact issues first.
Remember that INP considers all interactions throughout the page's lifetime. A page might have good initial INP but degrade over time as state accumulates or memory leaks develop.
A good INP score is under 200 milliseconds. Scores between 200-500ms need improvement, and scores over 500ms are considered poor. Google reports INP at the 75th percentile, meaning 75% of interactions should complete under your target.
FID only measured input delay for the first interaction and ignored processing time. INP provides a more complete picture by measuring all interactions throughout the page lifecycle and including the full interaction duration (input delay + processing + presentation).
TBT measures main thread blocking during page load, while INP measures interaction responsiveness throughout the page's lifetime. TBT is a lab metric that correlates with INP but doesn't capture the same thing. You can have good TBT but poor INP if your site becomes unresponsive after load.
INP considers clicks, taps, and keyboard interactions. It doesn't count hover or scroll events. For pages with many interactions, INP reports approximately the worst interaction (with some outlier exclusion to handle anomalies).
Weekly tips to make your website faster
Join 5,000+ developers getting actionable performance optimization tips, Core Web Vitals updates, and speed testing insights.
No spam. Unsubscribe anytime.
Master Largest Contentful Paint (LCP) - Google's key Core Web Vital for measuring loading performance. Learn what LCP is, why it matters for SEO, and how to optimize it.
Everything you need to know about website speed testing. Learn how to test your site speed, interpret results, and fix common performance issues.