Why WordPress images so often slow sites down

The single most common WordPress performance mistake: uploading full-resolution camera photos — 4000+ pixels, several megabytes each — and displaying them 800 pixels wide. WordPress generates smaller versions, but the huge original still weighs on the media library and often gets served in the wrong size. Fix the images before they hit WordPress, and most of the problem disappears.

Step 1: resize before uploading

Bring images to the size they're actually shown at. For most WordPress themes a width of 1600–2000 px is plenty for full-width images; content images are often displayed at 800–1200 px. Resize with the resize tool before uploading — this alone can cut a 5 MB photo to a few hundred KB.

Step 2: choose the right format

  • Photos: JPG (or WebP) at quality ~80.
  • Graphics, logos, screenshots: PNG or WebP.
  • WebP: modern WordPress supports WebP uploads directly — smaller than JPG/PNG at similar quality, and worth using where your theme and plugins play along.
300 × 250 — Rectangle
Cookie-Banner ausstehend

Step 3: know what WordPress does to your images

WordPress isn't passive. On upload it:

  • Generates several sizes (thumbnail, medium, large) and serves them via srcset — good for responsive images.
  • Recompresses large JPGs (by default around quality 82) and scales down very large images.

That means uploading an already-optimized image is best: WordPress then has little to do, and you keep control over quality. Uploading a 5 MB original just makes WordPress store both the bloated original and its recompressed copies.

The featured image is often the largest on the page — and frequently the LCP element. Keep it optimized and, ideally, not lazy-loaded. WordPress also uses images for social previews (Open Graph); a clean 1200 × 630 image makes shared links stand out. More on that in How to create an OG image.

Step 5: don't lazy-load the wrong thing

Modern WordPress adds loading="lazy" automatically — which is great for images below the fold but wrong for the hero/featured image. If your theme lazy-loads the top image, that hurts perceived speed. The full picture is in Lazy loading images.

300 × 250 — Rectangle
Cookie-Banner ausstehend

The checklist

  1. Resize to ~1600–2000 px before uploading.
  2. Compress to JPG/WebP quality ~80.
  3. Right format per content (photo → JPG/WebP, graphic → PNG/WebP).
  4. Let WordPress generate responsive sizes from your clean upload.
  5. Keep the featured image fast and don't lazy-load the hero.

💡 Tip: Resize and compress images browser-locally before uploading — no plugin, no upload to third parties.