Open your site on a phone with a weak signal and watch what happens. The text shows up fast, then everything just… sits there, waiting, while a hero photo the size of a small PDF crawls down the wire. That stall is almost always images. On most WordPress sites, images are the single heaviest thing on the page, and they’re usually the easiest thing to fix.
We see it constantly. A designer drops a 4000-pixel-wide camera JPEG straight into the media library, WordPress renders it into a 600-pixel slot, and the browser downloads all four megabytes anyway. Do that four times above the fold and you’ve built a page that fails Core Web Vitals before a single line of your content has loaded.
This guide walks through how to actually shrink your images — the right formats, the right dimensions, and the modern loading tricks WordPress now ships out of the box — so your pages feel instant instead of sluggish.
Why Image Weight Is the First Thing to Fix
Images are routinely the single largest share of a typical web page’s total bytes, so they’re where speed problems usually start. And speed isn’t a vanity metric anymore. Google’s Core Web Vitals — Largest Contentful Paint (LCP), Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS) — are real ranking signals, and on a content-heavy page the “largest contentful” element measured by LCP is very often your hero image.
LCP has a clear target: Google recommends the largest element render within 2.5 seconds of the page starting to load, for at least 75% of visits. If your headline image is a bloated JPEG that takes four seconds to arrive, you fail that threshold no matter how fast your server is.
There’s a business cost underneath the technical one. Slow pages lose visitors before they ever read a word, and every image you fail to optimize is bandwidth you pay for and patience your visitors don’t have. Fixing images is the rare optimization that helps rankings, conversions, and your hosting bill at the same time.
Core Web Vitals feed directly into Google’s ranking systems, and on most pages the Largest Contentful Paint element is an image. Shrinking that one file is often the highest-leverage speed win available — no new host, no rebuild, just fewer bytes on the wire.
Step One: Right-Size Before You Upload
The most common mistake isn’t the format — it’s the raw dimensions. A modern phone camera produces images four to six thousand pixels wide. Your blog’s content column is maybe 700 to 1200 pixels. Uploading the full-resolution file means the browser downloads millions of pixels it will only throw away.
Match the image to its display size
Before an image ever touches your media library, resize it to roughly the largest size it will actually display. A full-width hero rarely needs to exceed about 2000 pixels wide, and an in-content image seldom needs more than around 1200. You can do this in any editor, or lean on WordPress itself, which automatically generates a set of smaller “thumbnail,” “medium,” and “large” sizes when you upload and serves the appropriate one through srcset.
Let srcset do the responsive work
Since version 4.4, WordPress has added responsive srcset and sizes attributes to images automatically. That means a phone can pull a small variant while a desktop pulls a larger one from the very same <img> tag. It works well, but only if your original upload was sensibly sized in the first place — srcset can’t invent a small file if you never gave WordPress a reasonable original to derive one from.
Strip the metadata
Camera files carry EXIF baggage: GPS coordinates, camera model, color profiles, sometimes an embedded thumbnail. Most of it is dead weight for the web, and the GPS data is a quiet privacy leak. A good compression tool strips this automatically. If you’re exporting by hand, choose “Save for Web” or the equivalent and drop the metadata.
Step Two: Use a Modern Format (WebP, and Now AVIF)
JPEG and PNG have served the web for decades, but they’re not the most efficient options available. WebP and AVIF compress the same visual quality into far smaller files, and WordPress supports both natively now.
WebP: the safe default
According to Google’s own comparative study, WebP lossy images are 25%–34% smaller than comparable JPEGs at an equivalent SSIM quality index. WordPress has been able to handle WebP since version 5.8 (2021), so you can upload .webp files directly and use them throughout the media library. For a photo-heavy page, converting to WebP alone can cut image weight by roughly a third with no visible quality loss.
AVIF: even smaller, now built in
AVIF compresses tighter still, and it’s no longer bleeding-edge. WordPress 6.5, released in 2024, added AVIF support to core, so you can upload and serve AVIF files the same way you do WebP. Browser support is now broad across current versions of Chrome, Firefox, and Safari. If your audience skews toward recent browsers, AVIF can shave off even more than WebP does.
How to convert without hand-editing every file
You don’t have to re-export images one at a time. Most optimization plugins will convert uploads to WebP or AVIF automatically and can bulk-convert your existing media library in the background. If you’d rather stay off plugins, tools like cwebp and avifenc on the command line, or the export panels in editors like GIMP and Photoshop, get the same result.
Photographs — WebP or AVIF, lossy, quality around 75–82.
Logos, icons, flat graphics — SVG where possible, otherwise PNG or lossless WebP.
Screenshots with text — PNG or lossless WebP so the text stays crisp.
Anything animated — a real video file (MP4/WebM) instead of a GIF, which is enormous by comparison.
Step Three: Compress With Intent
Resizing and reformatting get you most of the way. Compression closes the gap. The trick is knowing where the point of diminishing returns sits, because past a certain setting you’re only shaving kilobytes while introducing visible artifacts.
Lossy versus lossless
Lossy compression discards data your eye is unlikely to notice, and for photographs it’s the right call — a quality setting somewhere around 75 to 82 usually looks identical to the original at a fraction of the size. Lossless compression keeps every pixel exact, which matters for logos, line art, and screenshots where a soft edge or muddy text would be obvious. Match the mode to the content and you get small files without visible damage.
Automate it at upload
Doing this by hand for every image is the kind of chore people abandon after a week. Set up automatic compression instead, so every new upload is optimized without you thinking about it. Most image plugins handle resize, convert, and compress in one pass, and can batch-process the backlog already sitting in your library.
Step Four: Load Images the Modern Way
Even a perfectly compressed image hurts if the browser downloads it at the wrong time. WordPress core now ships several loading optimizations, and understanding them helps you avoid fighting the platform.
Lazy-load what’s below the fold
Since version 5.5, WordPress adds loading="lazy" to images automatically, so anything below the fold waits to download until the visitor scrolls near it. That’s a real win on long pages — a reader who never scrolls to your footer never pays to load its images.
But don’t lazy-load your hero
Here’s where the automatic behavior can backfire. Lazy-loading your LCP image — the big one at the top — delays the exact element Core Web Vitals is measuring. WordPress 6.3 got smart about this and now skips lazy-loading for images it judges to be above the fold, and it applies fetchpriority="high" to the likely LCP image so the browser fetches it sooner. If you use a page builder or custom template, double-check that your hero image isn’t being force-lazy-loaded by a stray attribute.
Serve from a CDN
A content delivery network stores copies of your images on servers around the world and hands each visitor the nearest one. For an audience outside your host’s home region, that alone can cut image load time dramatically. Many CDNs will also convert and resize images on the fly, so a visitor on an old browser still gets a format they can read.
A Repeatable Workflow
Optimization sticks when it’s a system, not a heroic one-time cleanup you never repeat. Here’s the routine we’d hand a small team:
Cap heroes near 2000px wide and in-content images near 1200px before they ever reach the media library.
Automatically, on upload, so nobody has to remember. Bulk-convert the existing library once.
Lossy quality ~75–82 for photos, lossless for graphics. Drop EXIF and color-profile baggage.
Confirm below-fold images lazy-load and your hero does not. Test the result in PageSpeed Insights.
Run a fresh page through PageSpeed Insights after you’ve made changes. It reports LCP directly and flags oversized or improperly-served images by name, which turns “the site feels slow” into a concrete, fixable list.
If you do nothing else, automate optimization at upload. A one-time cleanup decays the moment the next person drops in a raw camera file. Make the pipeline do the work and your site stays fast without anybody policing it.
Where amplifi Fits
Image optimization is one piece of a broader “make WordPress machine-friendly” job, and it sits next to the work we build tools for. amplifi.studio maintains an open-source WordPress suite, amplifi.plugins, that handles the SEO layers around your media — bulk AI alt text so every image is described for search engines and screen readers, plus schema, meta, and a security scanner. It won’t resize a JPEG for you, but once your images load fast, it makes sure they’re also understood.
amplifi.plugins is MIT licensed and free — one install, one update, every tool: alt text, schema, SEO meta, security, and more. The full source is on GitHub.
View on GitHubFrequently Asked Questions
Heavy images are the most common reason a WordPress page feels slow — and one of the easiest to fix. Resize, convert, compress, and let the platform load them the modern way, then measure the result in PageSpeed Insights.
Built by amplifi.studio — see also our guide to WordPress image alt text.