WordPress Core Web Vitals optimization
WordPress sites typically have the same three performance problems, in the same order. Fix them in sequence and most WP sites move from "poor" to "good" in an afternoon.
The three problems
- Slow hosting → TTFB is bad → everything else is bad
- Huge unoptimized images → LCP is bad
- Plugin sprawl loading 40+ scripts → INP is bad and total page weight is huge
Most of the fixes come from two specific plugins and two hosting changes.
1. Get off shared hosting
If you're on Bluehost / GoDaddy shared / HostGator, TTFB will be 1.5–3 seconds no matter what else you do. Move to real WordPress hosting:
- Kinsta, WP Engine, Flywheel — managed WP with edge caching, $30–$100/mo
- Cloudways (DigitalOcean / Linode backend) — $15/mo for small sites
- SiteGround — budget but workable for low-traffic sites
After migration, TTFB typically drops from 2.5s to 300ms. That alone cuts LCP by 2 seconds.
2. Install a real caching plugin
Three tiers of effort:
- Free: W3 Total Cache or WP Super Cache — basic page caching
- Paid (~$50): WP Rocket — caching + minification + lazy load + CDN setup in one
- Free, technical: Full-page cache via your host's built-in (Kinsta / WP Engine / Cloudways have these)
WP Rocket is the default recommendation. It's boring, it works, and it configures correctly out of the box.
3. Optimize images
Three plugins compete here:
- Imagify — auto-optimizes on upload, includes WebP/AVIF conversion
- ShortPixel — same category, cheaper at scale
- Smush — free tier available, paid has WebP
Any of these + a CDN (Cloudflare free tier is fine) solves 80% of WP image issues. The uploaded 4MB hero.jpg becomes a 120KB AVIF served from CDN.
Also: enable <img loading="lazy"> (WordPress has since 5.5 by default) and <img width="…" height="…"> attributes (default in Gutenberg, not in Classic Editor — check your theme).
4. Audit plugins ruthlessly
Most WP sites load 30–60 plugins. Every one ships CSS and JavaScript. Go to Settings → Plugins and deactivate everything you don't actively use. Delete if you're sure.
Common offenders:
- Jetpack (loads ~200KB of unused features)
- Yoast SEO (fine, but its metabox scripts load on front-end by default — configure to admin-only)
- Contact Form 7 (loads scripts on every page, not just contact)
- Multiple "related posts" plugins loading separately
Use Query Monitor (free plugin, dev-only) to see what's loading where.
5. Elementor vs Gutenberg
Gutenberg (WordPress's built-in editor) produces clean-ish HTML with minimal JavaScript.
Elementor, Divi, WPBakery, Beaver Builder are page-builders that ship heavy client-side runtimes. Elementor's base runtime is ~500KB of JavaScript. Sites built in Elementor almost never pass Core Web Vitals without serious effort.
If performance matters more than editor convenience, use Gutenberg + a block-compatible theme (e.g., Kadence, GeneratePress, Blocksy). If you're on Elementor and can't migrate, at minimum enable Elementor's "Performance" features: Optimized DOM Output, CSS File Mode = External, Improved Asset Loading.
6. Check your theme
Some themes ship huge amounts of CSS and JS for features you don't use. Check:
- Page weight of a blank post (create an empty draft, view source, sum CSS + JS)
- If >500KB on an empty post, the theme is the problem
- Consider switching to GeneratePress, Kadence, or Astra — all known for performance
The order of operations
- Migrate to decent hosting
- Install WP Rocket (or equivalent)
- Install an image optimizer + enable WebP
- Turn on Cloudflare (free tier)
- Audit and remove unused plugins
- Switch to Gutenberg / performance theme if on a heavy page builder
- Re-run PageSpeed Insights
Most WP sites go from "poor" to "good" on all three Core Web Vitals after steps 1–4.
By Paulo de Vries · Published