Overview
What it involves
Run PageSpeed Insights (pagespeed.web.dev) on the homepage and at least one key service page — mobile score first, then desktop. Work through the "Opportunities" and "Diagnostics" sections and apply every quick win you can without a developer: image compression, enabling browser caching, removing unused CSS/JS, deferring non-critical scripts, enabling lazy loading on images. Anything requiring server configuration, CDN setup, or theme code changes gets scoped and documented separately.
Why it matters
Page speed is a confirmed Google ranking factor and the single biggest conversion driver after content. Mobile scores under 50 consistently correlate with higher bounce rates. Easy wins (caching plugin, image compression) often shift mobile scores 20–30 points with one afternoon of work. A fast site also makes every other SEO investment more effective — there's no point ranking position 1 if the page takes 6 seconds to load and the user bounces before reading.
LCP — Largest Contentful Paint
Time until the biggest visible element loads — usually the hero image or H1. Needs improvement: 2.5–4s. Poor: over 4s.
INP — Interaction to Next Paint
Measures how quickly the page responds to user interaction. Needs improvement: 200–500ms. Poor: over 500ms.
CLS — Cumulative Layout Shift
Measures visual stability — how much elements move around as the page loads. Needs improvement: 0.1–0.25. Poor: over 0.25.
Run PageSpeed Insights and Record Baseline
Run PageSpeed Insights and record baseline
Go to https://pagespeed.web.dev. Test the homepage URL. Record the mobile score and desktop score. Screenshot the results.
Test at least one key service page. Record both scores.
In PageSpeed Insights, scroll to "Opportunities" — these are ordered by estimated savings in seconds. Note the top 3–5 opportunities by savings value.
Also note "Diagnostics" — these don't show time savings directly but flag issues (render-blocking resources, large DOM size, etc.).
Save to Drive
- Save screenshots to the client's Drive folder:
pagespeed-before-[page]-[date].png - Record mobile score and desktop score for every page tested
- Note top 3–5 Opportunities by estimated savings value
- Note any Diagnostics flags — render-blocking resources, large DOM, etc.
Fix Oversized Images
Fix oversized images
Images are the most common cause of slow LCP scores.
In PageSpeed Insights, look for "Properly size images" and "Serve images in next-gen formats" — these tell you which images are oversized.
For WordPress: install ShortPixel or Smush (image compression plugin). Run a bulk compression on all existing images. Set future uploads to auto-compress.
Manual approach: download images that PageSpeed flags, compress using TinyPNG or Squoosh (squoosh.app), re-upload. Aim for: hero images under 200KB, smaller content images under 100KB.
Format: convert JPEGs and PNGs to WebP where possible. PageSpeed Insights will flag this explicitly. Most modern image compression plugins handle this automatically.
Enable lazy loading on below-the-fold images. In WordPress: most themes and page builders have a lazy load setting. If not, add loading="lazy" to <img> tags manually.
Targets
- Hero images: under 200KB
- Smaller content images: under 100KB
- Format: WebP where possible (plugins handle this automatically)
- Lazy loading enabled on all below-the-fold images
Enable Browser Caching
Enable browser caching
Browser caching lets repeat visitors load the page from their local cache rather than re-downloading every asset.
For WordPress: install WP Rocket (paid, recommended) or W3 Total Cache (free). Enable page caching and browser caching in the plugin settings.
In PageSpeed Insights, look for "Serve static assets with an efficient cache policy" — this tells you which assets are missing cache headers.
.htaccess or nginx config). Document this as a dev team fix rather than attempting it yourself.
Defer and Eliminate Render-Blocking Scripts
Defer and eliminate render-blocking scripts
Render-blocking resources are scripts or stylesheets in the <head> that pause rendering until they've loaded.
In PageSpeed Insights, look for "Eliminate render-blocking resources". This lists specific scripts and stylesheets.
For WordPress (WP Rocket): go to File Optimization → Delay JavaScript Execution. This defers all non-critical scripts until user interaction. Also enable "Remove Unused CSS" — this purges CSS from pages that don't use it.
Remove unused plugins: each active WordPress plugin that enqueues its own CSS/JS adds render-blocking load. Deactivate any plugin that isn't actively providing value on public-facing pages.
For Google Analytics and Tag Manager: make sure they're loaded asynchronously (async attribute on the script tag). GA4 loads async by default; check Tag Manager configuration.
WP Rocket checklist
- File Optimization → Delay JavaScript Execution: enabled
- File Optimization → Remove Unused CSS: enabled
- Minify CSS and Minify JavaScript: enabled
- Unused plugins: deactivated
- GA4 / Tag Manager: confirm async loading
WordPress-Specific Quick Wins
WordPress-specific quick wins
Additional actions for WordPress sites beyond what's covered in steps 2–4.
Update WordPress core, all themes, and all plugins. Outdated software often has performance regressions that are fixed in newer versions.
Check if the current theme is a performance-optimised theme. Bloated page builders (Divi, Elementor on old configurations) often generate excessive CSS/JS. Note for client — theme change is a project, not a quick fix.
Enable GZIP or Brotli compression: check via https://checkgzipcompression.com. If not enabled, this is a server-level fix for the dev team.
Minify CSS and JS: WP Rocket → File Optimization → Minify CSS and Minify JavaScript. This reduces file sizes without changing functionality.
Quick-win checklist
- WordPress core: updated to latest version
- All themes: updated
- All plugins: updated
- GZIP/Brotli compression: verified or flagged for dev team
- CSS minification: enabled in WP Rocket
- JS minification: enabled in WP Rocket
Scope Bigger Fixes Separately
Scope larger fixes separately
Some issues can't be fixed in an hour and require separate scoping. Document these clearly rather than attempting them mid-task.
Issues requiring separate scoping
- CDN: if the host is slow or the audience is geographically distributed, a CDN (Cloudflare, BunnyCDN) can dramatically improve TTFB — scope separately with estimated cost
- Theme or page builder replacement: if the theme is fundamentally bloated, a theme change is required — multi-day project
- Web hosting upgrade: check TTFB — if it's over 600ms consistently, the server itself is slow; hosting upgrade required
- CWV requiring dev work: CLS caused by layout shifts in the theme or INP issues from heavy JavaScript applications require developer intervention
Re-Test and Document
Re-test and document
After applying all quick wins: re-run PageSpeed Insights on the same pages. Screenshot the after scores and save alongside the before screenshots.
Zoho comment must include
- Before score (mobile / desktop) for each page tested
- After score (mobile / desktop) for each page tested
- Specific changes made — e.g. "Installed WP Rocket — enabled caching, deferred JS, minified CSS/JS; compressed 47 hero images via ShortPixel"
- Any fixes scoped for separate work
CWV Reference
Core Web Vitals — Quick Reference
| Metric | What it measures | Good threshold | Common cause if failing | Quick fix |
|---|---|---|---|---|
| LCP | Time to render largest content element | < 2.5s | Oversized hero image, slow server, render-blocking CSS | Compress hero image, enable caching, preload LCP image |
| INP | Responsiveness to user interaction | < 200ms | Heavy JavaScript execution on interaction | Defer JS, remove unused scripts, update plugins |
| CLS | Visual stability as page loads | < 0.1 | Images without defined dimensions, late-loading ads, font swap | Add width/height to all img tags, use font-display: swap |
Common Mistakes
Mistakes to avoid
| Mistake | Why it's a problem | What to do instead |
|---|---|---|
| Optimising desktop score only | Mobile is the primary ranking signal for Google. A 90 desktop / 30 mobile site is a slow site. | Always test and optimise mobile first. Record mobile scores prominently. |
| Installing multiple caching plugins | Two caching plugins conflict — they interfere with each other's cache and often break the site. | One caching plugin only. If WP Rocket is installed, remove W3 Total Cache and vice versa. |
| Compressing the wrong images | PageSpeed Insights tells you exactly which images are oversized. Compressing images that weren't flagged wastes time. | Work from the PageSpeed Insights "Properly size images" list, not a blanket compression of all images. |
| Not recording the before score | You can't demonstrate improvement without the baseline. | Screenshot before scores immediately — before making any changes. |
| Trying to fix CDN or hosting issues without scoping | These are project-level changes. Attempting them in a 1-hour task causes half-finished configurations and site instability. | Document as "Scoped for separate work" in Zoho. Don't start what you can't finish. |