TL;DR: Your Google PageSpeed score is a lab-based diagnostic; what actually affects rankings is your Core Web Vitals field data — LCP under 2.5s, INP under 200ms, CLS under 0.1. For most small business sites, image optimization alone closes 60–70% of the gap. Fix images first, then tackle scripts and caching.
Google PageSpeed Insights (pagespeed.web.dev) gives your site a score from 0 to 100 for both mobile and desktop. This guide explains what the score actually measures, which metrics matter most for rankings, and exactly how to improve each one — in order of impact.
The 3 Core Web Vitals That Drive Rankings
Google uses three Core Web Vitals as a ranking signal, measured against real users via Chrome field data (CrUX), not the lab score you see in PageSpeed Insights. Pass all three thresholds at the 75th percentile across your pages and you qualify for the Page Experience ranking benefit.
| Metric | What It Measures | Good | Needs Work | Poor |
|---|---|---|---|---|
| LCP — Largest Contentful Paint | Time for the largest visible element (hero image or heading) to load | ≤ 2.5 s | 2.5–4.0 s | > 4.0 s |
| INP — Interaction to Next Paint | How quickly the page responds to any user interaction (click, tap, keystroke) | ≤ 200 ms | 200–500 ms | > 500 ms |
| CLS — Cumulative Layout Shift | How much the page layout jumps around during load | ≤ 0.1 | 0.1–0.25 | > 0.25 |
INP replaced First Input Delay (FID) as a Core Web Vital in March 2024. If you see FID in older audit reports, it’s no longer relevant. INP measures all interactions on the page, not just the first one — it’s a stricter signal.
The distinction between the lab score and field data matters: you can have a 95 lab score and still fail CWV thresholds in field data if real users on slow mobile connections experience poor performance. Fix both.
Which Diagnostic Tool to Use
You have four main options, each showing different things:
| Tool | What It Shows | Best Used For |
|---|---|---|
| PageSpeed Insights (pagespeed.web.dev) | Lab score + real CrUX field data (when available) | Starting point for any site — shows both lab and field data in one place |
| Chrome DevTools Lighthouse | Lab score + detailed opportunity list | Debugging specific fixes; run locally without sending data to Google |
| CrUX Dashboard (lookerstudio.google.com) | 28-day rolling field data by device, country, connection | Tracking real-user improvement over time; confirming fixes landed |
| WebPageTest (webpagetest.org) | Waterfall view of every resource loading | Advanced debugging of load order, third-party script delays, render-blocking |
Start with PageSpeed Insights — it’s the fastest way to see both your lab score and real CrUX data in one view. Once you’ve made fixes, use the CrUX dashboard to confirm that real users are seeing the improvement (lab scores can improve without field data moving, especially on JavaScript-heavy sites).
The 8 Most Impactful Fixes
Listed in order of typical impact. Start at the top.
1. Optimize Your Images
Images are the single biggest performance bottleneck on most small business websites. One unoptimized hero photo can be 3–5 MB — larger than the rest of the page combined.
Convert to WebP or AVIF. These modern formats are 25–50% smaller than JPEG and PNG with no visible quality loss. Use Squoosh (squoosh.app) to convert manually. Most CMS platforms and page builders now support WebP natively.
Resize to display dimensions. If an image appears at 800px wide, don’t upload a 3,000px original. Upload an 800px version (or 1,600px for retina screens). Oversized images waste bandwidth the browser immediately discards.
Add explicit width and height attributes. This lets the browser reserve space before the image loads, preventing Cumulative Layout Shift (CLS). It’s a two-attribute change that directly improves your CLS score.
Use lazy loading below the fold. Add loading="lazy" to every image that doesn’t appear in the first viewport. The browser skips loading these until the user scrolls near them.
Preload your hero image. Add <link rel="preload" as="image" href="/your-hero.webp"> in your HTML <head>. This is the single most targeted LCP fix — it tells the browser to start downloading the hero image immediately, before it even parses the rest of the page.
2. Minify CSS and JavaScript
Minification removes whitespace, comments, and redundant characters without changing functionality. Typical reduction: 20–30% on file size.
Most website builders minify automatically. For WordPress, WP Rocket or LiteSpeed Cache handle it with one click. For custom sites, your build tool (Vite, Webpack, esbuild) has minification built in — check that it’s enabled for production builds.
3. Enable Browser Caching
Returning visitors should reuse previously downloaded files instead of re-fetching them. Set Cache-Control headers to cache static assets (images, CSS, JavaScript, fonts) for at least 30 days.
Cloudflare handles caching automatically on its free tier. For other hosts, caching plugins (WP Rocket, W3 Total Cache) add the right headers with minimal configuration. Check PageSpeed Insights for a “Serve static assets with an efficient cache policy” recommendation — if it appears, caching isn’t configured.
4. Audit Third-Party Scripts
Every analytics pixel, chat widget, social embed, and advertising tag adds JavaScript that the browser must download, parse, and execute. Each one delays load time.
Common offenders to audit:
- Running multiple analytics tools (GA4 is sufficient for most businesses — remove duplicates)
- Chat widgets loading on every page (load only on contact and pricing pages)
- Social share buttons (click-through rate on these is typically under 0.1%)
- Google Fonts loading 6+ weights when you use 2
Check your total third-party script load in WebPageTest’s waterfall view. Any script taking more than 200ms to load and execute is worth evaluating.
5. Use a Content Delivery Network
A CDN stores your files on servers worldwide, so each visitor loads content from a nearby server rather than your origin. Cloudflare’s free tier works with any website and typically cuts load time 30–60% for visitors far from your hosting region.
This matters most for LCP: your hero image loads from a server 50ms away instead of 400ms away.
6. Eliminate Render-Blocking Resources
CSS and JavaScript in your <head> block the page from rendering until they finish downloading. This directly delays LCP and overall perceived load time.
The fix: add defer or async to script tags that don’t need to run before page render. For CSS, load non-critical stylesheets asynchronously using media="print" onload="this.media='all'". Inline only the critical CSS (the ~1–2KB of styles needed to render the above-the-fold content).
7. Enable Brotli or Gzip Compression
Server-side compression reduces the size of text-based responses (HTML, CSS, JavaScript) before they travel over the network. Brotli achieves 15–20% better compression than Gzip and is supported by all major browsers.
Check PageSpeed Insights for an “Enable text compression” recommendation. If it appears, your server isn’t compressing. Most managed hosting providers enable Brotli via a toggle in their control panel; Cloudflare enables it automatically.
8. Preload Critical Resources
Beyond the hero image, preload anything that blocks initial render: your primary font file, any critical JavaScript, and CSS required for above-the-fold content. Use <link rel="preload"> in your HTML head with the correct as attribute (image, font, script, style).
Don’t preload everything — only resources that are on the critical path and discovered late in the load sequence. Preloading too many resources creates contention.
Platform-Specific Quick Wins
WordPress: Install WP Rocket (from $59/yr) or LiteSpeed Cache (free). Either handles images, minification, caching, and lazy loading. Expect a 20–40 point score improvement. Remove unused plugins — each active plugin can add JavaScript.
Shopify: Enable Shopify’s built-in image compression. Remove unused apps (each app typically adds 50–200ms). Choose a lightweight theme — Shopify’s Dawn theme is well-optimized out of the box. Shopify’s CDN handles asset caching automatically.
Squarespace / Wix: These platforms handle most optimization internally, but you have limited control over caching and compression. Focus on what you can control: upload properly sized WebP images and minimize third-party script embeds.
Custom / Static Sites: You have full control. Use a modern build tool (Vite, Astro, Next.js) with automatic image optimization and asset minification. Deploy to Cloudflare Pages or Vercel — both serve assets from a global CDN with Brotli compression and long cache TTLs. Realistically target 95+ on both mobile and desktop.
Score Targets
| Score | Meaning | What to Do |
|---|---|---|
| 90–100 (Green) | Fast — speed isn’t hurting rankings | Monitor monthly; maintain |
| 50–89 (Orange) | Needs improvement — likely losing speed-sensitive rankings | Work through the 8 fixes above |
| 0–49 (Red) | Poor — speed is actively costing you traffic and conversions | Fix image optimization, browser caching, and CDN immediately |
For most small business websites, a realistic goal is 80+ on mobile. The improvement from 40 → 80 has a much larger real-world effect on rankings and bounce rate than 80 → 100 — and it’s achievable on almost any platform.
Track Progress Automatically
Run your site through SEOPulse’s free audit to see your current page speed score alongside your full SEO health check. The audit identifies specific speed opportunities in plain English.
To catch regressions automatically — a plugin update or image upload that tanks your LCP — SEOPulse’s weekly reports include page speed tracking every Monday. No dashboards to check. If your score drops, you’ll know within a week. See also: technical SEO checklist for small businesses and the complete SEO guide for service businesses.
Frequently Asked Questions
What is a good Google PageSpeed score? A score of 90–100 (green) is excellent. 50–89 (orange) means your site is losing speed-sensitive rankings. Below 50 (red) means speed is actively hurting your business. For most small business sites, reaching 80+ on mobile is the practical target — the jump from 40 to 80 has far more ranking impact than going from 80 to 100.
Does PageSpeed score directly affect Google rankings? Not the score itself. Google uses real-world Core Web Vitals field data as the ranking signal — LCP under 2.5s, INP under 200ms, CLS under 0.1 — measured against actual Chrome users via CrUX. PageSpeed Insights is a diagnostic tool. The field data panel in PageSpeed Insights (when available) shows what Google actually sees.
What is the difference between PageSpeed Insights and Lighthouse? Lighthouse is the open-source testing engine that powers PageSpeed Insights. PageSpeed Insights runs Lighthouse in Google’s cloud and also shows real CrUX field data (when your site has enough traffic). Lighthouse can also be run locally in Chrome DevTools → Lighthouse tab, which is useful for testing local changes before deploying.
What is the fastest fix for a slow LCP?
Compress your hero image to WebP, resize it to the actual display size, and add a <link rel="preload" as="image"> tag in your HTML head pointing to that image. Together, these three changes typically cut LCP by 1–2 seconds on most small business sites with unoptimized images.
Should I optimize for mobile or desktop PageSpeed? Mobile first. Google uses mobile-first indexing — it crawls and ranks the mobile version of your site. Mobile scores are almost always lower than desktop because mobile devices have slower CPUs and variable network conditions. Fix mobile; desktop improvements follow automatically.