Ask most site owners why their site is slow and they’ll blame the hosting, the theme, “too many plugins,” or “my developer doesn’t know what they’re doing.” In a lot of the audits I run, the actual answer is simpler: unoptimised images doing most of the damage on their own.
Image optimisation isn’t one thing. It’s three separate levers, and knowing which one to pull matters more than just installing a plugin and hoping.
Lever one: Format
Not all image formats compress the same way. JPEG has been the default for photos for years because it handles complex images well at a reasonable file size. PNG is better for images that need transparency or sharp edges, like logos, but produces much larger files for photos.
WebP and the newer AVIF format do what JPEG and PNG can’t: they compress images significantly smaller than either while keeping visual quality close to the original.
Example: A hero image that’s 450KB as a JPEG can often drop to 180–220KB as WebP with no noticeable difference to regular visitors. On a typical blog post with 8–10 images, switching formats alone can shave off 1–2 seconds from page load time.
This is the single biggest lever most sites aren’t pulling. Switching format alone, before touching compression settings, can cut image weight by 30–50% on a typical site.
Lever two: Compression
Compression reduces file size by simplifying the image data, and it comes in two types.
Lossless compression shrinks the file without touching visual quality at all. It’s the safer default, but the gains are modest.
Lossy compression removes some image data the human eye barely notices, resulting in much smaller files. Most images can tolerate 60–80% quality settings with no visible difference.
Example: A large product photo that starts at 1.2MB can often be compressed to 350–450KB at 75% quality with no visible degradation on both desktop and mobile. However, it’s worth spot-checking hero images and key product photos manually rather than applying a blanket setting across the whole site.
Lever three: Lazy Loading
Lazy loading delays loading images until they’re about to enter the visitor’s viewport (line of sight), instead of loading every image on the page immediately, including ones far below the fold that the visitor may never scroll to.
This matters most for pages with a lot of images, like galleries, blog archives, or product grids. WordPress has had native lazy loading built in since version 5.5, but it’s worth confirming your theme and page builder aren’t overriding it or applying it inconsistently.
One thing lazy loading should never touch: images above the fold, especially your largest hero image. Lazy loading your hero image actually hurts your Largest Contentful Paint score, since the browser now waits to even start loading the image the visitor sees first.
Example: On a homepage with a big hero image + 12 product thumbnails below, properly implemented lazy loading can prevent loading over 1.5MB of images that aren’t immediately visible, significantly improving initial load time.
Putting it together
The order that actually moves the needle: convert to WebP or AVIF first, apply sensible lossy compression second, then confirm lazy loading is active everywhere except above-the-fold images.
Free plugins like ShortPixel (free tier), Convert for Media, or ReSmush.it handle format conversion and compression well for most sites. Paid tiers add batch processing and higher monthly image quotas, worth it once you’re running an image-heavy site, but not the starting point.
We ranked 10 of the leading image optimization plugins strictly on compression performance, not install counts, worth reading before you settle on one.