A blog post with 5 uncompressed stock photos can weigh 15–25 MB. That single decision — uploading images at full size — is the #1 reason beginner blogs are slow, rank poorly, and frustrate readers on mobile. The fix takes 3 minutes per image. This guide tells you exactly what to do.
You'll learn the right dimensions for every type of blog image, which file format to use, how to compress without losing quality, and how to build a simple workflow that keeps every post fast.
Why Image Size Directly Affects Your Rankings
Since 2021, Google uses Core Web Vitals as a direct ranking factor. The three metrics — LCP (Largest Contentful Paint), INP (Interaction to Next Paint), and CLS (Cumulative Layout Shift) — are heavily influenced by your images. Large, unoptimized images hurt all three.
WordPress makes this worse by default: when you upload a 5 MB image, WordPress automatically generates 5–10 size variants — meaning a single unoptimized upload creates 25–50 MB of server storage across all variants. Multiply that by 100 blog posts and you have a serious performance problem.
❌ What Most Beginners Do | ✓ What This Guide Teaches | |
File uploaded | 4,000 × 3,000 px | 1,200 × 628 px |
File size | 8.4 MB | 118 KB |
Bandwidth wasted | ~8.0 MB | 0 KB |
LCP score | POOR (5.2s) | GOOD (1.4s) |
⚡ The Rule: Never upload an image larger than the size it will actually be displayed at. If your blog content area is 1200px wide, your images only need to be 1200px wide — uploading at 4000px wastes bandwidth and hurts your Core Web Vitals without any visual benefit.
Exact Image Dimensions for Every Blog Use Case
Use these dimensions as your baseline. Your specific theme may display images slightly differently — check your theme’s documentation or measure your content area width using browser DevTools (right-click → Inspect → hover over your content area).
Image Type | Dimensions | Target Size | Format | Priority |
Featured Image | 1200 × 628 px (16:9) | <150 KB | WebP / JPG | Critical |
In-Post Images | 800 × 450 px (16:9) | <100 KB | WebP / JPG | High |
Pinterest Pin | 1000 × 1500 px (2:3) | <500 KB | JPG / PNG | High |
Square Social Post | 1080 × 1080 px (1:1) | <300 KB | JPG / WebP | Medium |
Blog Header Banner | 1600 × 400 px (4:1) | <200 KB | WebP / JPG | Medium |
Favicon / Site Icon | 512 × 512 px (1:1) | <50 KB | PNG | Set once |
Infographic | 800 × 2000 px (tall vertical) | <400 KB | PNG / WebP | Medium |
Image Formats Explained — Which One to Use
Choosing the right format is as important as choosing the right dimensions. The wrong format can double your file size with zero quality benefit — or cause images to display incorrectly across browsers.
Format | Characteristics | Best For |
🏆 WebP — USE THIS FIRST | 25–35% smaller than JPG at same quality. Supports transparency. Supported by all modern browsers. | Best all-around choice for 2026 — use for everything |
📷 JPG | Best for photos with lots of color gradients. No transparency support. | Photos when WebP isn’t an option or for social platform uploads |
🖼️ PNG | Lossless quality with transparency support. Larger file size than WebP or JPG. | Logos, graphics with text, screenshots, transparent backgrounds |
🎬 GIF | Animated images only. WebP animation or short MP4 video are better choices. Avoid GIF for static images. | Animation only — avoid for static images |
✅ 2026 Standard: Use WebP for everything. WordPress has supported native WebP upload and display since version 5.8 (2021). Export as WebP from Canva, Squoosh, or any modern image editor. You’ll get 25–35% smaller files than JPG with no visible quality difference — a straightforward Core Web Vitals win.
File Size Targets — What to Aim For
These are the maximum file sizes to target for each image type. Staying under these thresholds keeps your pages loading fast and your Core Web Vitals scores in the green zone.
Image Type | Max File Size |
Featured image | <150 KB |
In-post images | <100 KB |
Pinterest pin | <500 KB |
Infographic | <400 KB |
Logo / Favicon | <50 KB |
Uncompressed RAW upload | 5–15 MB ❌ Never upload these |
Best Free Tools to Resize & Compress Images
All of these tools are free. The first three require no software installation — they run entirely in your browser. For a workflow that covers both resizing and compression, use Squoosh first.
Tool | Type | Description | Best For |
Squoosh | Browser-based, Free | Google’s own image optimization tool. Drag and drop any image, choose WebP, adjust quality with live side-by-side preview, resize to exact dimensions. No signup, no watermarks, processes locally in your browser. Shows exactly how many KB you’re saving in real time. | Everything — start here |
TinyPNG / TinyJPG | Browser-based, Free (20/mo) | The simplest compression tool — drag up to 20 images at once and download them compressed. No resizing functionality, but excellent compression algorithm. Supports PNG, JPG, and WebP. | Batch compression |
Canva | Browser-based, Free plan | Lets you resize to exact pixel dimensions visually. Export directly as WebP or JPG at your chosen quality level. Best if you’re already designing featured images there. | Design + resize together |
Smush (WP Plugin) | WP Plugin, Free | Automatically compresses images as you upload them to WordPress. Set it up once, forget it. Handles automatic compression and lazy loading. Best paired with resizing in Squoosh first. | WordPress auto-compress |
GIMP | Desktop, Free | Free, open-source desktop image editor. Resize to exact dimensions, export in any format, batch process multiple images. Available for Windows, Mac, and Linux. | Advanced editing |
💡 Recommended Workflow: Squoosh → WordPress. Open Squoosh.app, drag your image in, resize to your target dimensions (e.g., 1200×628 px), switch format to WebP, set quality to 80%, download. Then upload directly to WordPress. Total time: 90 seconds per image. The Smush plugin handles any remaining optimization automatically.
The Complete Image Workflow — Step by Step
Follow this exact process for every image before uploading to your blog. Takes 2–3 minutes per image once you’ve done it a few times.
Part A: Resize and Compress (Before WordPress)
- Know your target dimensions before you start — Check the cheat sheet above. Featured image? 1200×628. In-post image? 800×450. Don’t start resizing until you know exactly what dimensions you’re targeting. Saves redoing it.
- Open Squoosh.app and drag your image in — Go to squoosh.app in your browser. No signup required. Drag your image file directly onto the page. You’ll see a side-by-side comparison editor with your original on the left.
- Resize to your target dimensions — On the right side, click the Resize panel. Enter your target width (e.g., 1200). Keep “Maintain aspect ratio” checked — height adjusts automatically.
- Set format to WebP and quality to 80% — Change the format dropdown to WebP. Set quality to 80. Watch the file size number in the bottom right. Aim for under 150 KB for featured images.
- Fine-tune quality if needed — If the file is still over target, reduce quality to 70 or even 60 and check the preview. For most blog photos, the difference between 80% and 65% quality is invisible to the human eye but the file size difference is significant.
- Download and rename the file — Click the download button. Rename the downloaded file before saving: use descriptive keywords with hyphens — e.g., how-to-write-seo-blog-posts-featured.webp. Never upload with the default Squoosh filename.
Part B: Upload to WordPress Correctly
- Upload via the block editor — In your WordPress post, click the + block button → Image → Upload. Or go to Media Library and drag your file in. Either method works — the Media Library lets you add alt text immediately after uploading.
- Add alt text immediately after upload — In the Media Library, click your newly uploaded image and fill in the Alt Text field on the right. Describe what’s in the image and include your post’s target keyword naturally.
- Set as Featured Image (for your post header) — In the post sidebar → Featured Image → Set featured image. Select your 1200×628 px optimized image. This controls what appears at the top of your post AND what appears in social share previews.
- Enable lazy loading (built into WordPress) — WordPress 5.5+ automatically adds loading="lazy" to images below the fold — meaning images don’t load until the reader scrolls to them. This is automatic, but verify it’s not disabled in your theme settings.
- Verify with PageSpeed Insights after publishing — After publishing, go to pagespeed.web.dev, enter your post URL, and run the mobile test. Check for “Properly size images” or “Serve images in next-gen formats” warnings. If they appear, you still have unoptimized images on that page.
Retina Screens, Responsive Images & WordPress Handling
Modern screens — especially Apple Retina and high-DPI Android displays — have pixel densities 2–3× higher than standard screens. An image that looks crisp at 600px on a standard screen will look blurry at 600px on a Retina screen, because the display is rendering at 1200 or 1800 physical pixels.
The Retina Rule for Bloggers
Upload images at 2× your intended display width to look sharp on Retina screens. If your content area is 800px wide, upload at 1600px wide. But — and this is critical — compress aggressively so the file size stays under your target despite the larger dimensions.
⚠️ Practical Balance: Doubling dimensions for Retina roughly quadruples file size. In practice, the recommended approach for most bloggers is to upload at 1200px wide for featured images (not 2400px) and keep file sizes under 150 KB. This provides a good balance between sharpness and performance — WordPress and modern browsers handle the display scaling.
WordPress Automatic Size Variants
When you upload any image to WordPress, it automatically creates several resized versions:
- Thumbnail — 150 × 150 px (cropped)
- Medium — 300 × 300 px (max)
- Medium Large — 768px wide
- Large — 1024px wide
- Full size — Your uploaded dimensions
WordPress’s built-in responsive images (srcset) automatically serves the right size to each device — a mobile visitor gets the 768px version, a desktop visitor gets the 1200px version. This works automatically as long as you upload at the correct dimensions in the first place.
5 Image Mistakes That Hurt Your Blog Performance
✗ Uploading images straight from camera or stock site: Raw photos from DSLRs or stock sites are typically 3000–6000px wide and 5–20 MB in size. Uploading these directly to WordPress without resizing creates massive files that slow every page they appear on — and WordPress generates 5–10 variants, multiplying the storage impact. Always resize and compress first.
✗ Using PNG for photographs: PNG is lossless — it preserves every pixel perfectly. For photographs with thousands of color gradients, this creates enormous file sizes (5–10× larger than WebP or JPG). PNG should only be used for graphics with transparent backgrounds, logos, screenshots, or images with text. All photographs should be WebP or JPG.
✗ Forgetting to add alt text: Missing alt text is both an SEO problem and an accessibility problem. Google uses alt text to understand what your image shows and connect it to search queries. Screen readers for visually impaired users read alt text aloud. Make adding alt text a non-negotiable step every single upload.
✗ Not specifying image dimensions in HTML: When WordPress inserts images without explicit width and height attributes, the browser doesn’t know how much space to reserve — causing Cumulative Layout Shift (CLS) as images load and push content down. WordPress automatically adds these attributes when you insert images through the block editor, but custom HTML blocks may not.
✗ Ignoring existing unoptimized images: If you’ve been uploading unoptimized images for months, your existing posts are still slow. Use the free Smush plugin’s bulk optimization feature to compress all previously uploaded images in one click. This retroactively fixes the damage and can produce significant page speed improvements across your entire blog.
Image Optimization Checklist
- Resized to correct dimensions (see cheat sheet above)
- Exported as WebP at 80% quality
- File size under target (<150 KB for featured)
- Renamed with descriptive keyword-rich filename
- Uploaded to WordPress Media Library
- Alt text added — describes image + includes keyword
- Set as Featured Image for the post
- Smush plugin installed (auto-compresses on upload)
- No PNG used for photographs
- PageSpeed Insights checked after publishing
Tags: how to resize images for blog, image optimization WordPress, WebP format 2026, Core Web Vitals images, Squoosh tutorial, blog image dimensions, compress images free
About SoftTechBlog Team
The official voice of SoftTechBlog. We are a collective of developers and architects dedicated to breaking down complex software systems, SaaS strategies, and modern web performance for the global developer community.
