A slow WordPress site is almost always an image problem. The average WordPress page loads 2.3 MB of images, and most of that is wasted bytes — oversized dimensions, wrong format, no compression. Here's how to fix it, no plugin required.
WordPress image optimization plugins are reactive — they compress after upload, which means the original huge file still sits on your server. The better approach: compress before uploading. Use Compress2PNG to drag-batch your images, compress at 85% quality for JPG or lossless for PNG, then upload the optimized version to WordPress. Your Media Library stays clean and your server space stays reasonable.
WordPress auto-generates multiple sizes (thumbnail, medium, large, full) on upload. But the default WordPress size presets aren't optimized for most themes:
Go to Settings → Media in your WordPress dashboard and set the max dimensions to what your theme actually uses, not the defaults.
Image optimization plugins (Smush, ShortPixel, Imagify) work — but they add another plugin to update, another dashboard to check, and often a subscription fee for bulk compression. If you're publishing 1-3 posts per week, compressing images manually before upload takes 30 seconds per post and costs nothing. Use plugins when you have thousands of existing images to bulk-optimize and a team of writers who won't manually compress.
WordPress has a JPEG quality setting hidden in your theme's functions.php: add_filter('jpeg_quality', function(){return 85;}); Add this line and WordPress will compress every resized JPG at 85% instead of the default 90%. Combined with pre-upload compression, your image payload drops by 60-70% with no plugin and no ongoing cost.