If your WordPress site feels slow, I can guess the main reason before I ever see it: your images are too heavy. I fix slow WordPress sites for a living, and in almost every audit, unoptimized images are the single biggest weight on the page — bigger than the theme, bigger than the plugins.
The good news: you don’t need a premium image plugin to fix this. You need a workflow. Here is the exact free one I use.
Why WordPress images get so heavy
A photo from a modern phone is typically 3–8 MB and 4,000 pixels wide. Your blog post displays it at maybe 800–1,200 pixels wide. When you upload the original, WordPress creates a few smaller sizes — but in many themes and builders, the full-size original still ends up being served, or the “large” size is far bigger than the slot it fills.
Multiply that by every image on the page, and a visitor on a mobile connection is downloading 10–20 MB just in pictures. That’s your slow site. It’s rarely a mystery — it’s arithmetic.
Step 1: Resize before you upload — this is the step everyone skips
Decide the widest your content ever displays. For most blogs that’s 1,200 px (or 1,600 px if your theme is wide and you care about retina sharpness). No image should ever be uploaded wider than that.
Yes, WordPress automatically scales images over 2,560 px — but a 2,500 px photo is still roughly four times the bytes of a 1,200 px one at the same quality. “WordPress will handle it” is how sites quietly gain weight.
Step 2: Compress before upload — with a free tool, not another plugin
Here’s the part the plugin companies don’t advertise: compression done before upload is better than compression done by a plugin after it. The plugin route means your server does the work (or you pay for theirs), the plugin sits on your site forever, and your media library fills with originals you’ll never need.
My workflow: run every image through ImageTight before it touches WordPress. It’s the free compressor I built — it runs entirely in the browser, handles batches of up to 1,000 images, and lets you control quality with a slider so photos stay sharp while the megabytes fall off. A typical phone photo goes from 4 MB to 300–500 KB with no visible difference at display size. (The full story of why I built it is here: how I built ImageTight.)
If you want the guided version on this site, our image compressor page walks through it.
Step 3: Serve WebP — WordPress already supports it
WebP images are typically 25–35% smaller than JPEG at the same visual quality, and WordPress has accepted WebP uploads since version 5.8. Two free routes:
- Convert before upload: export or convert your images to WebP as part of Step 2’s workflow, then upload WebP directly.
- Convert on the server, free: there are well-known free converter plugins (for example Converter for Media) that convert your library and serve WebP where the browser supports it — no subscription required for the core job.
Either way, don’t stack two optimization plugins doing the same thing. Pick one route.
Step 4: Use what WordPress already gives you, free
- The right size in the editor: when inserting an image, choose the size that matches the slot (Large or Medium Large for content width) — not Full Size by habit.
- Native lazy loading: WordPress adds
loading="lazy"to images automatically since version 5.5. If your theme or a plugin duplicates lazy loading, that’s a conflict, not a bonus. - Alt text and filenames: rename
IMG_4021.jpgto something descriptive before upload. It costs nothing and it’s the part of image SEO no plugin can invent for you afterwards.
Step 5: Fix the library you already have (carefully)
For an existing site with hundreds of heavy images, work in this order: find the heaviest pages first (your top landing pages), download their images, resize + compress them with the workflow above, and re-upload or replace them. Do the top 10 pages before you touch anything else — that’s where the speed your visitors feel actually lives.
One caution: never bulk-delete “unused” image sizes or originals without a full backup. Themes and builders reference sizes in ways that aren’t obvious, and this is the step where careful people break their own sites.
What not to do
- Don’t install two image-optimization plugins. They fight over the same files and settings.
- Don’t chase a plugin’s “100% optimized” badge. The goal is a fast page a human can feel, not a green score in a dashboard.
- Don’t upload originals “so they’re there if I need them.” Keep originals in a folder on your computer or Drive — not in your WordPress library, where they tax every backup and sometimes get served by accident.
The whole workflow, in one line
Resize to display width → compress in the browser with a free tool → upload WebP where you can → pick the right size in the editor. Four habits, zero plugin subscriptions, and your pages shed megabytes permanently.
Browse the rest of the kit on our free tools page — everything there runs on the same principle: useful things for the web, free, no sign-ups.
Frequently asked questions
Partly. WordPress scales down very large images (over 2,560 px) and applies default JPEG compression — but that still leaves files several times heavier than they need to be. A deliberate resize-and-compress step before upload is where the real savings are.
For web display, usually yes: WebP is typically 25–35% smaller at similar quality, and all modern browsers support it. WordPress has accepted WebP uploads since version 5.8.
Not at sensible settings. A phone photo compressed for display at 1,200 px wide is visually identical to the original on screen — the removed data was detail no screen was ever going to show. Always preview before you commit; a good tool shows you the result and the savings first.
Not if you build the pre-upload habit. Plugins earn their keep on huge existing libraries that need bulk conversion — and even then, a free converter plus this workflow covers most sites. The expensive part was never the plugin. It was the unoptimized originals.


