Skip to content
Marginalia
Web Development

Why Your Website Is Slow (And How to Fix It)

Your website is slow because of images, JavaScript, and poor hosting. Here's how to diagnose and fix a slow website without rebuilding from scratch.


Page speed is the silent killer of small business websites. Nobody tells you your site is slow. They just leave.

Google estimates that 53% of mobile visitors abandon a page that takes more than 3 seconds to load. For context, the average web page in 2026 takes 4.5 seconds to load on mobile. Most websites are losing more than half their visitors before showing them a single word.

If your site feels slow — or if you've never checked — here's what's probably wrong and how to fix it.


How to Check Your Speed

Before fixing anything, measure it. Two free tools:

  1. Google PageSpeed Insights — Enter your URL and get a performance score out of 100, plus specific recommendations.
  2. Chrome DevTools Network tab — Open your site, right-click, Inspect, Network tab, reload. Watch what loads and how long it takes.

If your PageSpeed score is below 70 on mobile, you have problems. Below 50 and it's actively hurting your business.


The Usual Suspects

1. Images (The #1 Culprit)

Unoptimised images cause more slow websites than everything else combined. I've audited sites where a single hero image was 8MB — a photograph uploaded directly from a DSLR camera with no compression.

The fix:

  • Use WebP format instead of JPEG or PNG. WebP is 25-35% smaller at the same quality.
  • Resize to actual display size. If the image displays at 800px wide, don't upload it at 4000px. The browser downloads the full resolution either way.
  • Lazy load below-the-fold images. Images that aren't visible on initial load shouldn't load until the user scrolls to them. The loading="lazy" HTML attribute handles this for free.
  • Use responsive images. The srcset attribute lets you serve different image sizes to different devices. A phone screen doesn't need the same resolution as a 27-inch monitor.

A site with ten properly optimised images might total 500KB. The same site with unoptimised images might hit 20MB. That's a 40x difference.

2. JavaScript (The #2 Culprit)

Modern websites ship an absurd amount of JavaScript. Analytics trackers, chat widgets, cookie consent banners, animation libraries, social media embeds, A/B testing scripts — each one adds weight and execution time.

A typical Squarespace or Wix site loads 1-3MB of JavaScript. A WordPress site with a handful of plugins loads 500KB-2MB. A custom-built site doing the same job loads 50-200KB.

The fix:

  • Audit your scripts. Open DevTools, check the Network tab filtered to JS. You'll probably find scripts you didn't know were loading.
  • Remove what you don't use. That analytics platform you installed six months ago and never checked? Delete it.
  • Defer non-essential scripts. Analytics, chat widgets, and social embeds don't need to load before the main content. Use defer or async attributes, or load them after the page is interactive.
  • Avoid render-blocking JavaScript. If a script must load before the page appears, it's blocking the render. Move it or defer it.

3. Fonts

Custom fonts are loaded from external servers (usually Google Fonts) and can delay text rendering. The browser downloads the font file before displaying any text, creating a flash of invisible text (FOIT) or a flash of unstyled text (FOUT).

The fix:

  • Self-host your fonts instead of loading from Google Fonts. This eliminates the DNS lookup and connection to an external server.
  • Use font-display: swap so text appears immediately in a fallback font, then swaps to the custom font when it loads.
  • Limit font weights. Each weight (regular, bold, italic) is a separate file. If you only use two weights, only load two.
  • Subset your fonts. If you only need Latin characters, don't load the full Unicode range.

4. Hosting

Cheap shared hosting means your site shares server resources with hundreds of other sites. During peak hours, your site competes for CPU and memory. Response times spike. Pages load slowly.

The fix:

  • For static sites (most small business websites), use a CDN host like Vercel, Netlify, or Cloudflare Pages. These serve your site from edge servers worldwide. Response times drop from 500ms to 50ms. Most have generous free tiers.
  • For WordPress, consider managed WordPress hosting (Kinsta, WP Engine) over generic shared hosting. The price difference is £10-20/month. The performance difference is dramatic.

5. Too Many HTTP Requests

Every file your page loads — HTML, CSS, JavaScript, images, fonts — is a separate HTTP request. Each request has overhead: DNS lookup, connection, SSL handshake. On mobile, this adds up fast.

The fix:

  • Combine CSS files into one bundle.
  • Inline critical CSS so the above-the-fold content doesn't wait for an external stylesheet.
  • Use SVG sprites instead of individual icon files.
  • Eliminate unnecessary requests. Every tracker, widget, and embed is a request. Ask: is this earning its place?

What I Build vs. What's Common

For context, here's what a typical site I build looks like in performance terms versus a typical WordPress or template site:

Metric My builds Typical WordPress Typical Squarespace
Total page weight 150-400KB 2-5MB 3-6MB
HTTP requests 5-15 30-60 40-80
Time to first byte <100ms 300-800ms 200-400ms
Largest Contentful Paint <1.5s 3-6s 2-5s
Lighthouse score 95-100 40-70 50-75

These aren't cherry-picked numbers. This is the natural result of building with performance as a priority rather than an afterthought.

Every site in my portfolio scores 90+ on Lighthouse. Altoria Construction is a single HTML file with zero dependencies. Messy Date is a focused landing page that loads faster than most people can blink.

Messy Date fast-loading redesigned landing page


Quick Wins You Can Do Today

If you don't want to rebuild your entire site, these quick fixes will make a noticeable difference:

  1. Compress your images. Use Squoosh (free, by Google) to convert images to WebP and reduce file sizes by 60-80%.
  2. Remove unused plugins. Every WordPress plugin adds weight. Deactivate and delete anything you're not actively using.
  3. Check your Google PageSpeed score and fix whatever it flags as "Opportunities."
  4. Enable caching. Set proper cache headers so returning visitors load assets from their browser instead of re-downloading.
  5. Switch to a better host. If you're on shared hosting, move to a CDN-based host. This alone can halve your load times.

If these quick fixes aren't enough — or if your site is fundamentally slow because of its architecture — book a call and let's talk about building something fast from the ground up.


Speed isn't a feature. It's the foundation everything else depends on.

Need a website?

It comes to me, not to a team. I read every message and reply within a working day.