Site search

Search IndexLane

Type at least two characters to search.

    Technical note

    Image SEO: check URLs, lazy loading, and CDN access

    If important images are missing from search, check their public URLs, image markup, CDN access, and format handling before rewriting alt text.

    By NikoPublished September 24, 2026Read 4 min

    An image needs a public, stable URL and crawlable markup before Google can consider it for image search. If your product images are missing, check whether Google can fetch them and find their URLs on the page. Alt text cannot fix a blocked CDN or an image URL that appears only after someone scrolls.

    Google's image SEO guidance covers supported formats, standard image elements, and a fallback img src. Start with those checks, then examine responsive variants, lazy loading, and sitemaps.

    Keep image URLs stable

    Image CDNs (Cloudflare Images, Imgix, Cloudinary, Fastly Image Optimizer) transform images on the fly. If templates generate arbitrary width, quality, crop, and signature combinations, crawlers can discover a noisy set of URLs for the same source image.

    Keep transformations deterministic. Use one stable fallback URL in src, a bounded set of stable responsive variants in srcset, and the same URLs whenever the image is reused. Verify the CDN hostname in Search Console where practical and make sure its robots and access rules allow Googlebot-Image.

    <img
        src="https://cdn.example.com/products/widget-800.webp"
        srcset="https://cdn.example.com/products/widget-400.webp 400w,
                https://cdn.example.com/products/widget-800.webp 800w,
                https://cdn.example.com/products/widget-1200.webp 1200w"
        sizes="(max-width: 640px) 100vw, 800px"
        alt="Blue widget viewed from the front"
    >
    

    Check the format returned by the CDN

    Do not hard-code assumptions about a crawler's current Accept header. Let the CDN negotiate a supported format and return the correct Content-Type and Vary: Accept behavior, or use <picture> with an ordinary img src fallback:

    <picture>
        <source type="image/avif" srcset="/images/widget.avif">
        <source type="image/webp" srcset="/images/widget.webp">
        <img src="/images/widget.jpg" alt="Blue widget viewed from the front">
    </picture>
    

    Google Search supports common formats including JPEG, PNG, WebP, SVG, and AVIF. Correct negotiation improves delivery, but a particular format does not guarantee indexation.

    Keep lazy-loaded images discoverable

    Native loading="lazy" is a sound performance tool. The crawl problem appears when custom JavaScript waits for a click or scroll before it even adds the image URL to the rendered HTML. Keep relevant URLs in img src or srcset, and use eager loading only for images needed immediately. The Next.js Image reference explains loading and preload options for each version. This example loads the main image eagerly and leaves the rest lazy:

    // Next.js Image component with explicit loading behaviour
    import Image from 'next/image';
    
    export default function ProductGallery({ product }) {
      return (
        <div>
          <Image
            src={product.images[0].url}
            alt={product.name}
            loading="eager"
            width={800}
            height={600}
          />
    
          {/* Non-critical images: lazy */}
          {product.images.slice(1).map(img => (
            <Image
              key={img.id}
              src={img.url}
              alt={img.alt}
              loading="lazy"
              width={400}
              height={300}
            />
          ))}
        </div>
      );
    }
    

    Match structured data to the visible image

    Use image properties supported by the page's actual structured-data type. A product can expose its product images, while a page can identify a preferred representative image with primaryImageOfPage:

    {
      "@context": "https://schema.org",
      "@type": "WebPage",
      "url": "https://example.com/products/widget",
      "primaryImageOfPage": "https://cdn.example.com/products/widget-1200.webp"
    }
    

    Structured data should match visible images and stable public URLs. It supplements crawlable HTML; it does not replace the img element.

    Investigate missing images

    Do not treat scraping a Google Images results page as a stable indexation API. Monitor Googlebot-Image access and errors in CDN logs, keep the CDN property visible in Search Console, and use URL Inspection or rendered-page checks to confirm that important image URLs remain discoverable. If a critical image disappears, check for URL churn, robots changes, access errors, missing src markup, and sitemap drift.

    Add an image sitemap where it helps

    Googlebot discovers most images through page content, but image sitemap extensions can expose images that are otherwise harder to find:

    <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/products/widget</loc>
        <image:image>
          <image:loc>https://cdn.example.com/products/widget-1200.webp</image:loc>
        </image:image>
      </url>
    </urlset>
    

    The image extension can live in an existing sitemap or a dedicated one. It is particularly useful for images that normal crawling might not discover. Keep landing-page and image URLs public, stable, and aligned with the URLs emitted in HTML. For decorative images, use an empty alt attribute rather than manufacturing descriptive text.

    Related notes

    Technical SEO audit cost: what should you get for the price?

    What affects the cost of a technical SEO audit, what the report should contain, and how to agree which fixes and checks are included.

    Read article →

    WordPress SEO checks after a plugin or theme update

    Check canonicals, robots tags, redirects, and cache behaviour after a WordPress update. Compare affected templates with pages that still work.

    Read article →