Why WordPress images are often slow

WordPress 6.6 (June 2024) did introduce a native WebP generator, and WebP has been created alongside JPG by default since June 2024 — but three problems remain. First: AVIF isn't natively supported; the best modern format is missing. Second: many themes and builders (Elementor, Divi) create images via CSS backgrounds, which get no <picture> element. Third: media-library images from 2019 were never converted to modern formats, and retroactive conversion is laborious.

For a basics overview on theme selection, see our WordPress image basics post; here we cover the 2026 plugin stack.

The native WordPress 6.6+ pipeline

Standard out of the box since June 2024: WordPress automatically generates WebP variants of all uploaded JPG/PNG, in all registered image sizes (thumbnail, medium, large, full). The theme then gets a modern <img> tag with a correct srcset via wp_get_attachment_image().

Strengths: free, no plugin, integrated. Weaknesses: no AVIF, no <picture> tag with a format cascade, double storage consumption (JPG + WebP), and the filter to deactivate it is obscure. To control storage use, you can steer it via the wp_image_editor_output_format filter.

The plugin options 2026

Four plugins dominate the market for pro requirements:

ShortPixel Image Optimizer

Paid after a trial volume. Uploads images to ShortPixel servers, compresses them there (lossy, glossy, lossless), returns AVIF + WebP. Also detects CSS background images via a DOM scan.

Costs 2026: 100 images/month free, 5,000/month for $4.99, 50,000/month for $29.99. For mid-size e-commerce shops with ~10,000 products the mid tier often isn't enough. Lock-in: images are hosted on the ShortPixel CDN; when the subscription ends, they're gone.

EWWW Image Optimizer

Established since 2013. Optimizes locally by default (lossless); the cloud variant with Easy IO (CDN) is premium. Generates WebP + AVIF, delivers via <picture> with a JS helper.

Costs 2026: free for local compression, Easy IO from $7/month unlimited. Strengths: no lock-in on the free tier, a good cloud option. Weaknesses: a somewhat dated UI, many settings.

Imagify

From the WP Rocket team. A clear UI, good default settings, AVIF since 2024. Cloud-based.

Costs 2026: 20 MB/month free, Lite from $2.99/month for 500 MB, Plus $5.99/month for 1 GB, Infinite $9.99/month for unlimited. For mid-size sites Lite is often enough.

Cloudflare Polish + Mirage

If you use Cloudflare as a CDN (increasingly the standard), Polish (Pro plan, $25/month) gives you automatic WebP/AVIF conversion at the edge, without converting the original images. The media library stays in JPG/PNG — Cloudflare optimizes at request time.

Strengths: no plugin, no server load, a perfect cache hit rate. Weaknesses: Cloudflare lock-in, the Polish setting needs some testing effort, and not all themes deliver Polish-friendly HTML.

300 × 250 — Rectangle
Cookie-Banner ausstehend

Lazy loading and Core Web Vitals

WordPress 5.5+ automatically marks images with loading="lazy" — good. But: it applies to all images, including the LCP hero. Result: LCP suffers measurably. The 2026 solution: plugins like WP Rocket or Perfmatters detect the LCP image automatically, set fetchpriority="high", and remove lazy. Manually, it also works via a theme filter.

More on the Core Web Vitals impact in our CWV post.

Media-library migration: old images to AVIF

An often-underestimated item: an existing media library with thousands of original JPGs from past years. Three migration routes:

  • Plugin bulk run. ShortPixel, Imagify, and EWWW have "bulk optimize" buttons that process all existing images. ~2–5 seconds per image, so hours to days at 10,000 images.
  • A WP-CLI script with Sharp. With WP-CLI access you can write a Node script that walks the uploads directory and generates AVIF + WebP. Saves the plugin subscription.
  • Use Cloudflare Polish. With Polish enabled, the migration is "automatic" — on the image's first request, Cloudflare serves AVIF. No bulk run needed.

Recommendation matrix by site size

  • Small blog sites (<500 images): WordPress-native WebP + Imagify Lite. A cost-comfortable start.
  • Mid-size sites (500–5,000 images): ShortPixel or EWWW Easy IO with cloud conversion. Enable AVIF.
  • E-commerce with a large product catalog (5,000+ images): Cloudflare Polish (Pro plan) as edge conversion. Any plugin pipeline would hit its limits.
  • Photo magazines, photo blogs: ShortPixel in glossy mode. Keep the JPG original for quality-conscious readers.
  • Multisite networks: EWWW or Cloudflare Polish — both multisite-compatible; ShortPixel has historically had problems here.
300 × 250 — Rectangle
Cookie-Banner ausstehend

Don't forget the server configuration

The server side has to play along too. Three common problems:

  • memory_limit too low. AVIF encoding needs a lot of RAM. On shared hosts with 256 MB the encoder fails. At least 512 MB for comfort.
  • Missing ImageMagick / Sharp. WordPress uses GD or ImageMagick. AVIF encoding needs ImageMagick > 7.0.25 or the @cf/vips add-on. Check with your host.
  • Missing Cache-Control headers. Optimized images must be delivered with Cache-Control: public, max-age=31536000, immutable. On many hosts this has to be added in .htaccess or nginx.conf.

WordPress 7.0 — what's coming?

According to the WordPress roadmap, native AVIF encoder integration arrives in 2026 (early beta since WordPress 6.8). That makes a large part of the plugin pipelines redundant — at least for sites without a CDN strategy. Plugins will differentiate via CDN edge optimization, smart crop, and AI background removal.

Sources

WordPress Make — WebP by default · ShortPixel — Pricing · EWWW Image Optimizer Pricing · Imagify Pricing · Cloudflare Polish · WordPress Make Core · ImageMagick — Format Support.