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.