You ran the speed test, got a red flag on images, compressed a few, and... it still feels slow. Sound familiar? That is because squeezing file size alone fixes only one layer of the problem. Past the number, three separate things all count.
1. Size the file to the slot
A banner displayed at 600 pixels wide never needs to ship as a 4000-pixel file. The browser downloads all those pixels, then throws most away. Re-export to the display width first — this alone often beats any quality fiddling. Adding a responsive srcset lets phones grab a small file and desktops a sharp one.
2. Pick the right format
For photos on modern browsers, WebP beats JPEG at the same quality, and AVIF goes further on browsers that accept it. Graphics and logos stay crisp as SVG or a lean PNG. Serving several candidates and letting the browser choose costs nothing and captures most of the win.
3. Compress, then verify
Only after sizing and format should you touch the quality bar. On photos, quality 80 strips redundant data with no visible change — see the quality-80 method. Drop legal limits and decorative backgrounds lower.
4. Lazy-load the right half
Below-the-fold images and carousels should lazy-load so they don't block the first paint. But keep the hero image eager — lazy-loading it makes the largest paint slowest, the exact opposite of what you want.
Run the loop
- Compress every upload locally with the compressor, including a WebP pass.
- Re-test; if images still top the list, check dimensions and
srcsetnext. - Measure, change one thing, measure again. Chasing all threads at once hides which fix moved the needle.