To get your images into Google Images, put them in real HTML <img> tags on crawlable pages, give them descriptive file names and alt text, place them near relevant text, and make sure robots.txt doesn't block them. An image sitemap and structured data help Google find and badge them, and Search Console's "Image" search type shows you how they perform.

How does Google find and understand images?

Google finds images the same way it finds pages. Googlebot crawls a page, parses the HTML, and picks up the image URLs in src and srcset. Then it fetches the image files themselves.

To work out what an image shows, Google looks at the image and at everything around it. Its image SEO docs list the signals: alt text, file name, the page title and description, captions, and the text near the image. None of these is magic on its own. Together they give Google a clear, consistent story about what the picture is.

Here's a practical aside. Images are ranked in the context of their page. A great photo on a thin, off-topic page won't do much. A decent photo on a strong page about that exact subject often does fine.

Why does the img tag matter so much?

Google says it plainly: it doesn't index CSS images. If your hero image is set with background-image, it's invisible to Google Images. It also can't carry alt text.

<!-- Indexable -->
<img src="/photos/red-fox-in-snow.jpg"
     alt="Red fox hunting in fresh snow"
     width="1600" height="1067">

<!-- Not indexable as an image -->
<div class="hero" style="background-image:url(/photos/red-fox-in-snow.jpg)"></div>

CSS backgrounds are fine for texture and decoration. For any image you want found, use a real <img> element.

Lazy-loaded images need care too. Native loading="lazy" is fine for Google. Custom JavaScript lazy loaders that keep the real URL in data-src until the user scrolls can hide images from crawlers. Our post on lazy loading without hurting LCP covers the safe patterns.

What file names should images have?

Short and descriptive. Google's own example is that my-new-black-kitten.jpg beats IMG00023.JPG. Use hyphens between words, lowercase letters, and skip filler.

  • Good: cast-iron-skillet-cornbread.jpg
  • Weak: DSC_0412.jpg, image1.png, final-FINAL-v2.webp
  • Too much: best-cheap-cast-iron-skillet-cornbread-recipe-easy-2026.jpg

If you localize your images, Google suggests translating the file names too. Also keep image URLs stable. Renaming images on a big site means Google has to recrawl and reprocess them, so it's worth doing once, not every redesign.

How much does alt text help in Google Images?

A lot, as long as it's honest. Alt text is one of the clearest signals of what an image shows, and it's also what screen reader users hear. Google explicitly warns that keyword stuffing alt attributes can get your site seen as spam.

We have a full post on writing good alt text, including when to use an empty alt="". The short version: describe the image the way you'd describe it to someone on the phone.

Do captions and surrounding text help?

Yes. Google looks at text near the image, and captions are especially useful because people read them. Put the image close to the paragraph that talks about it, not in a sidebar three screens away.

A few habits that pay off:

  • Use <figure> and <figcaption> for images that need explaining.
  • Write a page title and meta description that match what the images show.
  • Use the same image URL everywhere you reuse an image. Google's docs note this lets it use a cached copy instead of fetching duplicates.

Do you still need an image sitemap?

An image sitemap helps Google find images it might otherwise miss, such as images loaded by JavaScript. For a normal site with images in plain HTML, it's nice to have, not required.

The format changed a few years ago. Google removed <image:caption>, <image:title>, <image:geo_location>, and <image:license> from its documentation. What's left is two tags: <image:image> and <image:loc>. Each <url> can list up to 1,000 images.

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://example.com/recipes/cornbread</loc>
    <image:image>
      <image:loc>https://cdn.example.com/cast-iron-skillet-cornbread.jpg</image:loc>
    </image:image>
  </url>
</urlset>

Images can live on a CDN domain. That's fine, as long as that domain isn't blocking Googlebot. If you have old sitemaps with the removed tags, they won't break anything. Google just ignores those tags.

Can robots.txt keep your images out of Google?

Yes, and it happens by accident more often than you'd think. A line like Disallow: /wp-content/uploads/ or Disallow: /assets/ blocks every image in that folder. So does a CDN subdomain with its own robots.txt that disallows everything.

How to check, in order:

  1. Open /robots.txt on your main domain and on every image host or CDN domain you use.
  2. Look for rules that match your image paths, including rules aimed at Googlebot-Image.
  3. Paste an image URL into Search Console's URL Inspection tool, or test it against your robots.txt rules.
  4. Remove the block, then give Google time to recrawl. It isn't instant.

If you do want an image kept out of Google Images, Google documents two ways: a robots.txt rule under User-agent: Googlebot-Image, or a noindex X-Robots-Tag header on the image response itself. A page-level noimageindex rule only covers that one page, so the same image can still show up via other pages that embed it.

Do responsive images affect image SEO?

They help, as long as you keep a proper fallback. Google supports srcset and <picture>. Its docs ask that you always include an <img> with a src as the fallback, since some crawlers may not read srcset.

<picture>
  <source type="image/avif" srcset="/img/fox-800.avif 800w, /img/fox-1600.avif 1600w">
  <img src="/img/fox-1600.jpg"
       srcset="/img/fox-800.jpg 800w, /img/fox-1600.jpg 1600w"
       sizes="(max-width: 800px) 100vw, 800px"
       alt="Red fox hunting in fresh snow"
       width="1600" height="1067">
</picture>

Google Images supports BMP, GIF, JPEG, PNG, WebP, SVG, and AVIF. See our srcset and sizes guide for how to pick widths, and our comparison of WebP, AVIF, JPEG, and PNG for format choices. Page speed matters too, since slow pages are a worse experience whichever search result sent the visitor.

How do you get badges on image results?

Structured data can make your images show up with extra labels in Google Images, such as a product, recipe, or video badge. You don't add anything to the image itself. You add the matching schema to the page, like Product or Recipe, and include the image in it.

Two related signals are worth knowing:

  • Preferred image. Google says you can hint at the page's main image with primaryImageOfPage in structured data or with an og:image meta tag. See our post on og:image sizes.
  • Licensing. Google Images can show a "Licensable" badge if you provide license info through structured data or IPTC photo metadata. Our post on EXIF and IPTC image metadata explains the fields.

What about SafeSearch?

If your site hosts adult content, help Google filter it. Its guidance suggests marking explicit pages with <meta name="rating" content="adult">. If you mix explicit and non-explicit content, Google recommends putting the explicit pages on a separate domain or subdomain. That keeps its systems from treating the whole site as explicit, which is what gets safe images filtered by mistake.

How do you check your Google Images traffic?

  1. Open Search Console and go to Performance (the Search results report).
  2. Click Search type at the top and choose Image.
  3. Look at the Queries and Pages tabs. Pages shows which landing pages got clicks from image results.
  4. Compare date ranges after changes like renaming files or fixing robots.txt. Expect weeks, not days.

Keep in mind that each search type is counted separately. Image traffic won't show up in the default Web view, so if you only ever look at Web, you're missing it.

Common mistakes

  • Hero images as CSS backgrounds. They can't be indexed. Page builders do this by default more often than you'd expect.
  • Blocking the uploads or CDN folder. A leftover robots.txt rule from staging is a classic cause.
  • Camera file names. IMG_4027.jpg says nothing.
  • JavaScript-only image loading. If the real URL only appears after scrolling, Google may never see it.
  • Changing image URLs constantly. Cache-busting with new file names every deploy means Google keeps starting over. Our guide to image caching and CDN headers shows a better way.
  • Relying on old sitemap tags. Captions and titles in a sitemap no longer do anything. Put that text on the page.

Your site icon is a separate search signal from your content images. It's the small mark next to your site name in results. The Google favicon checker shows whether Google can fetch it, and the favicon checker lists every icon your page declares.

TL;DR

Use real <img> tags on relevant pages, with clear file names, honest alt text, and captions or nearby text that describe the image. Don't block images in robots.txt, keep a src fallback for responsive images, and add an image sitemap with just image:loc if Google might miss some images. Then track progress in Search Console with the search type set to Image.

Sources