How to Fix a Slow Website: The Complete Speed Optimisation Guide
A slow website doesn't just annoy visitors — it actively costs you money. Google uses page speed as a ranking factor, and studies consistently show that every extra second of load time increases bounce rates by roughly 20%. If your site takes more than 3 seconds to load on mobile, you're losing people before they even see your content.
Here's how to fix it, in priority order from quickest wins to more involved optimisations.
1. Compress and convert your images
This is the single biggest win for most slow websites. Unoptimised images account for the majority of page weight on a typical site. A hero image saved as a 3MB PNG can be compressed to a 150KB WebP file with no visible quality loss.
Use WebP format for all images. Run existing images through a tool like TinyPNG or Squoosh. Always set explicit width and height attributes on image tags to prevent layout shift. If you're on WordPress, install a plugin like ShortPixel or Imagify — they'll auto-compress uploads.
2. Remove render-blocking resources
Render-blocking CSS and JavaScript files prevent the browser from painting anything until they've fully downloaded and parsed. Check your site's source for stylesheet and script tags in the head that don't have async or defer attributes.
Add defer to non-critical scripts. Inline your critical CSS (the styles needed for above-the-fold content) directly in the HTML head. Move everything else to load asynchronously. On WordPress, plugins like Autoptimize handle this automatically.
3. Enable text compression
Your server should be compressing HTML, CSS, and JavaScript with gzip or Brotli before sending them to the browser. This typically reduces file sizes by 60-80%. Most modern hosting providers enable this by default, but check your response headers for content-encoding: gzip or content-encoding: br.
If you're missing compression, add it in your server config. For Nginx: gzip on; in your config file. For Apache: enable mod_deflate. For Cloudflare users, it's enabled automatically.
4. Leverage browser caching
Set proper cache headers so returning visitors don't re-download your CSS, JavaScript, and images every time. Static assets should have a cache lifetime of at least 30 days. Add Cache-Control: public, max-age=2592000 to your server config for static file types.
5. Reduce unused JavaScript
Most websites load far more JavaScript than they actually use. Analytics scripts, chat widgets, social media embeds, and bloated plugins all add up. Use Chrome DevTools' Coverage tab to see how much of your loaded JS is actually executed.
Remove anything you're not actively using. Defer anything that isn't needed for the initial page load. Consider lazy-loading heavy third-party scripts — they don't all need to load on every page.
6. Use a CDN
A content delivery network serves your static files from servers geographically close to your visitors. If your server is in Germany and your visitor is in Australia, a CDN can cut load times dramatically. Cloudflare offers a generous free tier. Most CMS hosting plans (Shopify, Squarespace, Webflow) include a CDN by default.
Find out exactly what's slowing your site down
SiteBeat measures your Core Web Vitals, identifies render-blocking resources, and tells you exactly what to fix — with instructions specific to your CMS.
Scan my website — freeHow to measure your improvement
After making changes, run your site through a speed scanner again and compare your before/after scores. Focus on three key metrics: Largest Contentful Paint (should be under 2.5 seconds), First Contentful Paint (under 1.8 seconds), and Cumulative Layout Shift (under 0.1). These are the Core Web Vitals that Google uses for ranking.
Don't get obsessed with a perfect 100 score. Anything above 80 for mobile performance is good. The goal is to be fast enough that speed isn't costing you visitors or rankings — not to win a benchmark competition.
Check your website now
Enter your URL and get your health score, SEO grade, and fix instructions in 2 minutes.
Scan my website — free