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 type | Max width | Target file size |
|---|---|---|
| Featured image / hero | 1200px | 100-200 KB |
| Blog post content | 800px | 50-150 KB |
| Thumbnails | 300px | 20-50 KB |
| WooCommerce products | 800-1000px | 80-150 KB |
Step-by-step workflow
- 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.
- 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.
- Batch compress. Drop all your post images into a compressor at once. Download them individually or as a ZIP.
- 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