Core Web Vitals targets keep moving and the advice keeps shifting with them. INP replaced FID. LCP got stricter on mobile. CLS became less forgiving. Here is the 2026 playbook for WordPress sites, ordered by what actually moves the metric, not by what makes Lighthouse green.

LCP — the one most people get wrong

Largest Contentful Paint is almost always an image. The fix is rarely “compress harder”. The fix is to deliver the right image at the right size at the right priority.

  • Add fetchpriority="high" on the hero image. This single attribute frequently shaves 400-800ms off LCP on mobile.
  • Serve responsive variants. The default WordPress srcset is good; make sure you are not bypassing it with a custom Elementor or page-builder image widget that hard-codes a URL.
  • Preload the hero image in <head> if it lives below a JS-loaded section.

INP — the new boss

Interaction to Next Paint replaced First Input Delay because FID was too easy. INP is harder. It catches the slow handler on the second tap, the third menu open, the long task during interaction. On WordPress sites the usual offenders are:

  • Page-builder plugins running JS on every click (not just the relevant clicks)
  • Third-party chat widgets and analytics SDKs queuing up long tasks during interaction
  • Heavy synchronous theme JS waiting on full DOM ready

The single biggest INP win is deferring the chat widget and any “session replay” analytics to requestIdleCallback or a 3-second timer after first interaction. Most users do not need them in the first paint window.

CLS — invisible until it is not

Cumulative Layout Shift on WordPress is usually three things:

  • Web-font loading without font-display: optional or matched fallback metrics
  • Ads or embeds without a reserved aspect-ratio container
  • Above-the-fold image without explicit dimensions in the markup

All three are fixable in CSS or a small theme function. None require a plugin.

What to ignore

  • Lighthouse “unused JavaScript” warnings for theme files under 30KB. Not worth the engineering time.
  • “Reduce render-blocking resources” for inline critical CSS that is already under 8KB. Same.
  • Aggressive lazy-loading of above-the-fold images. This hurts LCP. Lazy-load only what is below the fold.

Order of work

If you only have one afternoon: fix LCP with fetchpriority and a preload. If you have a second: defer the chat widget. If you have a third: reserve aspect ratios for embeds and ads. That covers 80 percent of the gains on a typical WordPress site without breaking anything.