"Our site is slow" is the complaint we hear most. Most advice online stops at "compress your images" — that's one step out of ten. Let me break down the real causes in the order we check them.
First: find out where you're actually slow
Before changing anything, measure. Use Google's PageSpeed Insights (free) on your homepage, a product page and the checkout page.
You'll get three numbers that matter: - LCP — when the largest element appears. Should be under 2.5 seconds. - INP — how fast the site responds to a tap. Should be under 200 ms. - CLS — do elements jump while the user reads? Should be under 0.1.
Google uses these in search ranking, so they aren't cosmetic.
Causes, most common first
1. Unoptimized images. A 4MB camera photo used as-is. Fix: convert to WebP, set display dimensions, and lazy-load anything below the fold.
2. Excess database queries (the N+1 problem). The biggest cause on dynamic sites, and invisible to most people. A page shows 50 products and instead of one query it runs 51 — one for products and one per product to fetch its category.
The site feels fast while you test with 10 products and collapses at 5,000. Fix: eager-load relationships and index the columns you filter on.
3. Too much JavaScript. A whole library loaded for one small effect. A 300KB slider to show three images. Every kilobyte of JavaScript costs more than a kilobyte of image, because the browser must parse and execute it.
4. No caching. Every visit recomputes the same thing. A page whose content changes monthly has no reason to be rebuilt from the database on every request.
5. Hosting. A shared server with 200 sites on it, or a server on another continent from your audience. If your audience is Egyptian and the server is in the US, there's physical latency no code optimization removes.
6. Fonts and third-party tools. Every third-party script (tracking, chat, ads, fonts) adds a network request. A site with eight tracking tools is necessarily slow.
7. No compression. Enabling Gzip or Brotli shrinks text files by roughly 70% — a one-time setting with a large effect.
Practical order of work
With limited time, start here: 1. Images (fastest win). 2. Caching. 3. Database queries. 4. Reducing JavaScript. 5. Hosting, if that's the bottleneck.
Important: measure on mobile and a slow network
The site is always fast on the designer's laptop with excellent wifi. Try it on a mid-range phone over 3G — that's the real experience of a large share of your audience.
Bottom line
Speed isn't a cosmetic improvement; it directly affects your Google ranking and your sales. Measure first, fix in order, measure again. And if you want a full performance audit with causes and fixes ranked by impact, that's work we do regularly.
