Your homepage is 6 seconds of waiting, and the usual suspect list — old theme, cheap hosting, too many plugins — misses the real one more often than not. On most small business sites the largest single share of page weight is images, and it is not close: the HTTP Archive's page-weight tracking has shown for years that images account for around half of a typical page's bytes.
That is good news disguised as a problem. Images are the one bottleneck you can fix without touching code, changing hosts, or rebuilding anything — and this guide gives you the budget, the export settings, and the weekly habit to keep it fixed. If your site is slow for other reasons too, our triage guide for slow websites puts image work in the right order; images usually win the first slot.
Where the 200 KB number comes from
The rule is not magic, it is arithmetic. A photograph displayed at 800 pixels wide, exported as a 1600-pixel WebP or JPEG at quality ~80 for retina screens, lands at roughly 80-180 KB. Anything dramatically over 200 KB at that display size means the file was either exported too large, compressed too little, or saved in the wrong format — all fixable in one export dialog.
The failure mode this rule catches is the phone-or-camera upload: a 4000x3000-pixel JPEG straight out of a phone weighs 2-5 MB and displays in a 700-pixel slot. The browser dutifully downloads all of it, then throws away 90% of the pixels. Twenty times over on a gallery page, and you have a 40 MB page that no amount of clever code can rescue.
Set the budget per image and per page. A reasonable allocation as of 2026:
| Slot | Budget | Notes |
|---|---|---|
| Hero / LCP image | <= 250 KB | The largest image on the page; still capped because it gates LCP |
| Content photos | <= 200 KB | The default ceiling this guide is named for |
| Thumbnails, cards, team shots | <= 80 KB | Small display size should mean small files |
| Logos, icons | <= 20 KB, as SVG where possible | A 400 KB PNG logo is pure waste |
This site's own build rejects article images over 250 KB — the budget is worth enforcing mechanically, not remembering.
Format decides more than quality settings
Half of "compression" is choosing the right container. The short version as of 2026:
| Format | Best for | Watch out for |
|---|---|---|
| AVIF | Photos; smallest files at a given quality | Slower to encode; older image editors may not open it |
| WebP | Photos and graphics; universal support | Slightly larger than AVIF; the pragmatic default |
| JPEG | Compatibility floor; every tool opens it | Largest of the three for the same photo |
| PNG | Screenshots, flat graphics with text, transparency | Never for photographs — often 5-10x the JPEG weight |
| SVG | Logos, icons, diagrams | Vector only; the wrong tool for photos |
The honest caveat: AVIF and WebP are both Baseline features in current browsers as of 2026, so format anxiety is outdated — but your CMS may lag. Older WordPress and Joomla installs, and some email/marketing tools, still handle JPEG/PNG more predictably. If your workflow fights AVIF, WebP at quality 75-80 gets you 90% of the win with zero friction.
Size it for the slot before you compress it
Compression cannot fix wrong dimensions. Work out the display size first — the largest box the image will ever fill — then export at double that width for high-density screens. An image shown at 700 pixels wide gets exported at 1400, not the camera's 5000.
For anyone comfortable editing templates, two HTML details matter as much as the file:
srcset/sizesserve a small file to phones and a larger one to desktops instead of one size for everyone. Most modern CMSs generate these automatically once the theme supports them.loading="lazy"on below-the-fold images (the<img>attribute) defers them until the visitor scrolls — free seconds on long pages.
The flip side, equally important: do not lazy-load the hero/LCP image, and give it fetchpriority="high". LCP — the Core Web Vitals metric for when the main content appears, "good" at 2.5 seconds or less as of 2026 — is almost always that hero. Making the biggest image wait politely behind everything else is how a well-meaning optimization makes the metric worse. The web.dev LCP guide covers the pattern in detail.
A workflow that survives busy weeks
The fix that sticks is a boring export habit, not a one-time cleanup. For a non-developer workflow:
- Audit once. Run PageSpeed Insights on your three most-visited pages. "Serve images in next-gen formats", "Properly size images", and "Efficiently encode images" list the offenders with byte savings per file — that is your worklist.
- Fix the worst ten files. Not the whole media library — the ten images on your busiest pages. This is where the traffic actually is.
- Export deliberately. Open the original in Squoosh (free, runs in the browser, shows a quality slider against the original) or a batch tool like XnConvert. Resize to 2x display width, pick AVIF or WebP, quality 75-80, confirm the file is under budget, re-upload.
- Set the house rule. Write "200 KB per image, 250 KB for heroes" wherever your team keeps process notes. New images get one pass through step 3 before upload.
- Re-measure. Same three pages, same tool. Record the before/after — it is the only way to know the habit is working.
Plugin routes exist too — ShortPixel, Imagify, and similar WordPress plugins compress on upload automatically. The case for them is real (zero habit change); the case against is that they add a paid dependency, re-encode files you may want pristine, and do not resize dimensions — a 5000-pixel WebP is still wrong even at 150 KB. Manual export keeps originals untouched and costs nothing but ten minutes.
When the rule bends
Budgets serve the page, not the other way around. A photography portfolio, a real-estate gallery, or a product image visitors zoom into can justify 300-400 KB — the image is the content. What does not bend is the pattern: even those images should be correctly dimensioned, modern-format, and lazy-loaded unless they are the hero. The budget is there to force the question "does this file earn its bytes?" — if the honest answer is yes, take the bytes deliberately.
Measure it, then stop
Re-run PageSpeed on the same pages after your first pass and compare LCP — the Core Web Vitals thresholds call 2.5 seconds or less "good" at the 75th percentile of real visits, as of 2026. On image-heavy pages this single change commonly moves LCP by a second or more; on a page already light on images it will not, which is the signal to look at hosting and third-party scripts instead — the next two rungs in the triage order. When the image opportunities in the report are measured in kilobytes rather than seconds, you are done with this lever — move on.
— Editorial team. Facts current as of 2026; we revise guides when the ground shifts.
Frequently Asked Questions
Doesn't my CMS compress images automatically?
Partially. Most CMSs generate resized versions on upload, but they rarely re-encode to modern formats or strip the multi-megabyte original. The 'original' is usually what ends up served in hero slots, so the upload habit still matters.
WebP or AVIF — which should I export?
As of 2026 both are Baseline features across current browsers. AVIF compresses photos further at the same quality but encodes slower and some CMS plugins still default to WebP. If your toolchain offers AVIF, use it; WebP is the safe fallback; JPEG is the compatibility floor.
Is 200 KB a hard limit?
No — it is a budget, not a law. A hero image that earns its place can go to roughly 250 KB; a tiny thumbnail should be far under 50 KB. The point is that every image gets a deliberate size decision instead of whatever the camera produced.