My Website is Slow: A Developer's Diagnostic Guide

If my website is slow is something you've been typing into Google, you're already losing customers. This guide walks you through the real causes and what to fix first.

By Taro Schenker•14 min read•

If your website is slow, you're losing more than patience — you're losing customers. Google data shows 53% of mobile users leave a site that takes more than 3 seconds to load. Every additional second of load time costs roughly 7% in conversions. This isn't theoretical — it's money walking out the door.

The frustrating part is that most website owners don't know why their site is slow. They see the symptoms (high bounce rate, low engagement, customers complaining) but can't pinpoint the cause. “Make it faster” isn't a strategy. You need to diagnose the specific problem before you can fix it.

This guide is a diagnostic walkthrough. I'll show you how to measure your speed, identify the most common causes, and prioritise fixes in order of impact. Some of these you can do yourself in an afternoon. Others need a developer. Either way, you'll know exactly what's wrong and what to do about it.

How Slow is Too Slow?

Before you start fixing things, you need to know where you stand. “It feels slow” isn't a metric. Google uses three Core Web Vitals to measure real user experience, and these directly affect your search rankings.

Largest Contentful Paint (LCP)

LCP measures how long it takes for the biggest visible element on the page (usually a hero image or heading) to load. This is the metric most people mean when they say “my site is slow.”

  • •Good: Under 2.5 seconds
  • •Needs improvement: 2.5 to 4 seconds
  • •Poor: Over 4 seconds

First Contentful Paint (FCP)

FCP measures when the first piece of content appears on screen — any text, image, or element. It's the moment the user stops staring at a blank white page.

  • •Good: Under 1.8 seconds
  • •Needs improvement: 1.8 to 3 seconds
  • •Poor: Over 3 seconds

Time to Interactive (TTI)

TTI measures when the page becomes fully interactive — when a user can click buttons, fill out forms, and navigate without lag. A page can look loaded but still be unresponsive if JavaScript is still executing in the background.

  • •Good: Under 3.8 seconds
  • •Poor: Over 7.3 seconds

How to Check Your Speed

Three free tools will tell you everything you need to know:

  • 1.Google PageSpeed Insights (pagespeed.web.dev) — the gold standard. Tests your site against real Chrome user data and gives you a score out of 100. Also shows specific issues to fix.
  • 2.Lighthouse in Chrome DevTools — open Chrome, press F12, click the Lighthouse tab. Runs a full audit right in your browser. Good for testing before/after changes.
  • 3.GTmetrix (gtmetrix.com) — provides a waterfall chart showing exactly which files take the longest to load. This is where you identify the specific bottlenecks.

The benchmark that matters:

If you score below 50 on Google PageSpeed Insights, you have a performance problem that's actively affecting your business. Below 30 and you're likely losing 20-40% of visitors before they see your content.

The 6 Most Common Causes of a Slow Website

In my experience auditing websites, these six issues account for roughly 90% of performance problems. Most slow sites have at least two or three of them happening simultaneously.

Cause 1: Cheap Shared Hosting

Shared hosting means your website shares a server with dozens or hundreds of other websites. If any of those sites gets a traffic spike, your site slows down. If the server is overloaded at 2pm on a Tuesday, your site is sluggish at 2pm on a Tuesday.

The fundamental problem: shared hosting response times typically range from 800ms to 2 seconds. That's the time before your page even starts rendering. If the server takes 1.5 seconds just to respond, you're already using more than half your LCP budget on the connection alone.

Signs your hosting is the problem:

  • •Time to First Byte (TTFB) is over 600ms in Lighthouse
  • •Your site is faster at 3am than at 3pm (other sites on the server are quiet at night)
  • •Performance is inconsistent — some loads are fine, others are painfully slow
  • •You're on a plan that costs under $10/month

The fix: Move to VPS hosting, managed hosting (Vercel, Netlify, Cloudflare Pages), or a quality managed WordPress host. The cost difference is usually $10-30/month more, but your response times drop from 800ms-2s down to 50-200ms.

DIY or hire someone? If you're on WordPress, hosting migration is fairly straightforward with a plugin like All-in-One WP Migration. If you're on a custom stack, you'll likely need someone who understands server configuration.

Cause 2: Unoptimised Images

This is the single most common cause of slow websites. A single unoptimised hero image can be 5MB or more. For context, an entire well-built web page should be under 2MB total. One image shouldn't weigh more than the rest of your site combined.

The problem compounds on pages with multiple images. A portfolio page with 12 unoptimised photos might total 30-50MB. On a mobile connection, that's a 15-30 second load time. Nobody waits that long.

The image optimisation checklist:

  • •Use modern formats: WebP is 25-35% smaller than JPEG at the same quality. AVIF is even smaller but has slightly less browser support. Both are production-ready in 2026.
  • •Lazy load below-the-fold images: Images the user can't see shouldn't load until they scroll. This alone can cut initial page weight by 50-80%.
  • •Serve responsive sizes: Don't send a 2000px desktop image to a 400px mobile screen. Use srcset to serve the right size for each device.
  • •Compress aggressively: Most images look identical at 80% quality. Dropping from 100% to 80% can halve the file size with no visible difference.
  • •Set dimensions: Always include width and height attributes to prevent layout shift (CLS).

Tools: Squoosh (free, browser-based), TinyPNG (batch compression), or build it into your framework. Next.js has a built-in Image component that handles format conversion, lazy loading, and responsive sizing automatically.

DIY or hire someone? Image optimisation is very DIY-friendly. Run your images through Squoosh, install a lazy loading plugin if you're on WordPress, and you'll see immediate results.

Cause 3: Too Much JavaScript

JavaScript is the most expensive type of file your browser processes. Unlike an image, which just needs to be downloaded and displayed, JavaScript needs to be downloaded, parsed, compiled, and executed. A 1MB JavaScript file has a much bigger performance impact than a 1MB image.

WordPress sites are notorious for this. A typical WordPress site with 15-30 plugins loads JavaScript from every single one on every single page. Chat widgets, analytics scripts, social media embeds, slider libraries, form plugins — each one adds 50-300KB of JavaScript that runs whether the user needs it or not.

Common JavaScript offenders:

  • •Render-blocking scripts: JS files in the <head> that stop the page from displaying until they're fully loaded. The browser literally waits for each one.
  • •Third-party scripts: Chat widgets (200-500KB), Google Tag Manager with 10+ tags, social media share buttons, advertising trackers. Each makes separate network requests.
  • •Unused plugin code: That slider plugin you installed for one page? It loads on every page. That contact form library? Loads everywhere, not just the contact page.
  • •jQuery and friends: Many WordPress themes still load jQuery (90KB) plus jQuery Migrate (30KB) even when no plugin needs them.

How to diagnose: Open Chrome DevTools (F12), click the Coverage tab, reload your page. It shows you exactly how much of each JavaScript file is actually used. Most sites use less than 40% of the JavaScript they load.

The fix: Audit your plugins and remove anything unused. Add defer or async attributes to non-critical scripts. If you're shipping more than 300KB of JavaScript on a simple business website, something is wrong.

Cause 4: No Caching Strategy

Caching tells the browser (and servers between you and the user) to reuse files it's already downloaded instead of fetching them again. Without caching, every single visit is a cold start — the browser downloads everything from scratch every time.

There are three layers of caching, and most slow websites are missing all three:

  • •Browser caching: Sets headers that tell the browser “keep this CSS file for 30 days, you don't need to download it again.” Returning visitors load much faster because most assets are already on their device.
  • •CDN caching: A Content Delivery Network caches your site on servers worldwide. Instead of every request going to your origin server, it's served from the nearest edge location. More on this in Cause 6.
  • •Server-side caching: Stores pre-generated HTML so the server doesn't rebuild the page from scratch for every visitor. On WordPress, this means not running 50+ database queries for every page load.

The fix: For WordPress, install a caching plugin (WP Super Cache, W3 Total Cache, or WP Rocket). For custom sites, set proper Cache-Control headers. For static sites, most modern hosting platforms (Vercel, Netlify, Cloudflare Pages) handle this automatically.

Cause 5: Database Queries Are Slow

This one is invisible to most website owners but extremely common. Every time someone visits a WordPress page, the server runs database queries to fetch the content, sidebar widgets, menus, plugin settings, and more. A typical WordPress page load involves 50-100 separate database queries.

Over time, WordPress databases accumulate bloat: post revisions, transient options, orphaned metadata, spam comments, and a wp_options table that grows to thousands of autoloaded rows. Each autoloaded option is fetched on every single page load whether it's needed or not.

Signs of database problems:

  • •The site was fast when you launched it but has gotten slower over months or years
  • •Pages with lots of dynamic content (WooCommerce product listings, large blogs) are much slower than simple static pages
  • •Your hosting dashboard shows high CPU or memory usage
  • •Your site slows down when you have more concurrent visitors

The fix: Clean up the database (remove revisions, spam, transients), add proper indexing to slow queries, implement object caching (Redis or Memcached), and consider whether dynamic pages really need to be dynamic. Your homepage probably doesn't change every second — serve it as a cached static page.

DIY or hire someone? Basic database cleanup is DIY with a plugin like WP-Optimize. Query optimisation, adding caching layers, and fixing N+1 query problems require a developer who understands database performance.

Cause 6: No CDN

Without a CDN (Content Delivery Network), every request travels to wherever your server is physically located. If your server is in Virginia and your user is in London, that's a 7,000km round trip for every file. Each round trip adds 100-300ms of latency.

A page that loads 40 resources (HTML, CSS, JS, images, fonts) means 40 round trips. Even with HTTP/2 multiplexing, the physical distance matters. A CDN caches your files on edge servers around the world, so the London user downloads from London, the Sydney user downloads from Sydney.

The numbers:

  • •Without CDN: 150-400ms latency per request (depending on distance)
  • •With CDN: 10-50ms latency per request (nearest edge server)
  • •Cost: Cloudflare free tier covers most small-to-medium sites. Paid plans start at $20/month.

If your site isn't on a CDN in 2026, that's the single easiest performance win you can make. It's free (Cloudflare free tier), takes 15-30 minutes to set up, and typically improves load times by 40-60% for users who aren't geographically close to your server.

What to Fix First (Priority Order)

Don't try to fix everything at once. Work through this list in order — each item is ranked by the ratio of impact to effort. Start at the top, test your speed after each change, and stop when you hit your target score.

  1. 1.
    Add a CDN

    Free (Cloudflare). Biggest improvement for the least effort. 15-30 minute setup. Impact: 40-60% faster for remote users.

  2. 2.
    Optimise images

    Free (Squoosh, TinyPNG). Convert to WebP, enable lazy loading, add responsive sizes. Impact: can halve page weight overnight.

  3. 3.
    Enable browser caching

    Free. Set proper cache headers or install a caching plugin (WordPress). Impact: returning visitors load 50-80% faster.

  4. 4.
    Audit and remove unnecessary plugins/scripts

    Free. Deactivate unused plugins, defer non-critical JS, remove tracking scripts you don't look at. Impact: reduces JavaScript execution time by 30-60%.

  5. 5.
    Upgrade hosting

    $10-50/month more. Move from shared hosting to VPS or managed hosting. Impact: cuts server response time from 800ms-2s down to 50-200ms.

  6. 6.
    Database and query optimisation

    Needs a developer ($500-1,500). Clean up bloat, add indexing, implement object caching. Impact: fixes the slow degradation that happens over months/years.

Items 1-4 you can likely do yourself or with a basic tutorial. They're free and can be done in an afternoon. Items 5-6 usually need someone who understands server infrastructure and database architecture.

When to Fix It Yourself vs Hire Someone

Not every performance issue needs a developer. Here's a realistic breakdown of what you can handle and when it's time to call for help.

DIY-Friendly Fixes

  • •Image optimisation (Squoosh, TinyPNG)
  • •Adding a CDN (Cloudflare setup wizard)
  • •Installing a caching plugin
  • •Removing unused plugins
  • •Basic database cleanup with a plugin

Hire a Developer

  • •Hosting migration (especially custom stacks)
  • •JavaScript refactoring and code splitting
  • •Database query optimisation
  • •Server configuration and tuning
  • •Full performance audit with Core Web Vitals remediation

The dividing line:

If you've tried the DIY fixes and you're still scoring below 50 on PageSpeed Insights, the problem is deeper. It's usually architectural — the site was built in a way that's fundamentally slow, and no plugin can fix that. That's when you need someone who can look under the hood.

Frequently Asked Questions

Why is my website so slow all of a sudden?

Sudden slowdowns are usually caused by one of four things: a hosting issue (server overload or outage), a recent plugin or theme update that introduced heavy code, a traffic spike that overwhelmed your server, or new content that wasn't optimised (a single uncompressed image upload can tank your speed). Check your hosting provider's status page first, then review any recent changes you've made.

Does website speed affect SEO?

Yes, directly. Core Web Vitals are a confirmed Google ranking factor. Slow sites rank lower in search results and get fewer clicks. Beyond rankings, 53% of mobile users abandon sites that take more than 3 seconds to load, which increases your bounce rate and further signals to Google that your content isn't providing a good experience.

How fast should my website load?

The full page should load in under 3 seconds. For Largest Contentful Paint (LCP), Google considers under 2.5 seconds “good” and over 4 seconds “poor.” Under 1.5 seconds is excellent and puts you ahead of most competitors. If your LCP is over 4 seconds, you're in the bottom tier and it's actively hurting your business.

How much does it cost to fix a slow website?

DIY fixes (CDN, image optimisation, caching plugin) are free and can be done in an afternoon. Professional speed optimisation typically costs $500-$2,000 depending on the complexity. A basic audit with quick fixes might be $500-800. A full performance overhaul including hosting migration, JavaScript refactoring, and database optimisation can cost $1,500-3,000+.

Related Resources

Still Slow After the Basics?

I run full performance audits and fix the technical issues that DIY can't reach — server configuration, JavaScript architecture, database optimisation, and Core Web Vitals. Book a free speed audit and I'll tell you exactly what's wrong.