Images are the most commonly mishandled element on new WordPress sites. People grab a photo, upload it, and move on — and it’s understandable, because getting the page published feels like the priority. But unoptimised images affect page speed, accessibility, and how search engines index your content. On sites with a lot of images, these issues compound quickly.
Image SEO isn’t about tricks. It’s about making sure the images you already have are named correctly, described accurately, sized appropriately, and served efficiently. Most of this takes a few minutes per image and doesn’t require any specialist knowledge.
This guide covers every practical aspect of image optimisation for WordPress — from filenames and alt text through to compression, file formats, and how images affect your Core Web Vitals scores. If you’re building a new site or auditing an existing one, working through this list will put you in better shape than the majority of WordPress sites out there.
If you’re still deciding which images to use across your site, how to choose website images and visuals for a new WordPress website covers the style, source, and selection decisions that come before optimisation.
Quick Answer
To optimise images for SEO in WordPress: use descriptive, keyword-relevant filenames before uploading; write accurate alt text for every image; compress images to reduce file size without visible quality loss; use WebP format where possible; and size images to the dimensions they’ll actually display at. These five steps cover the majority of image SEO on most WordPress sites.
Why Image SEO Matters
Images affect your site in three distinct ways. First, they’re indexed by Google and can appear in Google Images search, which drives meaningful traffic to some sites — particularly those in visual niches like food, travel, design, and ecommerce. Second, oversized or uncompressed images are one of the most common causes of slow page load times, which affects both user experience and Core Web Vitals scores. Third, alt text and filenames provide context that helps search engines understand what a page is about — not as a major ranking factor, but as part of a well-structured page.
Google’s image search guidelines are clear that descriptive filenames and alt text help images appear in relevant searches. Getting these basics right also improves accessibility for screen reader users — which is increasingly part of the broader SEO conversation.
Step 1: Rename Image Files Before Uploading
Whatever name a file has when you upload it becomes part of its URL in your media library. WordPress doesn’t rename files on upload. So if you upload IMG_4837.jpg, the URL will contain IMG_4837.jpg — which tells search engines nothing about what the image shows.
Rename image files on your computer before uploading them to WordPress. Use lowercase letters, hyphens between words, and describe what the image actually shows. For example:
- Bad:
IMG_4837.jpg,screenshot1.png,final-FINAL-v2.jpg - Good:
wordpress-block-editor-paragraph-block.png,woocommerce-product-settings-screen.jpg
Keep filenames descriptive but concise. Three to six words is usually enough. Don’t stuff keywords — describe what’s actually in the image.
Step 2: Write Alt Text for Every Image
Alt text is the text that appears in place of an image when it can’t load, and is read aloud by screen readers. It’s also used by search engines to understand what an image shows.
In WordPress, you add alt text when inserting an image in the block editor — look for the Alt Text field in the right-hand panel when an image block is selected. You can also set it retrospectively in the Media Library by selecting an image and editing the Alternative Text field.
Good alt text describes the image accurately and concisely. It should read naturally as a sentence or short phrase. A few guidelines:
- Describe what’s actually in the image, not what you want to rank for
- Include a relevant keyword if it fits naturally — don’t force it
- Keep it under 125 characters
- Don’t start with “Image of” or “Photo of” — screen readers already announce that it’s an image
- Leave the alt text empty only for genuinely decorative images that add no informational value
In my experience, the most common mistake is either leaving alt text blank entirely or writing the same keyword phrase for every image on a page. Both hurt more than they help.
Step 3: Compress Images Before or After Uploading
Image file size is one of the biggest contributors to slow WordPress pages. A single uncompressed photograph can easily be 4–6MB. Compressed to web-appropriate quality, the same image might be 150–300KB with no visible difference to the human eye.
There are two ways to handle compression in WordPress:
- Before uploading: Use a tool like Squoosh (squoosh.app) or ImageOptim to compress images on your computer first. This gives you the most control and keeps your media library clean from the start.
- After uploading: Install a plugin like Imagify, ShortPixel, or Smush. These compress images automatically on upload and can bulk-compress your existing media library.
Either approach works. I tend to prefer compressing before upload for posts where I’m being careful about quality, and using a plugin for bulk operations on larger sites. The important thing is that compression happens — leaving images uncompressed is one of the most common and avoidable performance problems on WordPress sites.
Step 4: Use the Right File Format
The file format affects both image quality and file size. For most WordPress images, the choice comes down to three formats:
- WebP — The best all-round option for photographs and most graphics. WebP files are significantly smaller than equivalent JPEG or PNG files at the same visual quality. All major browsers support it. If you’re not already using WebP, it’s worth switching — a plugin or your caching tool can handle conversion automatically.
- JPEG — Good for photographs when WebP isn’t in use. Supports lossy compression well. Not ideal for images with text or sharp edges.
- PNG — Best for images with transparency, logos, and screenshots with sharp text. PNG files tend to be larger than JPEG, so use it only where transparency is genuinely needed.
If you’re on a newer WordPress installation with a performance-focused caching plugin, WebP conversion may already be happening automatically. If not, converting your images to WebP in WordPress is a straightforward process that can make a meaningful difference to load times.
Step 5: Size Images to Their Display Dimensions
Uploading a 4000×3000px image when it displays at 800×600px forces the browser to download far more data than it needs. The browser resizes it visually, but the full file still loads.
Before uploading, resize images to roughly the dimensions they’ll display at. For a standard blog post, featured images typically display at 1200px wide at most. In-content images are usually 700–900px wide depending on your theme’s content column width. Check your theme’s documentation or inspect the rendered width in browser developer tools if you’re unsure.
WordPress also generates multiple sizes from every uploaded image (thumbnail, medium, large, and full). These are used in different contexts across your theme and plugins. As long as your uploaded image is large enough to cover the largest display size needed, WordPress handles the rest.
Step 6: Optimise Featured Images
Featured images appear in archive pages, social sharing previews, and often at the top of posts. They’re usually the largest and most-loaded image on any given page, which makes them worth extra attention.
For featured images specifically: set a descriptive filename and alt text, compress well, and use dimensions that match your theme’s expected featured image size. Most themes work well with a 1200×628px or 1200×675px featured image — wide enough for social previews and correctly proportioned for blog archives.
The featured image is also typically the Largest Contentful Paint (LCP) element on a post page. That means it’s the image the browser must load quickly to achieve a good LCP score. Keeping it compressed and correctly sized has a direct impact on your Core Web Vitals. For a broader look at what drives these scores, the guide on improving WordPress speed and mobile performance covers the full picture.
Step 7: Enable Lazy Loading for Offscreen Images
WordPress has applied the loading="lazy" attribute to images natively since version 5.5, which tells the browser to defer loading images that are below the visible viewport. This reduces the amount of data downloaded on initial page load, which improves both perceived speed and Core Web Vitals scores.
For most WordPress sites, native lazy loading is already active. However, it doesn’t cover every scenario — iframes and images inserted outside standard WordPress functions may not have the attribute applied. Setting up lazy loading in WordPress correctly explains how to verify it’s working and how to extend coverage using a caching plugin or the Performance Lab plugin.
Practical Tips
- Batch rename before a new content session. Get into the habit of renaming image files before you start writing a post, so they’re ready to upload with correct names from the start.
- Use consistent naming conventions. Decide on a format — topic, sub-topic, descriptor — and stick to it. This makes your media library easier to navigate as it grows.
- Add captions where they add value. Captions aren’t a major SEO factor, but they’re read more often than most body text. Use them to add useful context rather than just repeating the alt text.
- Don’t use images as text. If important content is embedded in an image rather than written as HTML, search engines can’t read it and screen readers can’t access it.
Common Mistakes
- Uploading raw camera files. A DSLR photo straight from camera can be 20MB+. Always compress and resize before uploading.
- Leaving alt text blank on meaningful images. This is both an accessibility problem and a missed SEO signal.
- Using the same alt text on multiple images. Each image should have alt text that accurately describes that specific image.
- Not auditing your existing library. Most sites have a backlog of unoptimised images already uploaded. Running a bulk compression plugin on your existing media can recover significant page speed without touching any content.
When to Use a Dedicated Image SEO Plugin
Most of the image SEO work described here doesn’t require a plugin — it’s about habits and process. That said, plugins are genuinely useful for bulk operations. If you have hundreds of images already uploaded without compression, a tool like ShortPixel or Imagify can process them all in one go.
For ongoing new uploads, the simplest approach is to compress images before uploading and get filenames and alt text right from the start. That eliminates the backlog problem going forward and keeps your media library tidy. Pair this with the basic SEO setup for your WordPress site and your images will be working alongside the rest of your on-page optimisation rather than against it.
One area that often gets overlooked in image optimisation is the featured image — the image WordPress assigns to each post and page that controls how content appears in blog archives, social shares, and search previews. Getting this set up correctly for every post is covered in the guide on how to add featured images in WordPress.
If you’re clearing a backlog of images without descriptions, using AI to write alt text can speed up the review considerably — just make sure every generated description gets checked against the image before it’s saved.
Conclusion
Rename files before uploading, write accurate alt text, and compress every image. Those three habits, applied consistently, address the majority of image SEO problems on WordPress sites. Add WebP conversion and correct sizing and you’ve covered the full picture. Start with your most-visited pages and work outward from there — the homepage and top posts are where the impact will be felt first.

Etienne Basson works with website systems, SEO-driven site architecture, and technical implementation. He writes practical guides on building, structuring, and optimizing websites for long-term growth.