Blog/Performance
WordPress · Core Web Vitals

Core Web Vitals for WordPress: What They Measure and How to Fix Them

Naveen Goyal
16 June 2026
6 min read
WordPress · SEO · Performance

Since 2021, Google uses Core Web Vitals as a ranking signal. Not lab-based Lighthouse scores — field data collected from real Chrome users. This distinction matters because a site can score 95 in PageSpeed Insights and still have poor Core Web Vitals if real visitors on real networks are experiencing slow load times.

There are three Core Web Vitals. Each one measures something specific about the user experience, and each has a different set of causes and fixes.

LCP — Largest Contentful Paint

What it measures: How long until the largest visible content element is rendered. This is usually the hero image, a large heading, or a video poster. LCP is the metric users feel most directly — it's when the page looks "loaded" to them.

Good threshold: Under 2.5 seconds. Needs improvement: 2.5s–4.0s. Poor: over 4 seconds.

Common WordPress causes:

  • The hero image is not preloaded — browser discovers it late in the load waterfall
  • The image is not in WebP format and is larger than it needs to be
  • Slow TTFB means the browser starts late on everything, including the LCP element
  • Render-blocking scripts that delay the browser from painting anything
  • The LCP element is inside a slider or lazy-loaded — it shouldn't be

Fixes: Add fetchpriority="high" and loading="eager" to the hero image. Serve WebP. Use a caching plugin. Ensure the hero is not lazy-loaded (most themes lazy-load everything by default — explicitly exempt the above-the-fold image).

INP — Interaction to Next Paint

What it measures: The responsiveness of the page to user input. When a visitor clicks something — a button, a dropdown, a link — how long until the page visually responds? INP replaced FID (First Input Delay) in March 2024 and measures the worst interaction during the entire page session, not just the first.

Good threshold: Under 200ms. Needs improvement: 200ms–500ms. Poor: over 500ms.

Common WordPress causes:

  • Heavy JavaScript plugins executing long tasks on the main thread
  • Third-party scripts (analytics, chat widgets, marketing tools) that monopolize the CPU
  • Page builders like Elementor or Divi that generate large amounts of JS/CSS
  • Woo Commerce product pages with complex variation handling

Fixes: Audit which scripts are executing during interactions. Defer non-critical third-party scripts. Use the Chrome DevTools Performance panel to identify long tasks. Remove page builder functionality where it can be replaced with static HTML/CSS.

The INP reality

Most WordPress sites fail INP not because of their own code but because of third-party marketing and analytics scripts. Adding a chat widget, heatmap tool, or marketing pixel can push INP from 150ms to 600ms. Every third-party script is a performance budget decision.

CLS — Cumulative Layout Shift

What it measures: Unexpected visual movement while the page loads. If content shifts after the initial render — text jumps, a button moves — that is a layout shift. CLS accumulates across the entire page session. A score of 0 means nothing shifted. Over 0.1 is "needs improvement." Over 0.25 is poor.

Common WordPress causes:

  • Images without explicit width and height attributes — browser doesn't know how much space to reserve
  • Ads or embeds injected late that push content down
  • Web fonts that cause text to reflow when they load (FOUT)
  • Cookie banners and notification bars that appear above existing content
  • Lazy-loaded images above the fold that cause shifts when they appear

Fixes: Always add width and height to images. Use font-display: optional or font-display: swap with an appropriately sized fallback. Reserve space for ad slots with CSS min-height. Ensure cookie banners are positioned so they don't push content.

How to Monitor Your Core Web Vitals

The fastest way to see your site's field data is Google Search Console → Core Web Vitals report. This shows real-user data from Chrome visitors to your site over the past 28 days, broken down by URL and device type. It's the ground truth — lab tools are estimates.

For ongoing monitoring on multiple WordPress sites, a plugin that checks Core Web Vitals regularly and alerts you to regressions is more practical than manually checking Search Console. The Core Web Vitals monitor being built at MAA Labs will do exactly that — track LCP, INP, and CLS over time and surface alerts when metrics slip.

Core Web Vitals Monitor is coming soon.

Track LCP, INP, and CLS over time with per-URL monitoring and regression alerts. Free when it launches.

Preview plugin →