How to Optimize Images for SEO: The 2026 Step-by-Step Tutorial

How to Optimize Images for SEO: The 2026 Step-by-Step Tutorial

This is a tutorial, not a survey of theory. Every step below is something you actually do — in this exact order — to take a typical image from “decoration the page slows down” to “indexable asset Google rewards.” Most images need 9 of these 10 steps. Run through them once, build a workflow, then it takes about 90 seconds per image going forward.

Worked example throughout: we’ll optimise a real product hero photo — a leather backpack — taken on an iPhone, originally IMG_4827.HEIC, 4032×3024px, 4.8MB. By the end you’ll see exactly what that file looks like, how it’s named, and how it’s described after a proper SEO pass.

What “optimised for SEO” actually means in 2026

An image is SEO-optimised when Google can: (1) find the image (it’s in your sitemap, properly linked from a page), (2) understand what the image shows (alt text, filename, surrounding context), (3) verify the image won’t hurt user experience (file size, format, lazy loading, dimensions specified), and (4) attribute the image to your domain (IPTC copyright, structured data). Skip any of these and you’re leaving ranking signals on the table.

Here’s the order of operations — Step 1 has the highest impact, Step 10 the lowest. The numbering matters; some steps depend on earlier ones being done correctly.

Step 1: Rename the file before you upload it

This is the single most-skipped step in image SEO and the one with the biggest payoff. Google reads the URL of every image file as a ranking signal. IMG_4827.HEIC tells Google nothing. brown-leather-backpack-canvas-strap.jpg tells Google exactly what the image shows.

Rules for SEO-optimised filenames:

  • Use hyphens between words, never underscores or spaces. Google treats hyphens as word separators; underscores connect words into one token.
  • Keep it 4–8 words. Long enough to be specific, short enough to read.
  • Include your target keyword, but front-load the descriptor. brown-leather-backpack.jpg, not backpack-brown-leather.jpg.
  • Lowercase only. URLs are case-sensitive on most servers; lowercase prevents 404s from typos.
  • No special characters — no parentheses, ampersands, accented letters, or punctuation. They get URL-encoded into ugly strings.
  • Don’t repeat keywords. backpack-leather-backpack-bag.jpg is keyword stuffing. Google penalises it.

Worked example: IMG_4827.HEICbrown-leather-backpack-canvas-strap.jpg

Step 2: Resize to the right pixel dimensions

iPhones and modern cameras shoot at 4000+px wide. Your website displays images at 1200px wide max. Uploading the camera original means visitors download 10× more pixel data than they’ll ever see. Resize before uploading.

Target dimensions by use case (these are 2026 best practice, accounting for retina displays):

Image type Resize to Why
Hero / featured image (blog post) 1200×630px Matches Open Graph standard; Google Discover requires 1200px minimum
Body image (inline) 1024px wide max, proportional height Wider than container = wasted bytes
Product image (e-commerce) 2000×2000px (allows zoom) Google Shopping rewards high-res; users zoom on product detail
Thumbnail / icon 400×400px 2× the displayed size for retina, no more
Logo / SVG SVG or 500px wide PNG SVG scales infinitely without quality loss

Tools: macOS Preview (Tools → Adjust Size), Windows Photos (Resize), Squoosh.app (free, browser-based, also handles compression). For batch resizing: ImageMagick (mogrify -resize 1200x backpack.jpg) or Photoshop’s Image Processor script.

Step 3: Convert to WebP (or AVIF if you’re starting fresh)

WebP delivers 25–35% smaller file sizes than JPEG at equivalent visual quality. AVIF goes further (40–50% smaller) but with marginally less universal browser support — fine in 2026 with a JPEG fallback. Both are supported natively in WordPress 5.8+.

Convert at the moment of upload, not after. Plugins that convert “after upload” force a separate process to run on every image — slower, more failure-prone, and they often skip already-uploaded images.

The simplest workflow: drag your JPEG into Squoosh, choose WebP at quality 80%, save. Or run cwebp -q 80 backpack.jpg -o backpack.webp on the command line. Compression at quality 80 is the sweet spot — visually indistinguishable from the original to most viewers, but ~30% smaller.

Worked example: brown-leather-backpack-canvas-strap.jpg (3.2MB, JPEG) → brown-leather-backpack-canvas-strap.webp (380KB, WebP). 88% smaller, same visual quality.

Step 4: Compress to the target file size

Even after format conversion, you may need additional compression. The 2026 file-size targets:

Tools that compress without quality loss: ImageOptim (Mac), TinyPNG (web), Squoosh.app. For WordPress, plugins like ShortPixel, Imagify, or EWWW will do this on existing libraries automatically.

Step 5: Embed IPTC metadata (copyright + caption)

IPTC metadata travels with the image file. Google reads two IPTC fields and uses them in image search results: the copyright field (displays as a “credit” link in Google Images) and the caption/description field. Setting these takes 30 seconds and they earn Google Images credit attribution back to your domain.

Using ExifTool from the command line:

# Set copyright + creator + caption on a single image
exiftool -IPTC:Copyright="© 2026 YourBrand" 
         -IPTC:By-line="YourBrand" 
         -IPTC:Caption-Abstract="Brown leather backpack with canvas straps, men's everyday carry bag" 
         brown-leather-backpack-canvas-strap.webp

# Apply same template to all images in a folder
exiftool -IPTC:Copyright="© 2026 YourBrand" 
         -IPTC:By-line="YourBrand" 
         /path/to/images/*.webp

If you don’t use the command line: Adobe Lightroom and Bridge both have metadata template panels. Set a default IPTC template once and apply it on every export.

Step 6: Strip GPS coordinates and camera EXIF (privacy + speed)

Phone photos embed your exact GPS coordinates by default. For a personal blog photo of your home or office, that’s a privacy risk. For SEO, camera EXIF data (model, aperture, ISO) adds 5–15KB per image with zero ranking benefit — Google has stated repeatedly that camera metadata is not used for ranking.

Strip camera EXIF and GPS while preserving IPTC copyright:

exiftool -all= --iptc:all --xmp:all brown-leather-backpack-canvas-strap.webp

This removes everything except IPTC and XMP metadata (which contain your copyright and caption from Step 5).

Step 7: Upload and write the alt text correctly

Alt text is the highest-impact ranking signal in image SEO. It’s the text Google reads to understand what the image shows, and it’s also what screen readers announce to visually impaired users. Both audiences benefit from the same kind of description: specific, contextual, and natural.

The formula that works: [what the image shows] + [relevant context for the page topic].

Bad alt text (avoid) Good alt text (use this) Why
“backpack” “Brown leather backpack with canvas straps, men’s everyday carry bag” Specific descriptors + product context
“backpack leather backpack bag brown” “Brown leather backpack on wooden table, lifestyle product photography” Reads naturally; no keyword stuffing
“image” “” (empty alt for purely decorative images) Empty is correct for decorative; missing alt makes Google guess
“IMG_4827” “Backpack worn over shoulder, real-world use shot” Filename != description

Length: typically 80–125 characters. Long enough to be specific, short enough that screen readers don’t drone. Some accessibility guidelines suggest hard limits — there are technically none in HTML, but Google’s quality team flags suspiciously long alt text (300+ characters) as potential keyword stuffing.

For sites with hundreds of images that need alt text added retroactively, manual writing is impractical. ImageSEO reads each image and generates contextually-tuned alt text in your site language — typically processing thousands of images in under an hour.

Step 8: Set width/height attributes and lazy-loading correctly

Three HTML attributes that change how Google scores your image:

  • width and height — must be explicit and match the image’s actual pixel dimensions. Prevents Cumulative Layout Shift (CLS), a Core Web Vitals factor.
  • loading="lazy" — defers loading until the user scrolls near the image. WordPress 5.5+ adds this automatically to all non-featured images.
  • fetchpriority="high" — for your hero image only. Tells the browser to download it first. Improves Largest Contentful Paint (LCP).

Correct HTML for a hero image:

<img src="brown-leather-backpack-canvas-strap.webp"
     alt="Brown leather backpack with canvas straps, men's everyday carry bag"
     width="1200"
     height="630"
     loading="eager"
     fetchpriority="high">

Correct HTML for a body image (below the fold):

<img src="backpack-detail-stitching.webp"
     alt="Close-up of leather backpack stitching and brass hardware"
     width="1024"
     height="683"
     loading="lazy">

Common mistake: lazy-loading the hero image. This drastically worsens LCP. The hero must be eager + fetchpriority high; everything else can be lazy.

Step 9: Add the image to your XML image sitemap

Google can only rank images it has discovered and indexed. The XML image sitemap explicitly tells Google: “here are all the image URLs on my site, here are the pages they live on, here are their alt texts.” Without it, Google has to discover images through page crawling — slower and incomplete for large sites.

Setup in 60 seconds:

  • RankMath: Sitemap → Sitemap Index → toggle on “Include Images”. Sitemap is automatically rebuilt.
  • Yoast SEO: SEO → XML Sitemaps → enabled by default; verify Images is included under “User sitemap”.
  • Submit to Google: Google Search Console → Sitemaps → enter https://yourdomain.com/sitemap_index.xml → Submit.

Within 7–14 days check Search Console → Coverage → Indexed pages. The image count under “Discovered” should rise to match your library. If it doesn’t, Google can’t read your sitemap — check for crawl errors.

Step 10: Add ImageObject schema for AI search visibility

This step is increasingly important and most sites skip it entirely. ImageObject is structured data markup that gives Google (and increasingly ChatGPT, Claude, and Perplexity) machine-readable details about an image: who created it, what license it’s under, what it represents.

Pages with proper ImageObject schema are cited 4× more often in AI-generated answers (per Anthropic’s published guidance on Claude’s image attribution behaviour). For e-commerce, ImageObject is also part of the Product schema that drives Google Shopping rich results.

The minimum useful ImageObject schema, embedded in the page where the image appears:

{
  "@context": "https://schema.org",
  "@type": "ImageObject",
  "contentUrl": "https://yourdomain.com/wp-content/uploads/2026/04/brown-leather-backpack-canvas-strap.webp",
  "width": 1200,
  "height": 630,
  "caption": "Brown leather backpack with canvas straps, men's everyday carry bag",
  "creator": {"@type":"Person","name":"YourBrand"},
  "copyrightNotice": "© 2026 YourBrand",
  "license": "https://yourdomain.com/image-license/"
}

RankMath and ImageSEO both add ImageObject schema automatically when properly configured. For pages where you’ve manually added it, validate at Google’s Rich Results Test before publishing.

The complete before-and-after of one image

Property Before (raw upload) After (full SEO pass)
Filename IMG_4827.HEIC brown-leather-backpack-canvas-strap.webp
Format HEIC (Apple-only) WebP (universal)
Dimensions 4032×3024px 1200×900px
File size 4.8 MB 92 KB
Alt text (empty) “Brown leather backpack with canvas straps, men’s everyday carry bag”
IPTC copyright (none) © 2026 YourBrand
EXIF GPS 40.7128, -74.0060 (your home) Stripped
HTML attributes <img src> only width, height, loading, fetchpriority all set
In sitemap No Yes (image XML sitemap)
Schema None ImageObject + (if e-commerce) Product

That image now: loads 50× faster, ranks for Google Image searches, displays correctly in social shares, won’t expose your address, and gets cited by AI search. Total time invested per image: 90 seconds once you have a workflow.

Optimising images that are already on your site (the retroactive playbook)

The 10 steps above describe how to handle images going forward. For images already uploaded, the math gets harder. A typical 5-year-old WordPress site has 800–3,000 images, most without alt text or proper filenames. Doing this manually is unrealistic.

The retroactive playbook in priority order:

How to verify your image SEO is actually working

Three places to check measurable impact, ordered from fastest to slowest signals:

  • Core Web Vitals (Search Console → Experience). Compression and format changes show up in CWV data within 1–2 weeks because they’re measured live by Chrome. LCP scores should improve immediately.
  • Search Console → Performance → Search type: Image. Image search impressions rise first (2–4 weeks as Google recrawls), clicks follow.
  • Page-level organic traffic. 60–90 days post-optimisation, pages that previously had zero alt text typically see 10–25% organic traffic gain — this is the cumulative effect of image signals reinforcing the page’s overall topical relevance.

The image SEO mistakes this tutorial fixes

Mistake What it costs Step that fixes it
Camera-original filenames (IMG_xxxx) Zero filename ranking signal Step 1
Uploading 4MB+ originals Poor LCP, ranking penalty Steps 2–4
JPEGs where WebP would do ~30% larger files for no benefit Step 3
No copyright IPTC No Google Images credit attribution Step 5
GPS coordinates leaking from phone uploads Privacy risk + bloat Step 6
Empty or generic alt text Invisibility in Google Images Step 7
Missing width/height attributes High CLS, poor Core Web Vitals Step 8
Lazy-loading the hero image Drastically worsens LCP Step 8
No image sitemap Google may never index your images Step 9
No ImageObject schema Cited 4× less in AI search answers Step 10

Frequently asked questions

How long does it take to optimise images for SEO?

For a single new image: about 90 seconds once you have a workflow set up. For a retroactive pass on an existing 1,000-image library: 30 minutes if you use a plugin like ImageSEO that handles alt text, format conversion, and sitemap updates automatically; 4–6 hours manually if you focus on the top 50–100 pages and let plugins handle the rest.

Do I need to do all 10 steps for every image?

Steps 1–4 and 7–9 are non-negotiable for every image. Steps 5 and 6 (IPTC and EXIF stripping) matter most for hero images, product images, and original photography you want credited. Step 10 (ImageObject schema) is essential for product pages and AI-search visibility but optional for casual blog images.

How do I make images SEO-friendly in WordPress specifically?

WordPress handles a lot automatically once you’ve configured it correctly: lazy-loading (5.5+), WebP support (5.8+), automatic image sitemap (via RankMath or Yoast), explicit width/height (Gutenberg sets these). What WordPress doesn’t do for you: rename files (you must do this before upload), write alt text (you do this in the media library, or use a plugin that auto-generates), or add ImageObject schema (configure in your SEO plugin).

What’s the fastest way to make images SEO-friendly on a large existing site?

Three changes that move the needle in under an hour: (1) install a compression plugin that bulk-converts everything to WebP, (2) install a tool that bulk-generates alt text on images that are missing it, (3) enable image sitemap in your SEO plugin and resubmit to Search Console. The combined impact on a typical 1,000-image WordPress site: LCP improvement within 2 weeks, image impressions up within 30 days, organic traffic measurable improvement at 60–90 days.

Does image search optimization help my regular Google rankings, or only Google Images?

Both. Image signals (alt text, filename, schema) feed into Google’s understanding of the entire page. Pages with well-optimised images consistently score higher for relevance on the underlying topic. Image SEO also affects regular rankings via Core Web Vitals (image performance is a major LCP factor) and engagement signals (relevant images increase dwell time). Google has stated explicitly that alt text is “used to determine the best result for a user’s query” — that includes web results, not just image results.

What image format is best for SEO in 2026?

WebP for most cases — supported in 97%+ of browsers, smaller than JPEG, natively handled by WordPress. AVIF is better compression but with marginally less support — fine if you serve a JPEG or WebP fallback via the <picture> element. SVG for logos, icons, and simple illustrations. Never PNG for photographs. JPEG only as a legacy fallback.

Related guides

Our SEO Tool will grow your traffic

Why have you neglected images search engine optimization for so long ?

Try it for free
\n