Core Web Vitals: Understanding INP and How to Improve It

Read Core Web Vitals: Understanding INP and How to Improve It on the SEO Done blog.

# Core Web Vitals: Understanding INP and How to Improve It If you run a service‑oriented website, you already know that Google’s Core Web Vitals (CWV) are a major ranking factor. In 2023 Google introduced **Interaction to Next Paint (INP)** as a replacement for the older *Largest Contentful Paint*‑related metrics. INP measures how quickly a page responds to a user’s first interaction—click, tap, or key press—and then paints the resulting visual change. A low INP score signals a smooth, responsive experience; a high score often translates into frustration, higher bounce rates, and lost organic opportunities. Below you’ll find a practical guide to help small‑business owners, marketers, and agency operators understand INP, evaluate it on their site, and apply concrete improvements without a deep dive into code. --- ## What Is INP? | Element | Description | |--------|-------------| | **Definition** | The time from a user’s first interaction (e.g., click) to the *next* paint that reflects that interaction. | | **Scope** | Considers all user interactions that trigger a visual change, not just the first click. | | **Reporting** | Reported as the **p‑75** (75th percentile) of all interaction‑to‑paint measurements on a page. Google treats a value **≤ 100 ms** as good, **100‑200 ms** as needs improvement, and **> 200 ms** as poor. | Unlike the older *First Input Delay (FID)*, which only looked at the very first input, INP gives a broader picture of real‑world interactivity. If your site feels sluggish after the first click—perhaps because a modal opens slowly or a form validation runs on the main thread—INP will catch that. --- ## Why INP Matters for Service Sites 1. **User expectations are high** Prospective clients often compare multiple providers in a short time. A sluggish interaction can be the difference between staying on your page or moving to a competitor. 2. **Search rankings consider user experience** Google’s algorithm incorporates CWV signals directly into how it ranks pages. A high INP can lower your visibility even if the content is otherwise strong. 3. **Conversion pathways rely on interactivity** Service businesses typically funnel visitors through contact forms, booking widgets, or live chat. Delays in these elements reduce the likelihood of a conversion. 4. **Brand perception** A fast, responsive site projects professionalism and attention to detail—attributes that matter in service industries. --- ## How to Measure INP ### 1. Chrome DevTools (Live) 1. Open the page in Chrome. 2. Press **F12** → **Performance** tab. 3. Click the **Record** button, interact with the page (e.g., click a “Schedule a Call” button), then stop recording. 4. In the **Summary** view, look for the **Interaction to Next Paint** metric. ### 2. PageSpeed Insights Enter your URL at [https://pagespeed.web.dev](https://pagespeed.web.dev). The report will display an **INP** score alongside other CWV metrics. Use the “Opportunities” section for specific suggestions. ### 3. Web Vitals Extension The **Web Vitals** Chrome extension shows real‑time INP values as you browse. It’s handy for quick checks on multiple pages. ### 4. Lighthouse CI (for automation) If you already run automated audits, add the `--metrics=INP` flag to your Lighthouse CI configuration. This lets you track INP trends across deployments. --- ## Practical Ways to Reduce INP Below are eight tactics that have proven effective for service‑business sites. They focus on things you can change without a complete redesign. ### 1. Minimize Main‑Thread Blocking - **Defer non‑critical JavaScript**: Add `defer` or `async` attributes to scripts that are not needed for the initial interaction. - **Split large bundles**: Use code‑splitting to load heavy libraries only when required (e.g., a calendar widget after the user clicks “Book Now”). - **Avoid long‑running synchronous functions**: Break loops or calculations into smaller chunks using `requestIdleCallback` or `setTimeout`. ### 2. Optimize Event Handlers - **Use passive listeners**: For scroll or touch events, set `{ passive: true }` to tell the browser the handler won’t call `preventDefault()`. - **Delegate where possible**: Attach a single listener to a parent element instead of many individual listeners. ### 3. Pre‑connect and Preload Critical Resources - **Pre‑connect to third‑party domains** (e.g., payment processors) so DNS and TLS handshakes happen early. - **Preload key assets** like the CSS for a modal dialog that opens on click. Example: ``. ### 4. Reduce Layout‑Shifting During Interaction - **Reserve space for dynamic elements**: When a modal appears, reserve its dimensions in the DOM so the layout does not need to recompute. - **Use transform rather than top/left** for animations; transforms are handled by the compositor thread and are faster. ### 5. Serve Modern Image Formats - **Convert photos to WebP or AVIF**. Smaller image files load faster, decreasing the time the main thread spends decoding them after a click that reveals an image gallery. ### 6. Leverage Browser Caching - **Set appropriate `Cache-Control` headers** for assets that rarely change (icons, fonts). Cached resources eliminate network latency for repeated interactions. ### 7. Streamline Form Validation - **Perform lightweight client‑side checks** (required fields, proper email format) instantly, but defer heavy validation (e.g., address verification) until after the form is submitted. - **Avoid synchronous XHR/AJAX** during validation; use `fetch` with promises so the UI remains responsive. ### 8. Review Third‑Party Widgets Many service sites embed chat tools, booking calendars, or review widgets. These can introduce JavaScript that blocks interaction. - **Load them lazily**: Insert the widget script only after the user clicks the “Live Chat” button. - **Choose providers that support async loading**. --- ## Common Pitfalls to Watch | Pitfall | Why It Hurts INP | Quick Fix | |---------|----------------|-----------| | **Heavy polyfills for old browsers** | Increases main‑thread work for every interaction. | Serve polyfills conditionally based on feature detection. | | **Large CSS files that block painting** | The browser must parse CSS before it can render visual changes. | Split CSS into critical (above‑the‑fold) and non‑critical, load the latter asynchronously. | | **Synchronous `alert()` or `confirm()` calls** | Pauses JavaScript execution, delaying the next paint. | Replace with custom modal components that don’t block the thread. | | **Unoptimized fonts** | Flash of invisible text delays perceived response. | Use `font-display: swap;` and preload key font files. | --- ## Integrating INP Into Your Ongoing SEO Process 1. **Audit baseline**: Run a PageSpeed Insights report for each core service page (homepage, pricing, contact). Record the INP values. 2. **Set thresholds**: Aim to keep the 75th‑percentile INP under 100 ms for pages that drive leads. For less critical pages, a “needs improvement” range is acceptable. 3. **Create a monitoring plan**: Use a tool like Google Search Console’s *Core Web Vitals* report to get alerts when a page’s INP degrades. 4. **Iterate**: Prioritize the highest‑traffic pages, apply the optimizations above, then re‑measure. 5. **Document changes**: Keep a changelog of script modifications, lazy‑loading decisions, and cache‑header updates. This makes it easier to roll back if a change unintentionally harms another metric. For agencies handling multiple client sites, consider a shared dashboard that pulls INP data via the PageSpeed Insights API. Centralizing the data helps you spot patterns—e.g., a particular booking widget consistently causing delays across clients—so you can negotiate better implementations with vendors. --- ## Tools and Resources - **Google PageSpeed Insights** – Quick online report with actionable suggestions. - **Web Vitals Extension** – Real‑time Chrome extension for on‑the‑fly checks. - **Lighthouse CI** – Automated performance testing for continuous integration pipelines. - **Chrome DevTools** – Deep dive into scripting and rendering timelines.