Skip to content

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

  1. Slow hosting → TTFB is bad → everything else is bad
  2. Huge unoptimized images → LCP is bad
  3. 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

  1. Migrate to decent hosting
  2. Install WP Rocket (or equivalent)
  3. Install an image optimizer + enable WebP
  4. Turn on Cloudflare (free tier)
  5. Audit and remove unused plugins
  6. Switch to Gutenberg / performance theme if on a heavy page builder
  7. 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

Frequently asked questions

Why are WordPress Core Web Vitals so bad by default?
Three reasons: slow shared hosting (bad TTFB), unoptimized images from WYSIWYG uploads, and plugin sprawl loading dozens of scripts. Fix all three and most WP sites pass.
Which caching plugin is best for WordPress?
WP Rocket is the easiest paid option (~$50/yr) and configures correctly out of the box. W3 Total Cache and WP Super Cache are free but need more tuning.
Is Elementor bad for Core Web Vitals?
Elementor ships ~500KB of base runtime JavaScript, which makes Core Web Vitals difficult to pass. Gutenberg with a performance theme (Kadence, GeneratePress) is significantly faster.

Check a site's vitals

Explore by industry

See how real-world sites in each vertical perform on Core Web Vitals.

Related guides

← All guides