A perfect 100 on PageSpeed Insights is a vanity metric. A consistent 95+ score on real-world user conditions — that's a business advantage. Faster sites rank higher, convert better, and keep visitors longer. The difference between a 62 and a 96 score is often the difference between page 3 and page 1 on Google.
We've built and optimised hundreds of websites at AZi Solutions, and every one of our new builds scores 95+ on PageSpeed. This is the exact framework we follow — no fluff, no theory, just the steps that actually work.
Why PageSpeed Matters More Than Most Businesses Realise
Before the how, the why — because "faster is better" doesn't quite capture the real stakes:
- Google uses Core Web Vitals as a direct ranking signal — slow sites are penalised in search results
- A 1-second delay in page load time reduces conversions by 7% on average
- 53% of mobile users abandon a page that takes more than 3 seconds to load
- A faster page means lower bounce rate, which signals quality to Google and compounds your rankings
Speed is not a nice-to-have. It is a conversion rate problem, an SEO problem, and a user experience problem simultaneously.
Understanding Your PageSpeed Score
PageSpeed Insights measures your site across two environments: lab data (simulated, consistent) and field data (real users, via Chrome UX Report). Both matter, but field data is what Google actually uses for ranking. You can have perfect lab data and still have poor rankings if real-world performance is slow due to server location, third-party scripts, or user device conditions.
The five metrics that make up your score:
- LCP (Largest Contentful Paint) — how long until the main content is visible. Target: under 2.5s
- FCP (First Contentful Paint) — when any content first appears. Target: under 1.8s
- INP (Interaction to Next Paint) — responsiveness to user input. Target: under 200ms
- CLS (Cumulative Layout Shift) — visual stability, elements jumping around. Target: under 0.1
- TBT (Total Blocking Time) — how long the main thread is blocked. Target: under 200ms
Step 1: Choose the Right Hosting (The Most Overlooked Factor)
Your hosting is your foundation. You cannot compensate for bad hosting with any amount of code optimisation. A site on a slow shared hosting server in the wrong geography will never score 95+, no matter how optimised the code is.
For most businesses, the right choice in 2026 is:
- Managed WordPress hosting (Kinsta, WP Engine, or Cloudways) for WordPress sites — expect to pay $30–80/month, and it's worth every cent
- Static file hosting (pure HTML/CSS/JS served from Namecheap, SiteGround, or similar with LiteSpeed) — this is what we build at AZi Solutions, and it's the fastest option available
- Server location matching your audience — if 80% of your traffic is from Dubai, your server should be in the UAE or at least the Middle East/Europe region
Enable LiteSpeed Cache or server-level caching if your host offers it. This alone can take a mediocre-performing site to 90+ before touching a line of code.
Step 2: Image Optimisation (Usually Worth 30+ Points)
Images are almost always the single biggest performance culprit. Here's the full image optimisation checklist:
Convert to WebP Format
WebP images are 25–35% smaller than JPEG and 25–50% smaller than PNG at equivalent quality. Every image on your site should be WebP. On WordPress: use a plugin like ShortPixel or Imagify to auto-convert. On static sites: convert during your build process using tools like Squoosh or cwebp.
Serve Correctly Sized Images
Serving a 2400px image in a 400px container is one of the most common (and wasteful) mistakes. Use the srcset attribute to serve different image sizes to different screen sizes. Mobile gets a smaller file; desktop gets the larger one. This alone can save hundreds of kilobytes per page.
Lazy Load Below-the-Fold Images
Add loading="lazy" to any image that isn't visible on initial page load. This is a single attribute that tells the browser not to download the image until the user scrolls toward it. Zero performance cost on the user's end, significant improvement in initial load metrics.
Set Explicit Width and Height
Add explicit width and height attributes to all images. This prevents CLS (layout shift) because the browser knows how much space to reserve before the image loads. No explicit dimensions = layout jumps = CLS penalty.
Step 3: Eliminate Render-Blocking Resources
Render-blocking resources are CSS and JavaScript files that pause the browser from displaying your page until they've fully downloaded and processed. Every second your page is blocked is a second the user sees nothing.
Defer Non-Critical JavaScript
Add defer to any script tag that isn't needed for the initial page render:
<script src="main.js" defer></script>
This tells the browser: download this script in the background, but don't run it until the HTML is fully parsed. Analytics scripts, chat widgets, and social media embeds should all be deferred or loaded asynchronously.
Inline Critical CSS
The CSS needed to render above-the-fold content (the "critical path CSS") should be inlined directly in the <head> of your HTML rather than loaded from an external file. External CSS files create a round-trip request; inlined styles render immediately. For everything below the fold, load the full CSS file asynchronously.
Remove Unused CSS and JavaScript
If you're using a CSS framework like Bootstrap or Tailwind, you're likely loading hundreds of kilobytes of CSS that you'll never use. Tools like PurgeCSS (for static sites) or WP Rocket's CSS minification (for WordPress) remove unused rules automatically. Similarly, unused JavaScript should be code-split or removed entirely.
Step 4: Enable Caching and Compression
These two server-level optimisations require minimal effort but produce significant gains:
Gzip/Brotli Compression
Compression reduces the file size of text-based assets (HTML, CSS, JavaScript) by 70–90% before they're sent over the network. Brotli is newer and compresses better than Gzip; most modern servers and CDNs support both. Enable via your .htaccess file or server config:
AddOutputFilterByType DEFLATE text/html text/css application/javascript
Browser Caching
Tell browsers how long to cache your static assets. CSS, JavaScript, images, and fonts don't change frequently — set cache headers to 1 year for these. HTML pages change more often — set to a few hours. A returning visitor who has cached assets loads your page almost instantly on repeat visits, and their field data improves your Core Web Vitals aggregate.
Step 5: Optimise Fonts
Google Fonts and other web font services are convenience — but that convenience comes with a latency cost. Here's how to load fonts fast:
- Self-host your fonts — download the font files, serve them from your own server. Eliminates the DNS lookup and connection overhead of fetching from Google's servers
- Use
font-display: swap— tells the browser to render text with a system font immediately, then swap to your custom font when it loads. Prevents invisible text during font loading - Preload critical fonts — add
<link rel="preload" as="font">in your<head>for fonts used above the fold - Use subset fonts — if you only use Latin characters, don't load the full character set. Subsetting can reduce font file size by 60–80%
Step 6: Use a CDN for Global Audiences
A Content Delivery Network (CDN) stores copies of your static assets (images, CSS, JavaScript) on servers around the world. When a visitor in London visits your Dubai-hosted site, they get assets from a London CDN node rather than waiting for files to travel from Dubai. Latency drops dramatically.
For most small businesses: Cloudflare's free tier is sufficient and excellent. Enable it, turn on "Auto Minify" for HTML/CSS/JS, and enable "Rocket Loader" for JavaScript optimisation. This is a 20-minute setup that can improve scores by 10–20 points for international audiences.
Step 7: Audit and Remove Third-Party Scripts
This is the one step that almost every website skips and almost every website desperately needs. Third-party scripts — chat widgets, analytics tools, social media embeds, A/B testing tools, ad trackers — are the silent killers of PageSpeed scores.
Audit every third-party script on your site:
- Open Chrome DevTools, go to the Network tab, reload your page
- Sort by request size and count how many requests are from external domains
- For each third-party script, ask: is this generating measurable business value?
- Remove everything that doesn't have a clear ROI. Load the rest with
asyncordefer
We've seen websites go from 65 to 91 on PageSpeed by removing five unused analytics scripts and a social media widget that nobody interacted with. The page did everything the old page did. It was just 1.8 seconds faster.
Step 8: Optimise Your Largest Contentful Paint Element
LCP is usually the metric holding sites back from 95+. The LCP element is typically a hero image, a large heading, or a background image. To optimise it:
- Preload the LCP image — add
<link rel="preload" as="image" href="hero.webp">in your<head> - Never lazy-load the LCP element — if your hero image has
loading="lazy", remove it immediately - Inline critical hero images as CSS background if they're pure decoration
- Reduce LCP image file size aggressively — this image is the most important to get right. Get it under 100KB in WebP format
Testing and Monitoring Your Score
Run tests across all three of these tools — they measure slightly different things and together give you a complete picture:
- PageSpeed Insights (pagespeed.web.dev) — lab + field data, Google's official tool
- WebPageTest (webpagetest.org) — detailed waterfall analysis, filmstrip view
- GTmetrix (gtmetrix.com) — breakdown by recommendation, easy to action
Test on mobile specifically — Google's ranking signal uses mobile performance, and mobile scores are always worse than desktop. If you hit 95+ on mobile, you'll almost certainly be at 99–100 on desktop.
Set up monthly monitoring in Google Search Console under "Core Web Vitals" — this shows your real-world performance data aggregated from actual Chrome users, which is what Google uses for ranking.
What Score Should You Target?
Aiming for 100/100 is diminishing returns. At 95+, the performance improvements that remain are imperceptible to users. Focus your effort on getting from wherever you are to 90+, then from 90 to 95+. Everything above that is for bragging rights, not business results.
If your current score is below 60: start with hosting, images, and render-blocking resources in that order. You'll likely reach 85+ just from those three steps. The jump from 85 to 95+ requires the more nuanced work described above.
At AZi Solutions, every website we build scores 95+ on PageSpeed by default — it's baked into our process, not an afterthought. If your current website is slow and hurting your rankings and conversions, get in touch for a free performance audit and we'll show you exactly what needs to change and what the impact will be.
Every website we build scores 95+ on PageSpeed by default. If your site is slow and hurting your rankings and conversions, we'll fix it.