How to Improve Core Web Vitals on WordPress in 5 Steps

Only 44% of WordPress sites on mobile pass all three Core Web Vitals meaning more than half of WordPress-powered websites are silently losing Google rankings right now. If your site is in that majority, you’re not just leaving traffic on the table. You’re actively giving it to competitors.
How to improve Core Web Vitals on WordPress is one of the most impactful things you can do for your SEO in 2025. Google officially uses Core Web Vitals as a ranking signal, and sites that meet the thresholds experience up to 24% fewer visitor abandonments. For WooCommerce stores and content-heavy sites, even a one-second delay on mobile can cut conversions by around 20%.
This guide walks you through exactly 5 actionable steps to fix your WordPress performance optimization from the ground up covering server response times, caching, image optimization, JavaScript handling, and layout stability. Whether you’re a blog owner or running a WooCommerce store, these steps will move the needle fast.
Before we dive in, let’s make sure you understand what you’re optimizing for.
What Are Core Web Vitals and Why Do They Matter for WordPress?
Core Web Vitals are a set of real-world performance metrics Google uses to measure whether users have a positive experience on your pages. Unlike old-school metrics like total page load time, these three signals focus on how your site actually feels to a visitor.
Here’s a quick breakdown:
- LCP (Largest Contentful Paint) – Measures how long it takes for the biggest visible element (usually your hero image or headline) to load. Google’s threshold: under 2.5 seconds is “Good.”
- INP (Interaction to Next Paint) – Replaced First Input Delay in September 2024. It measures how quickly your page responds to clicks, taps, and key presses. Aim for under 200 milliseconds.
- CLS (Cumulative Layout Shift) – Tracks how much the page visually jumps around as it loads. A score of 0.1 or lower is considered “Good.”

WordPress is not inherently slow. The problem is what gets stacked on top: heavy page builders, bloated themes, unoptimized images, and shared hosting with slow server response times. The good news? Because WordPress gives you full control, skilled optimization makes a massive difference.
Start by benchmarking your current scores using PageSpeed Insights (Google’s free tool) and GTmetrix for more granular waterfall analysis. Both tools give you a baseline before you make any changes.
Step 1: Upgrade Your Server Response Time and Hosting Environment
This is the foundation. Every other optimization you make is limited by how fast your server responds in the first place. A slow host means a slow Time to First Byte (TTFB) which directly drags down your LCP score no matter how well you optimize everything else.
What to Look for in a WordPress Host
Not all hosting is equal when it comes to Core Web Vitals. Here’s what matters:
- PHP 8.x support – Newer PHP versions are significantly faster for WordPress. If you’re still on PHP 7.x, upgrading alone can shave hundreds of milliseconds off your TTFB.
- Server-level caching – Managed WordPress hosts like Kinsta, WP Engine, SiteGround, and Cloudways include server-level page caching. This means pages are delivered before WordPress even executes a single line of PHP.
- NVMe SSD storage – Disk I/O speeds affect database query times more than most people realize.
- Proximity to your audience – A server in the US serving European visitors adds latency. Choose a server location close to where your traffic comes from, or pair it with a CDN (covered in Step 3).
Quick Wins on Your Current Host
Even before switching hosts, you can improve server response:
- Enable object caching – with Redis or Memcached this stores the result of expensive database queries in memory so they don’t run on every page load.
- Disable unused plugins – every active plugin adds PHP execution overhead, even if its output isn’t visible on the page.
- Keep WordPress, themes, and plugins updated – performance improvements ship in almost every major release.
A good hosting environment gets you fast TTFB (ideally under 200ms). From there, every other optimization compounds.
Step 2: Install and Configure an Advanced Caching Plugin
Page caching is the single highest-leverage WordPress performance optimization you can make after fixing your hosting. Without it, WordPress queries the database and builds each page from scratch on every single visit. With page caching, it serves a pre-built static HTML file instantly.
Choosing the Best WordPress Caching Plugin
The market has several strong options in 2025, and which is the best WordPress caching plugin for you depends on your budget, host, and technical comfort:
- WP Lightbeam Cache – A modern, lightweight WordPress cache built for Core Web Vitals. It delivers page caching, CSS/JS minification, lazy loading, and critical CSS generation in a clean, beginner-friendly interface – without the bloat. Check out WP Lightbeam Cache’s features to see how it handles LCP and INP optimizations automatically. It’s also one of the best options as a wp rocket alternative if you want serious performance without the premium price tag – see WP Lightbeam Cache pricing for current plans.
- LiteSpeed Cache – Free and extremely powerful for sites on LiteSpeed servers. Includes object caching, image WebP conversion, unused CSS removal, and ESI for WooCommerce. If you’re on LiteSpeed hosting, this is the fastest cache plugin for WooCommerce available.
- WP-Optimize – A solid freemium option combining page caching, image compression, and database cleanup in one plugin. Good for budget-conscious users.
- FlyingPress – Consistently tops real-world Core Web Vitals benchmarks. Excels at removing unused CSS and lazy rendering HTML elements. Chrome UX Report data shows FlyingPress sites have the highest proportion of “Good” CWV scores.
- W3 Total Cache – Free and developer-friendly, with deep control over Redis, Memcached, and Varnish. Best for technical users who want granular configuration.
Core Caching Settings to Configure
Regardless of which plugin you choose, always configure these settings:
- Page caching – Enable it. This is non-negotiable.
- Browser caching – Set long expiry headers (1 year for static assets like CSS, JS, and images).
- GZIP/Brotli compression – Compresses HTML, CSS, and JS before it leaves the server.
- CSS and JS minification – Removes whitespace and comments from code files.
- Cache preloading – Automatically warms the cache after it’s cleared so the first real visitor doesn’t get a slow uncached response.
For WooCommerce sites, make sure your caching plugin properly excludes cart, checkout, and account pages from being cached – serving cached versions of these pages breaks the shopping experience.
Step 3: Fix LCP by Optimizing Images, Lazy Loading, and CDN Delivery
Images are responsible for LCP in the majority of WordPress pages. Your hero image, featured post image, or above-the-fold banner is almost certainly the LCP element. If that image is large, uncompressed, or slow to load – your LCP fails.
Image Format and Compression
Switch to WebP or AVIF for all images. These modern formats offer 25–35% better compression than JPEG at equivalent visual quality. Plugins like ShortPixel, Imagify, or the image optimization built into LiteSpeed Cache and WP-Optimize can bulk-convert your existing library automatically.
Always compress images before uploading. A hero image does not need to be 3MB. Aim for under 100KB for most hero images when properly sized and compressed.
Lazy Loading (But Not for Your LCP Element)
Lazy loading defers the loading of off-screen images until the user scrolls toward them – this improves initial page load speed significantly. Most caching plugins and WordPress itself (since version 5.5) apply loading="lazy" to images automatically.
Important: Do NOT lazy load your LCP image. If your hero image is the LCP element and it has loading="lazy", the browser will delay loading it, which directly tanks your LCP score. Make sure your LCP image has loading="eager" or fetchpriority="high" set.
Use a CDN to Serve Images Faster
A Content Delivery Network (CDN) stores copies of your static assets – images, CSS, JS – on servers around the world. When a visitor loads your page, the CDN serves those files from the nearest edge node, cutting latency dramatically.
Cloudflare’s free plan is an excellent starting point. It automatically handles image caching and compression globally. For WooCommerce stores with high traffic, a paid CDN plan provides more edge locations and better performance under load.
After setting up your CDN, re-run your PageSpeed Insights and GTmetrix tests to confirm your LCP has improved.
Step 4: Fix INP by Deferring and Delaying Heavy JavaScript
INP replaced First Input Delay in September 2024 as a Core Web Vital, and it’s the metric most WordPress sites fail without realizing it. INP measures the delay between a user interaction (a click, a tap, a keypress) and the next visual update on the page.
WordPress sites fail INP for one core reason: too much JavaScript blocking the main thread during and after page load. Every plugin that injects scripts – sliders, chat widgets, analytics, ad scripts, social sharing buttons – competes for the browser’s single main thread.
Defer JavaScript Execution
Most JavaScript on a WordPress page doesn’t need to run immediately. Use your caching plugin to:
- Defer all non-critical JS – This tells the browser to download the script but only execute it after the HTML has been parsed.
- Delay JS execution – Some plugins (WP Lightbeam Cache, FlyingPress, WP Rocket) offer a “delay JavaScript” feature that goes further, holding off execution until the user first interacts with the page. This is particularly powerful for third-party scripts like chat widgets and social embeds.
Identify and Remove Script Bloat
Open Chrome DevTools → Performance tab → record a page load. Look for “Long Tasks” (tasks that take over 50ms on the main thread). Each one is a potential INP problem.
Common culprits on WordPress sites include:
- Page builder scripts (Elementor, Divi, WPBakery) loading on pages that don’t use those builder components
- Third-party analytics and pixel scripts – Facebook Pixel, Google Tag Manager with many tags
- Slider plugins (Slick, Revolution Slider) loading globally when they’re only on the homepage
- Comment and social sharing scripts loading on every page
The fix: use your caching plugin’s per-page script loading controls, or use a plugin like Asset CleanUp to load scripts only on the pages that need them. For WooCommerce sites, this alone can dramatically improve INP on product and category pages.
Step 5: Eliminate CLS by Setting Image Dimensions and Preloading Fonts

Cumulative Layout Shift is the most visible – and frustrating – Core Web Vital to fail. You’ve experienced it: you’re about to click a link, and the page shifts as an image or ad loads above it, and you click the wrong thing. CLS measures exactly that.
The good news is CLS is often the easiest Core Web Vital to fix on WordPress once you know the causes.
Set Explicit Width and Height on All Images
The number one cause of CLS on WordPress sites is images without declared dimensions. When the browser loads an image without knowing its size, it can’t reserve space in the layout. The image pops in later and pushes all the content below it downward – that’s a layout shift.
Fix it by always adding width and height attributes to your <img> tags. WordPress automatically adds these for images inserted through the media library. The problem often comes from:
- Images added via custom HTML blocks without dimensions
- Third-party plugin output that doesn’t include dimensions
- Embedded iframes (YouTube, maps) without explicit sizes
For iframes like YouTube embeds, wrap them in a container with a fixed aspect ratio using CSS (aspect-ratio: 16/9) to reserve space before the embed loads.
Preload Critical Fonts
Custom fonts are a sneaky CLS cause. When a page loads with a system font first and then swaps to a custom Google Font or web font, text reflows and shifts everything around it. This is called a Flash of Unstyled Text (FOUT) and it directly contributes to your CLS score.
Two fixes:
- Add
font-display: swapto your@font-facedeclarations – this tells the browser to show text immediately using a fallback font, then swap to the custom font. Better than invisible text, but can still cause a small CLS. - Preload your critical font files using
<link rel="preload" as="font">in your<head>. This tells the browser to fetch the font as a high-priority resource so it’s ready before text renders, eliminating the swap shift entirely.
Most caching plugins have a “preload fonts” or “Google Fonts optimization” setting that handles this automatically. Enable it.
Reserve Space for Ads and Dynamic Elements
Ads, cookie banners, and dynamically injected widgets that load after the initial HTML render are classic CLS offenders. Reserve explicit height for these containers in your CSS even before the content loads. A min-height: 90px on an ad slot, for example, tells the browser to hold that space whether or not the ad has loaded yet.
Conclusion: How These Steps Directly Impact Your SEO Traffic
These five steps – upgrading your server, configuring a lightweight WordPress cache, fixing LCP through image and CDN optimization, deferring JavaScript to improve INP, and eliminating layout shifts for CLS – are a complete WordPress performance optimization strategy. They don’t exist in isolation. A faster server improves TTFB, which improves LCP. A properly configured best WordPress caching plugin reduces server load and speeds up delivery globally. Deferred scripts free up the main thread, which improves INP. Declared image dimensions eliminate CLS.
Together, they move your site from “Needs Improvement” to “Good” across all three Core Web Vitals – and Google rewards that with stronger rankings, better click-through rates, and more organic traffic.
Start by running your site through PageSpeed Insights and GTmetrix right now to identify which metric needs the most urgent attention. Then work through these steps in order.
Ready to skip the manual configuration and get Core Web Vitals improvements automatically? Check out WP Lightbeam Cache’s features and pricing plans, it’s built specifically for WordPress sites that need real Core Web Vitals gains without the complexity.
Frequently Asked Questions
How long does it take to improve Core Web Vitals on WordPress after making changes?
Google Search Console’s Core Web Vitals report uses a rolling 28-day window based on real user data. That means even after you make all the right fixes, it takes up to four weeks for the improvements to fully reflect in your Search Console report. Lab data tools like PageSpeed Insights show changes immediately.
Do Core Web Vitals directly affect Google rankings?
Yes. Google officially includes Core Web Vitals as part of its Page Experience ranking signals. While great content is still the primary ranking factor, all other things being equal, a site that passes Core Web Vitals will outrank one that doesn’t. For competitive niches, it can be the tiebreaker.
What is the fastest cache plugin for WooCommerce?
For WooCommerce sites, LiteSpeed Cache (on LiteSpeed hosting) and WP Lightbeam Cache are top choices because they properly handle dynamic content like cart and checkout pages while still aggressively caching product and category pages. Avoid plugins that cache cart and checkout pages — this breaks the shopping experience.
Is WP Rocket still the best WordPress caching plugin in 2025?
WP Rocket is still a solid, beginner-friendly option, but it’s no longer the clear market leader it once was. Real-world Chrome UX Report data shows FlyingPress sites consistently topping Core Web Vitals pass rates. WP Lightbeam Cache and LiteSpeed Cache are both strong wp rocket alternatives — especially if you want comparable or better performance at a lower price.
What is a good Core Web Vitals score for WordPress?
Google’s thresholds for “Good” scores are: LCP under 2.5 seconds, INP under 200 milliseconds, and CLS under 0.1. Aim for these on both mobile and desktop, as Google evaluates them separately. Core Web Vitals must pass on at least 75% of page views to count as passing at the site level.
Written by
Wheeldeal member
Automotive Enthusiast & Content Creator at WheelDeal.
