What does Google say about SEO? /
Quick SEO Quiz

Test your SEO knowledge in 5 questions

Less than a minute. Find out how much you really know about Google search.

🕒 ~1 min 🎯 5 questions

Official statement

Googlebot may not always index images loaded lazily. To ensure their indexing, it is advisable to use the noscript tag or integrate structured data to reference the images.
33:03
🎥 Source video

Extracted from a Google Search Central video

⏱ 39:17 💬 EN 📅 10/05/2018 ✂ 8 statements
Watch on YouTube (33:03) →
Other statements from this video 7
  1. 10:06 Pourquoi Google ignore-t-il vos liens sans attribut HREF ?
  2. 13:32 Pourquoi Googlebot indexe-t-il votre JavaScript en deux temps et comment cela impacte-t-il votre SEO ?
  3. 19:57 Le rendu hybride est-il vraiment la seule solution pour indexer vos pages JavaScript ?
  4. 21:40 Le rendu dynamique est-il vraiment la solution pour indexer vos pages JavaScript ?
  5. 22:42 Puppeteer et Rendertron : faut-il vraiment les utiliser pour rendre son JavaScript crawlable ?
  6. 25:44 Googlebot est-il vraiment bloqué sur Chrome 41 pour JavaScript ?
  7. 30:06 Faut-il vraiment tester la version mobile de chaque page pour éviter les pénalités d'indexation ?
📅
Official statement from (8 years ago)
TL;DR

Googlebot doesn’t always index images loaded with native lazy loading or via JavaScript. Mueller recommends using an alternative noscript tag or structured data to ensure discovery by the crawler. For e-commerce or editorial sites relying on Google Images, this statement creates a delicate balance between user performance and SEO visibility.

What you need to understand

Why does Googlebot miss some images loaded lazily?

Lazy loading defers the loading of an image until it is near the user's viewport. This technique boosts Core Web Vitals by reducing the initial page weight.

Googlebot doesn't always simulate infinite scrolling during crawling. When an image relies on a JavaScript scroll or intersection observe event, the bot may leave the page before the script triggers the loading. The result: the image URL never appears in the DOM analyzed by the crawler, and the image is never indexed.

What does the noscript tag really mean in this context?

A <noscript> tag contains a fallback version of the <img> that displays only if JavaScript is disabled. Googlebot, even if it executes JavaScript, can parse the raw HTML before JS execution.

By placing an image in <noscript>, you ensure that Googlebot sees the URL even if the JS lazy-load fails. But be careful: this creates a duplication in the client-side DOM, with the risk of loading the same resource twice if the implementation is sloppy. Some modern frameworks completely ignore <noscript> on the client side, complicating the implementation.

Are structured data a real alternative?

Mueller mentions structured data to reference images directly in JSON-LD. A schema.org type like Product, Article, or ImageObject can explicitly list image URLs in the image or contentUrl properties.

This approach works because Googlebot parses JSON-LD independently of the visual rendering of the page. Even if the image never appears in the visible DOM, Google knows it exists and can index it for Google Images. The problem? It requires maintaining a strict mapping between displayed images and those declared in the schema, with a risk of discrepancy during editorial updates.

  • Googlebot does not always execute the scrolling necessary to trigger images lazily loaded via JavaScript.
  • The <noscript> tag provides a parsable fallback URL in the raw HTML, but can create duplicates on the client side.
  • JSON-LD structured data allows declaring images outside the visible DOM but requires rigorous maintenance.
  • Native HTML lazy loading (loading="lazy") is better supported by Googlebot than third-party JS solutions.
  • Highly visual sites (e-commerce, editorial, galleries) must balance LCP performance and Google Images indexing.

SEO Expert opinion

Is this recommendation consistent with on-the-ground observations?

Yes, partially. Tests show that Googlebot correctly indexes images with the HTML5 attribute loading="lazy" since late 2020. The issue focuses on legacy JS libraries (lozad.js, lazysizes, etc.) and custom implementations using IntersectionObserver.

Some Search Console audits reveal sharp drops in Google Images traffic after migrating to a poorly configured JS framework. Yet in other cases, thousands of JS lazy-loaded images are indexed without issue. The key variable? The JS execution timing during crawling. If your server responds slowly or if Googlebot allocates little rendering budget to your page, the lazy load may miss.

What nuances should be added to this statement?

[To be verified] Mueller's recommendation is several years old. Since then, Googlebot has improved in executing JS and natively supports loading="lazy". However, Mueller continues to advise <noscript>, suggesting that Google has not fully resolved the issue on the crawler side.

The real concern: Google guarantees nothing. Even with native loading="lazy", some images may never appear in Google Images if the crawl is interrupted too soon. Sites with thousands of product images cannot afford this risk. The result: many revert to eager loading for critical images (hero, initial product listings) and only lazy-load the bottom of the page.

When does this rule not really apply?

If you don’t care about Google Images as a traffic source, this statement is irrelevant. For a B2B SaaS site with little visual content, image indexing is not a priority. Lazy loading can be fully embraced without SEO concerns.

Another case: decorative, UI, or purely functional images (icons, buttons) carry no SEO value. They can be lazy-loaded without <noscript>. In contrast, for an editorial media that derives 30% of its traffic from Google Images, every photo must be indexable, requiring a much more conservative strategy.

Be careful: Rendering tests in Search Console do not always reflect the actual behavior of Googlebot in production. An image visible in the inspection tool may never be indexed in Google Images. Checking actual indexing through a site: search or Google Images directly remains essential.

Practical impact and recommendations

What should be done concretely to secure indexing?

Start with an audit of critical images: products, editorial visuals, infographics. If they generate organic traffic, they need to be indexable without friction. Prefer loading="lazy" native HTML5 over a JS library unless advanced needs arise.

For images already lazy-loaded in JS, add a <noscript> tag with a complete <img src="..." />. Place it right after the lazy-loaded element. Test the client-side rendering to avoid having the image load twice (some browsers ignore <noscript> even with JS active, others do not).

Are structured data sufficient to replace noscript?

Yes, for key images you absolutely want indexed. A Product schema with "image": ["url1.jpg", "url2.jpg"] explicitly declares the product visuals. Google can index them even if they never appear in the visible DOM.

But this approach has its limits. If you have 50 images in a blog post, listing all of them in a Article schema burdens the JSON-LD without guaranteeing that all will be indexed. Reserve this method for high-value images: product thumbnails, featured images, category visuals.

How can I verify that my images are indexed?

Use a site:yourdomain.com search in Google Images and filter by specific page. If a critical image does not appear after several weeks, it's a red flag. Also, check the Performance report in Search Console with the filter "Search type: Image".

Crawl your site with Screaming Frog in JavaScript rendering mode enabled. Compare detected image URLs in JS mode vs. raw HTML mode. If images disappear in HTML mode, Googlebot may miss them too, especially if your crawl budget is limited.

  • Use loading="lazy" natively for non-critical images (below the fold)
  • Add a <noscript> tag with a complete <img> for SEO-high-value visuals
  • Declare product/hero images in JSON-LD structured data (Product, Article, ImageObject)
  • Check actual indexing via site: in Google Images, not just through the inspection tool
  • Crawl your site in both JS enabled AND disabled modes to detect image detection discrepancies
  • Prioritize eager loading for above-the-fold images or organic traffic generators
Balancing user performance and Google Images indexing is not trivial. Sites that heavily depend on visual traffic must adopt a hybrid approach: lazy loading for user comfort, but with safeguards (noscript, structured data) to ensure discovery by Googlebot. These optimizations require a fine understanding of server-side rendering, crawler behavior, and the specifics of each JS framework. To avoid missteps and validate each technical choice, the support of a specialized SEO agency can be crucial, especially for e-commerce or media sites where every image counts.

❓ Frequently Asked Questions

Le lazy loading natif HTML5 (loading="lazy") pose-t-il un problème d'indexation ?
Non, Googlebot supporte nativement cet attribut depuis fin 2020. Les images avec loading="lazy" sont généralement indexées correctement, contrairement aux solutions JavaScript tierces qui peuvent échapper au crawler.
Faut-il ajouter un noscript pour chaque image lazy-loadée en JS ?
Pas nécessairement pour toutes. Réserve cette précaution aux images critiques pour le SEO : visuels produit, images featured, infographies. Pour les images décoratives ou UI, c'est superflu.
Les données structurées garantissent-elles l'indexation dans Google Images ?
Elles augmentent les chances, mais ne garantissent rien. Google peut indexer une image déclarée dans un schema Product ou Article même si elle n'apparaît pas dans le DOM, mais ce n'est pas systématique. C'est un filet de sécurité, pas une solution miracle.
Comment tester si Googlebot voit mes images lazy-loadées ?
Utilise l'outil d'inspection d'URL dans Search Console et vérifie la capture d'écran rendue. Compare ensuite avec une recherche site: dans Google Images quelques semaines plus tard pour vérifier l'indexation réelle, car l'outil d'inspection ne reflète pas toujours le comportement en production.
Peut-on lazy-loader les images above the fold sans risque SEO ?
Non, c'est une erreur. Les images above the fold doivent être chargées en eager pour optimiser le LCP et garantir l'indexation immédiate. Le lazy loading doit être réservé aux contenus below the fold.
🏷 Related Topics
Domain Age & History Crawl & Indexing Images & Videos

🎥 From the same video 7

Other SEO insights extracted from this same Google Search Central video · duration 39 min · published on 10/05/2018

🎥 Watch the full video on YouTube →

Related statements

💬 Comments (0)

Be the first to comment.

2000 characters remaining
🔔

Get real-time analysis of the latest Google SEO declarations

Be the first to know every time a new official Google statement drops — with full expert analysis.

No spam. Unsubscribe in one click.