Why Is My Website Slow?
Nine out of ten slow websites are slow for the same handful of reasons. Here's how to figure out which one is killing yours — and what to do about it.
Diagnose first, fix second
Most "my website is slow" complaints come down to one of seven causes. Run a free Lighthouse audit on your URL — the Top Performance Issues section will tell you which of these apply. Then come back here for the fix.
Cause #1: Huge or unoptimized images
Symptoms: High LCP, large transfer size, your hero image is over 500KB
Why it happens: You uploaded a 4000 × 3000 JPG straight from your phone or Figma export.
Fix:
- Convert to WebP or AVIF
- Resize to the actual display size
- Use
srcsetto serve different sizes for different screens - Lazy-load anything below the fold
Cause #2: Render-blocking scripts and stylesheets
Symptoms: High FCP, "Eliminate render-blocking resources" in your report
Why it happens: Your CSS file or JavaScript tag is in <head> without defer or async, so the browser has to wait for it before painting anything.
Fix:
- Inline critical CSS for the first viewport
- Add
deferorasyncto non-critical scripts - Load fonts asynchronously with
<link rel="preload">
Cause #3: Slow server response time (TTFB)
Symptoms: Everything is slow, even on repeat visits
Why it happens: Your hosting can't return HTML quickly. Common on shared hosting, WordPress without caching, or apps with slow database queries.
Fix:
- Add a CDN (Cloudflare in front of your origin = free win)
- Enable full-page caching
- Upgrade to a modern host (Vercel, Netlify, Bunny)
- Profile and optimize slow database queries
Cause #4: Too much JavaScript
Symptoms: High TBT, high INP, mobile much worse than desktop
Why it happens: Bloated frameworks, unused dependencies, heavy client-side hydration on a content site.
Fix:
- Code-split (dynamic imports for routes and heavy components)
- Tree-shake unused exports
- Replace heavy libraries (Moment → date-fns, Lodash → native)
- Consider whether you need a client framework at all for content pages
Cause #5: Third-party tags
Symptoms: Score drops every quarter as marketing adds tools
Why it happens: Every analytics, chat, A/B test, and ad pixel runs JavaScript on your page.
Fix:
- Audit every script tag — challenge each one
- Defer non-critical tags
- Use server-side analytics (Plausible, Fathom, Cloudflare Web Analytics)
- Self-host or proxy heavy third parties
Cause #6: Custom fonts
Symptoms: CLS issues, "Flash of Invisible Text"
Why it happens: Browser waits for your custom font before rendering text, or text reflows when the font swaps in.
Fix:
- Use
font-display: swap(text shows in fallback, then swaps) - Preload the most important font weight
- Self-host instead of pulling from Google Fonts
- Use variable fonts to ship one file instead of four
Cause #7: No caching
Symptoms: Every page navigation re-downloads the same assets
Why it happens: Missing or wrong Cache-Control headers on static assets.
Fix:
- Add
Cache-Control: public, max-age=31536000, immutableto all hashed assets - Use hashed filenames so you can cache forever and bust by renaming
- Most modern hosts and CDNs configure this automatically
What to do right now
- Run a free Lighthouse audit on your URL using the form below
- Look at the Top Performance Issues section — that's your prioritized list
- Fix the top one
- Re-audit and watch your score climb
Most of these fixes take less than an hour and move the needle by 20-40 points.
Frequently Asked Questions
Why is my website fast for me but slow for visitors?+
Two reasons. First, your browser cache makes repeat visits feel fast. Second, you probably test on fast Wi-Fi and a powerful laptop — your real users are on phones over 4G. Always test in an incognito window on mobile.
Why did my website get slower over time?+
Almost always third-party scripts and image bloat. Each marketing tool, analytics tag, and chat widget added over time taxes the page. Audit your third parties and re-run a Lighthouse report — you'll usually find one or two new culprits.
Can my hosting make my site slow?+
Yes. If your Time to First Byte (TTFB) is over 800ms, your host is the bottleneck. Cheap shared hosting often delivers 1500ms+ TTFB. A CDN or a modern serverless host typically gets you under 200ms.
See how your site really performs
Run a full website health check on mobile and desktop in 30 seconds — no signup needed.
Continue reading
Website Speed Test
Run a free website speed test on any URL. Get mobile and desktop Lighthouse scores, Core Web Vitals, and a plain-English breakdown in 30 seconds.
Read moreCore Web Vitals Checker
Check your Core Web Vitals (LCP, CLS, INP) on any URL for free. Get instant Google Lighthouse results with traffic-light thresholds and clear fix recommendations.
Read moreHow to Improve Website Speed
Step-by-step guide to making your website faster. Twelve high-impact fixes ranked by effort vs reward, with real numbers and code examples — no fluff.
Read more