Why your website is slow, and the four fixes that usually work
Slow sites lose people before they read anything. They also rank worse. The good news is that most slowness traces to a short list of causes.
1. Images (the usual culprit)
Most slow sites are slow because of images. Not code, not hosting — images.
The common problems: - Uploading a 4000px photo from a phone and displaying it at 600px - Using PNG for photographs, which are far larger than JPEG or WebP equivalents - No compression at all - No lazy loading, so images below the fold load immediately
The fix:
- Resize before uploading, to roughly the display size (2x for retina)
- Use WebP where supported, JPEG otherwise
- Compress — 70–80% quality is visually indistinguishable at a fraction of the size
- Add loading="lazy" to images below the fold
- Set explicit width and height to prevent layout shift
This alone resolves most speed problems on most sites, and it doesn't require a developer.
2. Third-party scripts
Every chat widget, tracking pixel, popup tool, review widget, heatmap and A/B testing tool loads code from someone else's server.
Audit what's actually running. Open your browser's Network tab and look at what loads. Most sites carry scripts nobody remembers adding — an abandoned A/B test, a chat tool from two years ago, three analytics platforms when one would do.
Remove what isn't earning its place. Each one costs speed on every page load, forever.
Where you must keep them, load them after the page renders rather than blocking it.
3. Hosting
Cheap shared hosting is cheap because you're sharing resources with hundreds of sites. When they get busy, you get slow.
The signal: server response time (TTFB) consistently above 600ms even on a simple page. That's the server, not your code.
If you've fixed images and scripts and it's still slow, this is usually why. It's the fix that costs money rather than time.
4. Bloated themes and plugins
Particularly on WordPress. Multipurpose themes load code for a hundred features you don't use. Twenty plugins each add their own CSS and JavaScript to every page.
The fix: fewer, better-chosen plugins. A lighter theme. Ideally a theme built for performance rather than one that lists 400 demo layouts.
How to diagnose properly
PageSpeed Insights — start here. Use the field data (real users) rather than the lab score.
The Network tab in your browser — sort by size to find the heaviest resources, and by time to find the slowest.
WebPageTest if you want detail on where time actually goes.
Test on mobile. Test on 4G, not your office wifi. That's the experience most of your visitors are having.
Realistic targets
- Largest Contentful Paint under 2.5 seconds
- Server response under 600ms
- Total page weight under 2MB, ideally well under
- Fewer than 50 requests where practical
Order of operations
- Compress and resize images
- Remove unnecessary third-party scripts
- Add lazy loading and image dimensions
- Then consider hosting and theme
Do the first three before spending money. They resolve most cases, and they take an afternoon.
More detail on the metrics in Core Web Vitals in plain language.