Loading tutorials…
Loading tutorials…
A slow WordPress site costs you ad ROAS, organic rankings, and conversion rate at the same time. This checklist walks through the speed wins that actually move marketing metrics — not just PageSpeed scores.
Who this is forWordPress site owners with PageSpeed scores under 70 mobile, or Core Web Vitals warnings in Search Console. Especially relevant if you run paid traffic — slow LP = high CPC + low CR = double cost on every dollar.
What you'll need
Step 1
PageSpeed Insights + Tools → Site Health + plugin count. Document baseline so you can measure improvement after each change.
Run pagespeed.web.dev/analysis on your homepage. Note mobile + desktop scores, LCP, FID, CLS, INP.
Repeat on 2-3 key landing pages (highest-traffic blog post, top product, contact page).
WordPress Admin → Tools → Site Health → Status. Note any critical or recommended issues.
Plugins → Installed Plugins → count active plugins. Typical healthy WordPress: 15-25. Anything over 35 needs an audit.
Save these numbers in a doc. After each change, re-run and compare. If a change does not move the numbers, undo it — you do not want speed-theater fixes.
Step 2
Plugins → Installed Plugins. Deactivate any plugin not actively used. Even deactivated plugins on disk slow some operations — fully delete the ones you do not need.
WordPress Admin → Plugins → Installed Plugins. Look at every active plugin and ask: 'do I use this in the last 30 days?' If no, deactivate.
Common bloat sources: 2-3 contact-form plugins active when only one is used. Two SEO plugins. Two cache plugins. Three image optimizers.
For each plugin, before deactivating, check if it owns data: contact-form plugins store submissions; e-com plugins store orders. Deactivating without removing data is safe; deleting requires understanding the data.
After deactivation, run PageSpeed again. Note the delta. Continue until you are at 15-25 active plugins.
Pay special attention to "Social Sharing" plugins — they often load 8-12 external JS files. Replace with native social meta tags from Yoast/RankMath.
Step 3
WP Rocket (paid, $59/yr) or LiteSpeed Cache (free, requires LiteSpeed server) or W3 Total Cache (free). One only — never two.
If you are on managed WordPress hosting (WP Engine, Kinsta, Pressable, Pantheon), the host already runs server-level caching. Do NOT install a caching plugin — it conflicts with the host cache and breaks things.
If you are on shared hosting (Bluehost, SiteGround, Hostinger) or self-managed VPS, install a caching plugin.
Recommendation: WP Rocket if budget allows ($59/yr per site). Easiest to configure, best support, sane defaults.
Free alternative: LiteSpeed Cache (only works on LiteSpeed-server hosts), or W3 Total Cache (works everywhere, more complex setup).
After install: enable Page Cache, Browser Cache, GZIP compression. Most plugins have a "recommended" preset — use it as a starting point, do not enable every advanced option.
Re-run PageSpeed. Caching usually moves mobile score +10-25 points if you started low.
Step 4
Install ShortPixel, Imagify, or Smush. Bulk-optimize all existing images. Set up auto-optimization for future uploads. Convert to WebP/AVIF.
Plugins → Add New → install ShortPixel or Imagify. Both are freemium with reasonable free tiers (100-200 images/month).
Connect via API key (free signup). Set Compression Level to "Glossy" (Imagify) or 70-80% quality (ShortPixel) — visually lossless for most images.
Enable WebP generation. Modern browsers consume WebP at 30-50% smaller file sizes than JPEG/PNG.
Run a Bulk Optimization pass on your entire media library. Can take hours on a site with 2,000+ images. Run overnight.
Configure auto-optimize on upload so future images are compressed automatically.
For the next round, look at lazy-loading. WordPress 5.5+ lazy-loads images natively. Verify with Tools → Site Health → no warning about missing lazy loading.
After image work, PageSpeed mobile score should jump +5-15 points. LCP improves dramatically on image-heavy pages.
Step 5
Cloudflare (free tier is enough for most) or BunnyCDN ($1/mo+). CDNs cut TTFB by 40-70% for non-local visitors.
Sign up at cloudflare.com (free). Add your domain.
Cloudflare gives you two nameservers (e.g., neil.ns.cloudflare.com). Update your domain's nameservers at your registrar (NameCheap, GoDaddy, etc).
Wait 24-48 hours for DNS propagation. Cloudflare emails you when active.
Once active: Cloudflare → SSL/TLS → set to 'Full (strict)' — requires your origin host to have a valid SSL cert.
Cloudflare → Speed → Optimization → enable Auto Minify (HTML, CSS, JS), Brotli compression.
Cloudflare → Caching → Configuration → set Browser Cache TTL to 1 month. Set "Cache Level" to Standard.
Test from a different geographic location (use webpagetest.org with a non-local test location). TTFB should drop 200-600ms.
Step 6
Heavy themes (Avada, Divi, BeTheme) and page builders (Elementor with 50+ widgets) add 200-500ms of JS parse time per page.
Open your homepage in Chrome DevTools → Network → reload. Filter by JS. Look at the largest files. If you see 1MB+ Elementor/Divi/Avada files, you are loading bloat.
Elementor: Plugins → Elementor → Settings → Experiments. Disable any experiment not actively used. Some experiments add 100-300ms each.
Avada and Divi: open the theme options panel. Disable any module/widget you do not use globally.
Consider a lighter theme. Twenty Twenty-Five (block theme) loads in 50-100ms. Astra and GeneratePress are lighter alternatives to Avada/Divi for content sites.
Theme/builder migrations are big projects — only justify them if you are spending more on hosting + plugins to compensate than the migration would cost.
Step 7
Google Search Console → Experience → Core Web Vitals. Watch URLs move from Poor → Needs Improvement → Good over 28 days.
Open Google Search Console → Experience → Core Web Vitals.
You see Mobile and Desktop CWV status. Each URL is classified as Good, Needs Improvement, or Poor based on real Chrome user data (field data, not lab).
After speed work, give it 28 days for field data to reflect changes. Search Console shows a rolling 28-day window.
If URLs stay in 'Poor,' the lab PageSpeed score may look good but field reality differs. Common cause: slow third-party scripts (chat widgets, analytics, ad networks) that PageSpeed Insights does not always catch.
Use the GSC URL inspection tool on individual URLs to see field CWV per URL.
Common mistakes
Running 40+ active plugins
What goes wrong: Each active plugin = queries on page load, JS/CSS to enqueue, autoload row in wp_options. A site with 45 plugins is typically 800ms-1.5s slower than the same site with 20 plugins. PageSpeed score drops 15-30 points.
How to avoid: Plugins → audit each active plugin. Deactivate anything not used in 30 days. Target 15-25 active plugins on most sites.
Uploading 3-5MB hero images without optimization
What goes wrong: A 4MB JPG hero image is 95% of your page weight. LCP misses the 2.5s mark by a wide margin. Mobile users on 4G see a blank hero for 3-5 seconds.
How to avoid: Install ShortPixel/Imagify. Bulk-optimize media library. Convert to WebP. Target hero images <300KB. Use srcset for responsive image sizing.
Running two caching plugins simultaneously
What goes wrong: WP Rocket + W3 Total Cache active at once. They compete for cache writes, invalidate each other, and the site is slower than no caching at all. Common after agency changes.
How to avoid: Pick ONE caching plugin. Deactivate and delete the other (including its config — leftover .htaccess rules can break things). Re-run PageSpeed.
Caching plugin on managed WordPress hosting
What goes wrong: WP Engine/Kinsta/Pressable run server-side caching. Adding WP Rocket on top creates conflicts: stale content, 502 errors, or pages serving the wrong cache layer.
How to avoid: On managed WordPress: do NOT install a caching plugin. The host handles it. Use the host control panel to clear cache when needed.
Not optimizing the actual top-converting landing pages
What goes wrong: You optimize the homepage and ignore the 'thanks-for-buying' page or product landers. Homepage PageSpeed score looks great in screenshots, but the pages that matter for conversion still load slow.
How to avoid: Run PageSpeed on your actual top-trafficked URLs (use GSC Performance report to find them). Optimize those first.
Letting third-party scripts add 2-5 seconds to load
What goes wrong: Chat widgets (Intercom, Drift), ad-network scripts, A/B test scripts (Optimizely, VWO) frequently add 500ms-2s each. Five such scripts and your fast site is slow again.
How to avoid: Audit Network tab in DevTools. For each third-party script, ask: is the marketing value worth 500ms? Defer or remove anything that fails the test. Use Async/Defer attributes for non-critical scripts.
Recap
Done — what's next
WordPress SEO fundamentals — the setup checklist
Read the next tutorial
Hand it off
WordPress speed work is a project, not a one-time fix — plugins update, themes update, images keep getting uploaded. A vetted WordPress performance specialist does the initial audit + rebuild in 4-6 hours ($60-100), then ongoing monthly maintenance at $14-16/hr ($200-400/mo).
See specialist rates
Mobile 80+ is solid. Mobile 90+ is excellent. Mobile under 50 hurts both ad costs and organic rankings. Desktop scores are usually 15-25 points higher than mobile — optimize for mobile first.
Free options (LiteSpeed Cache, W3 Total Cache) work but require more configuration knowledge. WP Rocket ($59/yr) is worth it if your time is worth more than $59/yr — sane defaults, one-click optimization, good support.
Three common causes: (1) recent plugin or theme update added bloat; (2) Google Lighthouse updated and now penalizes things it did not before; (3) you have new high-resolution images uploaded without compression. Run a diff against your baseline audit.
If speed is the primary concern: yes, block themes (Twenty Twenty-Five, Twentig, Kadence Blocks) load 200-500ms faster than Elementor for the same layout. The migration is 8-20 hours depending on site size — only worth it if speed gains justify the project.
Estimated impact: every 1-second LCP increase = ~7% conversion rate loss (Akamai/Portent benchmarks). Google Ads Quality Score drops 1-2 points for slow LPs, raising CPC 15-30%. SEO rankings drop 1-3 positions on Core Web Vitals Poor URLs. Cumulative damage: 20-40% of marketing ROI on heavy-spend sites.
Only if you skip the safeguards. Always: take a backup before bulk optimization. Use a plugin that preserves originals (ShortPixel and Imagify both do). Visually QA 5-10 pages after. The optimized images replace originals at the same dimensions — layout is preserved unless you also change image sizes.
WordPress
Installing Yoast or RankMath is step two. Step one is making sure WordPress itself is configured for SEO — permalinks, indexable content rules, taxonomy hygiene. Skip this and the SEO plugin is putting lipstick on a leak.
WordPress
A hacked WordPress site does more than lose data — it tanks Google rankings, gets your domain flagged in Meta Ads, and loses paid traffic to spammy redirects. This is the security baseline that protects your marketing investment.
WordPress
WordPress is the easiest CMS to start with and the easiest to make a mess of by month 18. This is the honest framework for when DIY becomes the bottleneck and a specialist pays for themselves.