Why Is My Website So Slow?
If your site is slow, it's almost always one of seven specific culprits. Here's how to diagnose which one is yours.
Table of contents
"Why is my website so slow?" usually has a real, specific answer — but finding it requires looking at the right data instead of guessing.
Here are the seven actual causes of slow websites, in order of how common they are, plus how to know which one is yours.
1. Unoptimized images
Symptoms: Page weight over 2MB, slow Largest Contentful Paint, lots of "Properly size images" and "Serve images in next-gen formats" warnings in Lighthouse.
Why it happens: People drop full-resolution photos straight from their camera into a CMS. A 4MB JPEG hero image will tank your score on mobile.
Fix: Convert images to WebP or AVIF. Resize them to the dimensions they actually display at. Add loading="lazy" to anything below the fold. See how images affect website speed.
2. Too much JavaScript
Symptoms: High Total Blocking Time (TBT), slow Interaction to Next Paint (INP), "Reduce unused JavaScript" or "Minimize main-thread work" warnings.
Why it happens: Modern sites pile on analytics, A/B testing, chat widgets, marketing pixels, polyfills, and oversized libraries. Each one adds parse time, even if the user never uses it.
Fix: Audit your third-party scripts. Remove anything you're not actively using. Defer or async-load what's left. Code-split your own bundles. See how JavaScript slows down websites.
3. Slow server response (TTFB)
Symptoms: Time to First Byte > 800ms. The page just sits blank for over a second before anything happens.
Why it happens: Cheap shared hosting, an unoptimized database, a CMS doing too much work per request, or a server in the wrong region for your visitors.
Fix: Add a CDN (Cloudflare's free plan helps immediately). Cache database queries. Move to a faster host. For static sites, switch to Vercel/Netlify. See how hosting affects website performance.
4. Render-blocking CSS and JavaScript
Symptoms: "Eliminate render-blocking resources" warning. The browser shows a blank screen for a long time, then everything appears at once.
Why it happens: CSS in the <head> blocks rendering until it's downloaded and parsed. Synchronous scripts do the same.
Fix:
- Inline critical CSS (above-the-fold styles).
- Defer non-critical CSS using
<link rel="preload" as="style">. - Add
asyncordeferto script tags.
5. Custom fonts
Symptoms: Text flashes invisible (FOIT) or unstyled (FOUT) when loading. Lighthouse warns about "Ensure text remains visible during webfont load".
Why it happens: Browsers wait for custom fonts before rendering text. Multiple weights and styles compound the problem.
Fix:
- Self-host fonts instead of using Google Fonts CDN.
- Use
font-display: swaporoptional. - Preload critical fonts:
<link rel="preload" as="font" type="font/woff2" crossorigin>. - Subset fonts to only the characters you actually use.
6. Layout shifts
Symptoms: Content jumps around as the page loads. High Cumulative Layout Shift score.
Why it happens: Images without dimensions, ads injected after page load, late-loading fonts swapping in, cookie banners pushing content down.
Fix: Always set width and height on images and videos. Reserve space for ads with CSS aspect-ratio. Avoid inserting content above existing content. See CLS: What It Means and How to Fix It.
7. Too many third-party requests
Symptoms: Long lists of requests to domains you don't control. High Speed Index. The Lighthouse "Third-party usage" diagnostic is in the red.
Why it happens: A typical site loads scripts from 10–30 different domains. Each one requires DNS, TLS, and TCP setup. They can also block your main thread for hundreds of milliseconds.
Fix: Cull what you don't need. Self-host what you can. For what's left, use <link rel="preconnect"> to warm up connections.
How to diagnose your specific issue
Run a Lighthouse audit (free, anywhere — here on RateMySite or via PageSpeed Insights). Then:
- Scroll to the "Opportunities" section. It ranks issues by how much time they're costing.
- Look at the top three. Those are your biggest wins.
- Check the "Diagnostics" section for more context.
- Look at the Performance metrics — which Core Web Vital is failing? That tells you which category of fix matters most.
If LCP is slow → image or hosting problem. If TBT or INP is high → JavaScript problem. If CLS is high → layout/dimensions problem.
When "slow" is actually fine
Not every slow-feeling site needs optimization. A complex web app (think Figma or Notion) is going to have a worse PageSpeed score than a static landing page — and that's fine. What matters is:
- Real users completing what they came to do
- Core Web Vitals passing for your most important pages
- The site feeling responsive, not the lab score
If those three are fine, leave it alone.
Next steps
Once you know which of the seven causes is hurting you, jump to the specific guide:
- How to Improve Your PageSpeed Insights Score
- LCP: What It Means and How to Improve It
- How to Make Your Website Load Faster
Or run a free audit and we'll show you exactly what's slow.
Frequently Asked Questions
How do I find out exactly why my site is slow?+
Run a free Lighthouse audit on RateMySite.io or PageSpeed Insights. The 'Opportunities' section ranks the biggest issues by how much time they're costing you, in milliseconds.
Is my host making my site slow?+
Possibly. If your Time to First Byte (TTFB) is over 800ms, your server is the bottleneck — not your code. Move to a faster host or add a CDN.
Why does my site feel fast on my computer but slow for visitors?+
Because you're on fast Wi-Fi, a recent device, with everything cached. Real visitors are often on 4G, mid-range Androids, with no cache. Always test on a throttled connection.
See how your site really performs
Run a full website health check on mobile and desktop in 30 seconds — no signup needed.