Images are the number-one reason WordPress sites load slowly. Most of the time the culprit isn't WordPress itself — it's that people upload enormous, full-resolution photos straight from a phone or camera and let the page deal with them. The single most effective fix costs nothing and needs no plugin: prepare each image properly before you upload it. Here's the workflow.
Step 1: Resize to the dimensions you actually use
This is where the biggest savings live. Find out how wide your images are displayed and resize to match. For most themes:
- Full-width / hero images: 1920px wide is plenty.
- In-content images (single column): 1000–1200px.
- Thumbnails and sidebar images: 400–800px.
A 4000px photo shown in a 1000px column is carrying four times the width — sixteen times the pixels — it will ever display. Scaling it down before upload typically cuts the file by 80–95% on its own. (To support high-DPI screens, you can resize to roughly double the display width.)
Step 2: Choose the right format
- Photographs → JPG, or WebP for ~25–35% smaller files.
- Logos, icons, screenshots, graphics with transparency → PNG, or WebP to keep transparency while shrinking.
- Anything for the web where you control it end-to-end → WebP is the strong default; modern WordPress and browsers handle it natively.
If you're unsure, the JPG vs PNG vs WebP guide walks through the decision.
Step 3: Compress to a sensible quality
For photos, 75–85% quality removes weight you can't see. Don't ship images at 100% quality "to be safe" — that's mostly invisible data inflating your page. Check the before/after size as you go; a well-prepared in-content image is usually well under 200 KB.
You don't need an optimisation plugin running on your server for every image. This tool resizes, converts, and compresses locally — drop a batch in, set a max width and format, and download. Then upload the finished files to WordPress.
Step 4: Batch your media library prep
If you're publishing a gallery or a photo-heavy post, process the whole set at once rather than one at a time. Set your max width and quality once, drop in up to 200 images, and download them as a single ZIP. Unzip and upload. See batch converting images for the full approach.
Step 5: Fill in alt text and file names in WordPress
Optimisation isn't only about bytes. Two things help SEO and accessibility and cost seconds:
- Descriptive file names before upload —
red-running-shoes.jpgbeatsIMG_4821.jpg. - Alt text in the WordPress media dialog — a short, accurate description of the image for screen readers and search engines.
Step 6: Let WordPress and the browser do the rest
Modern WordPress automatically generates multiple sizes and outputs responsive srcset markup, and adds lazy loading for off-screen images. Those features work best when your source upload is already reasonably sized — feed it a 6 MB original and every generated size starts from bloat. Get steps 1–3 right and the built-in features handle delivery well without extra plugins.
A quick checklist
- ☐ Resized to the display width (≤1920px for full-width, ≤1200px in-content)
- ☐ Right format for the content (JPG/WebP photos, PNG/WebP graphics)
- ☐ Compressed to 75–85% quality; file comfortably under ~200 KB where possible
- ☐ Descriptive file name
- ☐ Alt text added on upload
For the why behind these numbers, see resizing images for the web and image formats and page speed.
Resize, convert to WebP, and compress a whole batch in your browser — then upload the finished files.