Corrected on September 17, 2026
The first version of this guide told you to lazy-load images visible on first load, which Google advises against, and said images without alt text are invisible to Google Images. It described ImageObject as powering image carousels (Google uses it for license metadata), referred to a "Page Experience score" that doesn't exist, and claimed ChatGPT and Perplexity check alt text against the pixels, which no vendor documents. The "live audit of 10 guides" had no saved data and contradicted itself in places, so I removed it.
Image SEO gets a lot of generic advice and very little measurement. Most guides repeat the same list: modern formats, descriptive alt text, width and height, lazy loading. Some of it is right, some is outdated, and some goes further than Google's documentation does.
This guide sticks to what's documented. Where something is a rule of thumb rather than a documented rule, I say so.
What Image SEO Actually Is
Image SEO covers everything that helps search engines find, understand and show your images, and everything that keeps images from slowing the page down. That means discoverable markup, descriptive text, sensible file names, efficient formats and a loading setup that doesn't hurt Core Web Vitals.
Google explains its side in one sentence in the image SEO documentation: it "uses alt text along with computer vision algorithms and the contents of the page to understand the subject matter of the image." So alt text is one input among three. Images need to be in the HTML as <img> elements (or <picture> with an <img> fallback) so Google can find them. CSS background images aren't indexed as images.
The 6 Factors That Matter
These six cover most of what you can control. They don't carry equal weight, and Google doesn't publish weights, so treat the order as practical rather than official.
1. Alt text
Alt text describes the image for people who can't see it and gives Google a text version of the content. Google asks for "useful, information-rich content that uses keywords appropriately and is in context of the content of the page."
2. Efficient formats
WebP and AVIF produce smaller files than JPEG at similar visual quality, which speeds up loading. Google Images supports both.
3. LCP image priority
If an image is the LCP element, it shouldn't be lazy-loaded, and fetchpriority="high" helps the browser fetch it earlier. web.dev's documented example is Google Flights, where the LCP dropped from 2.6 to 1.9 seconds with priority hints.
4. Width and height
With width and height attributes (or CSS aspect-ratio), the browser reserves the right space before the image arrives. That prevents the layout from jumping, which is what Cumulative Layout Shift measures. Unsized images are a common cause of CLS.
5. File name
Google's advice is short: file names should be "short, but descriptive". Its own example is my-new-black-kitten.jpg instead of IMG00023.JPG. There's no documented length limit. Hashed file names from build tools aren't a problem as long as alt text and context carry the meaning.
6. Image metadata and structured data
Structured data or IPTC metadata with license information can make an image eligible for the Licensable badge in Google Images. Separately, article, product and recipe markup can reference images. Google doesn't describe either as a ranking factor.
Alt Text: What Google Actually Asks For
Three problems show up again and again: alt text stuffed with keywords ("seo tool dashboard best seo 2026 keyword research"), alt="" on images that carry information, and missing alt attributes on images inserted by templates or CMS blocks that drop them.
Good alt text describes what the image shows, written for someone who can't see it. "GSC dashboard showing clicks rising 38% week over week" is better than "dashboard". "Plumber repairing a kitchen sink trap" is better than "plumber sink". There's no official length. I aim for a short sentence, because that's usually enough to be specific without turning into a caption.
Three cases cover most images. Decorative images, like background shapes or divider icons, get alt="", so screen readers skip them. Images that carry information get a specific description, which naturally includes the page's topic when the image is about it. Complex images like charts or dense screenshots get a short alt plus a fuller explanation in a caption or the text next to them.
On keywords, Google is direct: "Avoid filling alt attributes with keywords (also known as keyword stuffing) as it results in a negative user experience and may cause your site to be seen as spam." Use the topic where it fits the description, and don't repeat the same phrase across every image.
One myth worth dropping: an image without alt text isn't invisible to Google. Google also uses computer vision and page content. Missing alt text still costs you, though. You lose the clearest description you control, and screen reader users get nothing.
Modern Formats: WebP and AVIF
WebP launched in 2010 and supports lossy and lossless compression plus transparency. It typically produces files around a quarter to a third smaller than comparable JPEGs. About 97% of browsers in use support it.
AVIF is newer, from 2019, and usually compresses further, often around half the size of a comparable JPEG. About 95% of browsers support it: Chrome and Firefox, Safari from iOS 16 and fully from macOS Safari 16.4, and Edge since version 121 in January 2024. Encoding AVIF takes noticeably longer than JPEG or WebP, so it's best done at build time or by an image CDN, not on every request.
How much you save depends on the image, so measure your own files rather than trusting a single percentage. The common setup is a <picture> element: AVIF first, WebP second, and a JPEG or PNG in the <img> as fallback. The browser picks the first format it supports and downloads one file.
<picture>
<source srcset="hero.avif" type="image/avif">
<source srcset="hero.webp" type="image/webp">
<img src="hero.jpg" alt="Lumina dashboard showing GSC clicks rising"
width="1200" height="630" fetchpriority="high">
</picture>
You don't always need the markup. Image CDNs can serve WebP or AVIF from the same URL based on what the browser accepts, so a file ending in .jpg may arrive as AVIF. Check the Content-Type in DevTools rather than judging by the file extension.
LCP Image: The Pattern That Works
Largest Contentful Paint measures when the largest element in the first view is rendered. Google's threshold for "good" is 2.5 seconds at the 75th percentile. According to the 2025 Web Almanac, that largest element is an image on about three quarters of mobile pages and even more desktop pages.
Three things help the LCP image. Don't lazy-load it: a lazy-loaded LCP image waits until layout has run, and in web.dev's lab test that added around 270 milliseconds at the median. Add fetchpriority="high": the browser otherwise starts images at low priority and only raises the ones in the viewport after layout. And give it width and height so the layout doesn't shift when it arrives. Dimensions don't make the download start sooner, they only reserve the space.
For other images, the rule is simple. Images visible when the page first loads keep the browser's default eager loading. Only images below the fold get loading="lazy", which is what Google's lazy-loading guidance says, because lazy-loading visible images delays them for no benefit. Use fetchpriority="high" sparingly: if you mark everything as high priority, nothing is.
Image Schema and Structured Data
Two different things get called "image schema", and they do different jobs.
The first is license metadata. With structured data (ImageObject) or IPTC photo metadata, you can state who created an image and under which license it can be used. Google requires contentUrl plus at least one of creator, creditText, copyrightNotice or license. The result can be the Licensable badge in Google Images, which links to the license. Google makes no ranking promise for it. It's worth adding for photographers, stock libraries and publishers who license images, and rarely for a typical blog.
{
"@context": "https://schema.org",
"@type": "ImageObject",
"contentUrl": "https://example.com/photos/harbor.jpg",
"license": "https://example.com/license",
"acquireLicensePage": "https://example.com/how-to-license",
"creditText": "Example Photo Agency",
"creator": {"@type": "Person", "name": "Jane Doe"},
"copyrightNotice": "Jane Doe"
}
The second is the image property inside other structured data. For articles, Google recommends it (a URL or ImageObject), ideally in several aspect ratios such as 16:9, 4:3 and 1:1 with at least 50,000 pixels each. It isn't a requirement for Top Stories, which needs no markup at all. Recipe and product markup also use images for their search features. For a broader overview, see the Schema Markup Guide.
Images and AI Search: What's Known
Much of what's written about images and AI search is speculation. OpenAI, Anthropic and Perplexity don't document how, or whether, images on a page affect which sources get cited. Claims that AI engines compare alt text with the pixels, or rank sources by image file names, have no public source.
What is known: AI crawlers do fetch images. Vercel's December 2024 analysis of its own network found that about 11.5% of ChatGPT's crawler requests and 35% of Claude's were for images. Fetching isn't proof of how the images are used, though. Google's AI features build on Google's own understanding of images, which uses alt text, computer vision and page content.
One point is solid: none of the major AI crawlers from OpenAI, Anthropic or Perplexity executes JavaScript, according to the same Vercel analysis. Images that only get their real src from a JavaScript lazy-loader are invisible to those crawlers. Native loading="lazy" is a plain HTML attribute and doesn't have that problem. Lumina's JS vs No-JS tool shows which images are present in the raw HTML and which only appear after rendering.
The practical advice doesn't change: descriptive alt text, a caption or nearby text that explains the image, and images in the HTML.
The 6 Mistakes Most Sites Make
Most are quick fixes once you know where to look.
1. Large JPEG or PNG files where WebP or AVIF would do
Serving an oversized JPEG when a modern format, or a correctly sized version, would be a fraction of the bytes slows every visit. Next.js and Astro produce WebP out of the box. Hugo, Nuxt Image and Eleventy need explicit configuration, and in Hugo that means a processing step such as .Process "webp", not just loading the resource.
2. Lazy-loading images that are visible on load
Adding loading="lazy" to the hero or to other images in the first view delays them for no benefit. The LCP pattern above shows what to do instead.
3. Empty or missing alt on images that carry information
Templates, Markdown converters and CMS blocks sometimes drop alt text. Check regularly with Lumina's Alt Text Checker and add alt text to every image that isn't decorative.
4. Keyword-stuffed alt text
"seo tool image checker free 2026 best alt text dashboard" doesn't describe anything, and Google says keyword stuffing in alt can make your site look like spam. Describe the image.
5. Missing width and height
Without dimensions, the layout jumps when the image loads. Set width and height to the image's intrinsic dimensions and scale with CSS, or use aspect-ratio.
6. Images far bigger than they're displayed
A 4000 × 3000 pixel photo shown 800 pixels wide carries about 25 times more pixels than needed. Use srcset and sizes so each device downloads a suitable size. A CDN with image resizing does this automatically, and serving images from a CDN over HTTP/2 or HTTP/3 generally helps too.
A 5-Step Image SEO Workflow
Start where the effect on real users is largest: loading behavior and file size first, descriptions second, metadata last.
Run Lumina's Alt Text Checker on your most visited pages. Note images without alt text, oversized files, images without width and height, and lazy loading on images in the first view.
Run Alt Text Checker →Have your build pipeline or image CDN produce WebP and AVIF in several sizes. Use <picture> or content negotiation, and check the Content-Type in the DevTools Network tab.
Find the LCP image on each template. Remove lazy loading from it and add fetchpriority="high". Keep other visible images eager, and lazy-load only images below the fold.
Replace empty, missing or keyword-stuffed alt text with specific descriptions. The Alt Text Checker lists each problem image. Re-check after CMS or template changes.
Re-audit alt text →If you license images, add license metadata for the Licensable badge. For articles, products and recipes, make sure the image property is set. Validate with Lumina's Schema Validator.
FAQ
Where to Start
If you only do one thing this week, find the LCP image on your main templates and check two things: that it isn't lazy-loaded, and that it's served in a sensible size and format. Then run Lumina's PageSpeed tool. The lab result changes right away. Field data in Core Web Vitals follows over the next 28 days.
Then work through the rest of the workflow above. Formats, srcset and alt text on the images that carry information cover most of what image SEO can do for a typical site.
Audit your image SEO now
Lumina's Alt Text Checker scans every image on a page and flags missing or weak alt text, missing dimensions, lazy/eager problems on the LCP image and old formats. Free, no signup.
Run Alt Text Checker →