Skip to content
← Back to the Blog

Performance

Core Web Vitals and WordPress: What Actually Moves the Needle

Everyone talks about Core Web Vitals, but most WordPress performance advice is vague or outdated. Here's what actually matters and what you can skip.

Google's Core Web Vitals have been a ranking factor for a few years now, and there's no shortage of articles telling you to "install a caching plugin." That advice isn't wrong, but it barely scratches the surface. Here's what actually matters.

LCP: Largest Contentful Paint

LCP measures how long it takes for the largest visible element on the page to render. On most WordPress sites, this is a hero image or a large heading. Common causes of poor LCP:

Unoptimized images. A 3MB hero image served without compression or a modern format like WebP is the single most common LCP killer. Compress images, serve them in WebP or AVIF, and use proper srcset attributes so mobile devices get smaller files.

Render-blocking resources. CSS and JavaScript that the browser must download and parse before rendering anything pushes LCP out. Critical CSS should be inlined; non-critical scripts should be deferred.

Slow server response. If your hosting is slow to respond, nothing else matters much. TTFB (Time to First Byte) directly impacts LCP.

INP: Interaction to Next Paint

INP replaced FID as the responsiveness metric and it's harder to game. It measures the delay between a user interaction (click, tap, key press) and the browser's response.

Heavy JavaScript is the primary culprit. Page builders and plugin-heavy sites accumulate JavaScript that runs on the main thread and delays responses to user interactions. Auditing and trimming your JavaScript load is the only real solution.

CLS: Cumulative Layout Shift

CLS measures unexpected layout shifts — elements jumping around as the page loads. The most common causes in WordPress:

  • Images without defined width/height attributes
  • Ads or embeds that load asynchronously and push content down
  • Web fonts that swap in after the page has rendered

Adding explicit dimensions to images and using font-display: swap or preloading critical fonts addresses most CLS issues.

What Doesn't Move the Needle Much

  • Installing a caching plugin without configuring it properly
  • Minifying CSS and JS without addressing render-blocking
  • Optimizing images after the fact without addressing delivery

What Does

  • Moving to quality managed WordPress hosting
  • Seriously auditing your plugin stack
  • Properly configuring a CDN
  • Addressing the specific bottlenecks your site actually has, rather than running generic optimization tools

If you want a proper performance audit rather than generic advice, that's something I can help with.