Since Google's Page Experience update, Core Web Vitals have become a confirmed ranking factor. If your WordPress site scores poorly on LCP, FCP, CLS, or TBT, you're losing both rankings and visitors. The good news: most issues are fixable in an afternoon.
What are Core Web Vitals?
Core Web Vitals are a set of metrics defined by Google that measure real-world user experience across three dimensions: loading performance, interactivity, and visual stability.
LCP — Largest Contentful Paint
What it measures: How long it takes for the largest visible content element (usually a hero image or heading) to render on screen.
- Good: under 2.5 seconds
- Needs improvement: 2.5–4.0 seconds
- Poor: over 4.0 seconds
Common WordPress culprits: Unoptimized hero images, slow server response time, render-blocking CSS/JS, no CDN.
FCP — First Contentful Paint
What it measures: Time until the first piece of content (text, image, or SVG) appears on screen.
- Good: under 1.8 seconds
- Needs improvement: 1.8–3.0 seconds
- Poor: over 3.0 seconds
TBT — Total Blocking Time
What it measures: Total time the main thread was blocked long enough to prevent input response. The lab proxy for INP (Interaction to Next Paint).
CLS — Cumulative Layout Shift
What it measures: Visual stability — how much the page layout unexpectedly shifts during loading. Score of 0 is perfect; anything above 0.1 needs attention.
How to diagnose your WordPress site
Use WPStats to get an instant PageSpeed Insights score for your site. You can also use:
- Google Search Console → Core Web Vitals report (field data)
- PageSpeed Insights (pagespeed.web.dev) — lab + field data
- Chrome DevTools → Performance panel
- WebPageTest.org — detailed waterfall analysis
Fixing LCP in WordPress
1. Preload your LCP image
Tell the browser to download your hero image immediately by adding a preload hint in your <head>:
<link rel="preload" as="image" href="/wp-content/uploads/hero.webp" fetchpriority="high">
Many themes or page builders can add this via their settings. Alternatively, add it to your theme's functions.php.
2. Use a caching plugin
A good caching plugin dramatically reduces TTFB (server response time), which directly improves LCP. Top options for WordPress:
- WP Rocket — easiest setup, best overall performance
- LiteSpeed Cache — best for LiteSpeed servers (free)
- W3 Total Cache — most configurable, steeper learning curve
3. Convert images to WebP
WebP images are 25-35% smaller than JPEG at equivalent quality. WordPress 5.8+ supports WebP natively. Use a plugin like Smush, Imagify, or ShortPixel to convert existing images automatically.
4. Enable a CDN
A Content Delivery Network serves your static assets from a server geographically close to your visitor, dramatically reducing load times globally. Cloudflare (free tier), BunnyCDN, and KeyCDN are popular options that integrate easily with WordPress.
Fixing CLS in WordPress
Layout shifts usually come from images without dimensions, ads injected after load, or web fonts causing text reflow.
1. Always set image dimensions
WordPress does this automatically for images added via the media library. Check for any manually added HTML images missing width and height attributes.
2. Preload critical fonts
Font swapping causes text to reflow and increases CLS. Add font-display: swap and preload your main font:
<link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin>
3. Reserve space for ads
If you show ads, always define a fixed container size so the layout doesn't jump when the ad loads.
Fixing TBT in WordPress
High TBT almost always comes from JavaScript. The fix is to defer or remove unnecessary scripts.
- Audit your plugins — every plugin adds JS. Remove unused plugins.
- Use WP Rocket's "Delay JavaScript" feature
- Disable WordPress emoji scripts (adds a DNS lookup and JS file)
- Remove Query Strings from static resources
Pro tip: The built-in WordPress emoji script makes an extra DNS lookup. Disable it in your caching plugin settings or add this to functions.php: remove_action('wp_head', 'print_emoji_detection_script', 7);
Target scores
Aim for these PageSpeed Insights scores as a baseline:
- Mobile Performance: 70+ (good), 90+ (excellent)
- Desktop Performance: 85+ (good), 95+ (excellent)
- LCP: under 2.5s
- CLS: under 0.1
- TBT: under 200ms
Check your WordPress Core Web Vitals now
WPStats fetches real PageSpeed Insights data for mobile and desktop instantly.
Analyze your site free