How to Optimize Images for WordPress (2026 Edition)
WordPress sites are notoriously image-heavy. Here is the complete 2026 workflow, from format choice to lazy-loading, to make your site fast without plugins.
WordPress sites are notorious for being image-heavy. The good news in 2026: WordPress core handles modern formats natively, lazy-loading is on by default, and you don't need a heavy optimisation plugin to ship a fast site.
The pre-WordPress step matters most
The biggest optimisation happens before you upload. WordPress will serve whatever you give it. If you upload a 5 MB photo, that 5 MB stays on the server forever, and any responsive variants it generates are still derived from a 5 MB source.
Pre-process every image before upload:
- Convert HEIC to JPEG. WordPress media library doesn't handle HEIC. Use HEIC to JPG.
- Resize to maximum needed. Most content images never display wider than 1600px. Resize your source down before upload; pixels you'll never show are wasted bytes.
- Compress. Run through Image Compressor at quality 85. A 5 MB source typically becomes 600 KB with no visible quality loss.
- Consider WebP or AVIF. WordPress 6.5+ handles WebP natively. AVIF support is solid in 2026.
A site that ships 600 KB images instead of 5 MB images is 8ร faster on every page load, before any plugin or CDN trick.
Image format choice by use case
| Use case | Format | Quality |
|---|---|---|
| Featured / hero image | AVIF (or WebP fallback) | q60 / q80 |
| Body content photos | WebP | q80 |
| Logo / icon | SVG if vector, PNG otherwise | lossless |
| Screenshot | PNG or WebP-lossless | n/a |
| Author photo | WebP | q85 |
For broad compatibility (older email-shared screenshots), stick with JPEG q85.
Resizing inside WordPress
WordPress generates responsive image sizes (thumbnail, medium, large, full) on upload. Configure these in Settings โ Media to match your actual layout; most themes only use medium and large.
The srcset attribute on <img> tags lets browsers pick the right size. You'll see this work in DevTools โ Network when you scroll a media-heavy page on a phone.
Plugins: do you need them?
Probably not, in 2026. The plugin ecosystem grew up when WordPress couldn't do any of this. Today's core handles lazy-loading (loading="lazy"), responsive images (srcset), and WebP serving (with a Cloudflare or media-library plugin if you need automatic conversion).
Plugins worth considering:
- EWWW Image Optimizer: server-side re-compression of uploaded media. Useful if your team uploads un-optimised images and you can't trust them to pre-process. Costs money for cloud features.
- ShortPixel: similar. Free tier.
- A CDN with image transforms: Cloudflare Images, BunnyCDN Optimizer. Most expensive, most effective.
If your team always pre-processes, you don't need any of these.
Workflow recommendation
For each new post:
- Resize source to maximum display width (use your theme's content width, often 1600 or 2000px).
- Convert to WebP via PNG to WebP or Image Compressor.
- Upload to WordPress Media Library.
- Set descriptive alt text in the upload dialog (don't skip this, it's accessibility AND SEO).
- Insert into post, pick the right size from the inspector.
Lazy loading
WordPress adds loading="lazy" to images by default in 2026. This means below-the-fold images don't download until they're about to scroll into view. If you've added custom <img> tags via shortcodes or custom blocks, make sure they have loading="lazy" too.
The exception: your above-the-fold hero image should NOT have loading="lazy"; that delays LCP. Use loading="eager" and fetchpriority="high" on hero images.
Testing your work
Run a single page through PageSpeed Insights. Look for:
- LCP under 2.5 seconds: usually means hero image is well-sized and not lazy-loaded.
- No "properly size images" warning: your
srcsetis working. - No "serve images in next-gen formats" warning: you've shipped WebP or AVIF.
Related
Try Image Compressor, free in your browser
No uploads, no account. Your images never leave your device.
Open Image Compressor