Guide

How to Compress Images for WordPress (Without Plugins)

Updated March 2026 · 5 min read

Images are the #1 reason WordPress sites load slowly. The average WordPress page serves 1-3 MB of images alone. Plugins like Smush or ShortPixel can help, but they add overhead to your site, require API keys, and often have free tier limits.

There's a simpler approach: compress your images before uploading them to WordPress.

Why compress before uploading?

  • No plugin overhead — compression plugins run on every page load, consuming server resources and adding JavaScript to your frontend.
  • No API limits — most compression plugins have monthly quotas on their free plans (typically 50-100 images/month).
  • Works with any host — shared hosting, managed WordPress, WP Engine, Kinsta — doesn't matter. You're uploading already-optimized files.
  • One-time effort — compress once, upload once. No background processing or queue delays.

Recommended image sizes for WordPress

Image typeMax widthTarget file size
Featured image / hero1200px100-200 KB
Blog post content800px50-150 KB
Thumbnails300px20-50 KB
WooCommerce products800-1000px80-150 KB

Step-by-step workflow

  1. Resize your images first. If your WordPress content area is 800px wide, there's no reason to upload a 4000px photo. Resize to match the display size.
  2. Set a target file size. For blog posts, 100-200 KB per image is a good target. Hero images can be up to 200 KB.
  3. Batch compress. Drop all your post images into a compressor at once. Download them individually or as a ZIP.
  4. Upload to WordPress. Go to Media → Add New and upload your compressed images. WordPress will generate its own thumbnails from your already-optimized originals.

What about WordPress's built-in compression?

WordPress does compress JPEG uploads to 82% quality by default. But this only applies to the resized versions WordPress generates — your original upload stays full size in the media library. Pre-compressing means every version is optimized.

Format tips for WordPress

  • Use JPEG for photos and images with gradients
  • Use PNG for screenshots, logos, or images with text
  • Use WebP if your theme and host support it (most modern setups do since WordPress 5.8+)

Compress before you upload — no plugin needed

CompressLocal lets you batch compress up to 20 images at once, right in your browser. Set a target size, drop your files, and download. Nothing ever leaves your device.

Compress for WordPress