What does Google say about SEO? /
Quick SEO Quiz

Test your SEO knowledge in 3 questions

Less than 30 seconds. Find out how much you really know about Google search.

🕒 ~30s 🎯 3 questions 📚 SEO Google

Official statement

The HTML attribute loading='lazy' for images is strongly recommended for SEO. Img tags remain in the HTML, so Google can crawl and index images normally while speeding up page load for users. It’s a simple and effective method of lazy loading.
14:14
🎥 Source video

Extracted from a Google Search Central video

⏱ 54:50 💬 EN 📅 15/05/2020 ✂ 23 statements
Watch on YouTube (14:14) →
Other statements from this video 22
  1. 3:03 Les erreurs 404 temporaires lors d'une migration tuent-elles vraiment votre référencement ?
  2. 4:56 Googlebot crawle depuis les USA : comment éviter le piège du cloaking géo-IP ?
  3. 8:42 Peut-on vraiment bloquer Googlebot état par état aux USA sans tout casser ?
  4. 11:31 Pourquoi Google n'indexe-t-il pas toutes vos pages malgré un crawl actif ?
  5. 12:17 Les liens nofollow de Reddit sont-ils vraiment inutiles pour le SEO ?
  6. 15:25 Faut-il vraiment réduire le nombre de versions linguistiques pour hreflang ?
  7. 18:27 Faut-il vraiment corriger toutes les erreurs 404 remontées dans Search Console ?
  8. 20:47 Les jump links sont-ils vraiment inutiles pour le crawl de Google ?
  9. 21:55 Faut-il désavouer les backlinks fantômes visibles uniquement dans Search Console ?
  10. 23:20 Pourquoi le fichier Disavow ne masque-t-il pas les mauvais liens dans Search Console ?
  11. 29:18 Faut-il vraiment contextualiser l'attribut alt au-delà de la description visuelle ?
  12. 32:47 Faut-il vraiment s'inquiéter des redirections 301 et pages 404 multiples ?
  13. 33:02 Google déclasse-t-il algorithmiquement certains secteurs en période de crise sanitaire ?
  14. 34:06 Faut-il vraiment utiliser plusieurs noms de domaine pour un site multilingue ?
  15. 36:28 Faut-il vraiment rendre toutes les images de recettes indexables pour performer en SEO ?
  16. 37:49 Faut-il encoder les caractères non-ASCII dans les URLs de sitemap XML ?
  17. 38:15 Hreflang garantit-il vraiment le bon ciblage géographique de votre trafic international ?
  18. 41:05 Pourquoi Google indexe-t-il une seule version quand vos pages pays sont quasi-identiques ?
  19. 45:51 Faut-il créer du contenu différent pour indexer plusieurs variantes d'un même service ?
  20. 46:27 Faut-il créer une nouvelle page ou modifier l'existante pour un changement temporaire ?
  21. 49:01 Faut-il vraiment éviter les balises title et meta description multiples sur une même page ?
  22. 52:13 Les erreurs 500/503 de quelques heures sont-elles vraiment invisibles pour votre indexation ?
📅
Official statement from (5 years ago)
TL;DR

Google strongly recommends using the loading='lazy' attribute on img tags to speed up loading without compromising indexing. Images remain in the source HTML, so Googlebot crawls them normally. It's a simple method that enhances user experience and potentially your Core Web Vitals, but be careful not to apply it blindly to critical images in the initial viewport.

What you need to understand

What exactly is the loading='lazy' attribute and how does it technically work?

The loading='lazy' attribute is a native HTML5 directive that allows browsers to defer loading images that are outside of the visible viewport. Essentially, the browser detects the image's position on the page and only downloads the resource when the user is about to reach that area by scrolling.

The crucial nuance here — the one that interests Mueller — is that the image remains present in the DOM from the initial page load. The HTML code indeed includes the tag <img src="..." loading="lazy">. For Googlebot, which parses HTML above all, the image URL is immediately accessible. No asynchronous Javascript loading the URL later, no complex DOM manipulation.

Why does Google specifically recommend this method over other forms of lazy loading?

Historical lazy loading solutions — particularly those relying on third-party Javascript libraries — often posed an indexing problem. They replaced the src attribute with a data-src and dynamically injected the URL via JS. Googlebot thus had to execute the Javascript, wait for rendering, hope the script would trigger. A costly, slow, and sometimes failed process.

With loading='lazy', the URL is directly readable in the source HTML. Googlebot does not need to render the page to discover the image. It sees it, adds it to its image crawl queue, and can index it for Google Images. Meanwhile, users benefit from deferred loading that reduces the initial page weight and improves Largest Contentful Paint and Time to Interactive metrics — two components of Core Web Vitals.

Does this recommendation apply to all types of images without distinction?

No. This is where Mueller's statement requires discernment. If you apply loading='lazy' to a hero image at the top of the page, you delay its loading when it should appear immediately. The result: a flash of missing content, degradation of user experience, and potentially a penalty on LCP since this image often constitutes the largest visible content element.

Google’s recommendation concerns images located below the fold. Those not visible when the page initially loads. For these, loading='lazy' is a net gain with no compromises.

  • The loading='lazy' attribute does not block indexing: images remain in the source HTML, so Googlebot discovers them immediately.
  • Measurable performance gain: reduced initial page weight, potential improvement of Core Web Vitals (LCP, TTI).
  • Attention to the initial viewport: never apply lazy loading to critical images immediately visible, as it degrades user experience.
  • Universal browser support: loading='lazy' is now supported by all modern browsers (Chrome, Firefox, Safari, Edge).
  • Superior alternative to JS scripts: compared to third-party lazy loading libraries, this native method avoids indexing and rendering issues for Googlebot.

SEO Expert opinion

Is this statement consistent with field observations and current best practices?

Yes, without a doubt. Tests conducted since the introduction of loading='lazy' show that Googlebot correctly indexes images marked with this attribute. We see it in server logs: the bot crawls image URLs from img tags with loading='lazy' exactly like those without the attribute. Indexing in Google Images follows the same pattern.

PageSpeed Insights and Lighthouse audits explicitly recommend the use of this attribute for images below the fold. Google integrates this directive into its own performance guidelines. Therefore, Mueller is simply aligning the official SEO communication with the already established performance recommendations. No contradiction in the field.

What nuances should be added to this seemingly simple recommendation?

The main pitfall is blind application. Some CMS or plugins enable loading='lazy' by default on all images of the site, including those in the header, logo, or hero image. The result: a loading delay on critical elements, a degradation of LCP, and potentially a negative impact on ranking via Core Web Vitals.

Thus, one must explicitly exclude above-the-fold images. Technically, this can be done with a conditional rule in the template (e.g., not applying lazy loading to the first 2-3 images of the article, or to any image located in a <header> or hero block). Some frameworks like Next.js automatically manage this logic via their optimized Image component.

Another nuance: the loading='lazy' attribute also works on <iframe>. For YouTube, Vimeo, or Google Maps embeds at the bottom of the page, this is a massive performance gain. But be careful — an iframe loading a critical tool (reservation widget, contact form) should not be lazy loaded if it is immediately visible.

In what situations could this recommendation pose problems or be insufficient?

The first case: sites that already use an advanced Javascript lazy loading system with management of preloading, progressive blur-up, or dynamic sizing. Abruptly switching to native loading='lazy' can break these optimizations if they are not rethought. The native option is simpler but also more limited — no callback, no fine control of the triggering threshold.

The second case: conversion-critical images located just below the fold. Imagine an e-commerce product sheet where the gallery starts at 110% viewport height. Technically below the fold, but the user will scroll immediately. Too strict lazy loading can introduce a flash of missing content detrimental to conversion. In this scenario, a preload or prioritized fetch via fetchpriority='high' may be more relevant.

Attention: On mobile, the viewport is much shorter. An image considered below the fold on desktop may be above the fold on smartphone. Test loading='lazy' on mobile with network throttling to ensure no critical image is delayed.

Practical impact and recommendations

What should be done concretely to implement loading='lazy' without degrading user experience?

The first step is to audit your strategic pages to identify which images are above the fold and which are below the fold. A tool like Lighthouse or WebPageTest can provide this information. Alternatively, load your page with slow 3G throttling and visually observe which images appear immediately versus after scrolling.

Next, apply loading='lazy' only to images that are below the initial fold. On WordPress, disable global lazy loading (added by default since WP 5.5) and re-enable it conditionally via a filter. On a custom site, add the attribute in your templates with logic that excludes the first N images or those in critical areas like <header> or .hero.

What mistakes should be avoided when implementing this optimization?

Mistake #1: Lazy loading all images indiscriminately, including logo, hero image, first product image. This degrades LCP and perceived experience. Googlebot will still index the images, but your users will see a poorly loading site.

Mistake #2: Combining loading='lazy' with a Javascript lazy loading script that also manipulates the src attribute. You risk double processing, conflicts, or worse — a Javascript replacing src with data-src even with the native attribute, nullifying the benefit for Googlebot.

Mistake #3: Forgetting to specify width and height on your img tags. Without dimensions, the browser cannot reserve space before the deferred loading, causing a Cumulative Layout Shift (CLS) when the image loads. Core Web Vitals will suffer.

How can you verify that your implementation is correct and does not negatively impact SEO?

First, inspect the source HTML of your pages (Ctrl+U, not the inspector). Check that the <img> tags contain the src attribute with the full image URL, and that loading='lazy' is present. If you see a data-src instead, that's a problem — Googlebot will need to render the page.

Second, use Google Search Console > Performance > Images tab to check that your images continue to be indexed and generate impressions. A sudden drop after implementation would indicate a concern. At the same time, check the Core Web Vitals in the page experience report to confirm that LCP is improving (or at least not degrading).

Third, test with Screaming Frog or a similar crawler with Javascript rendering disabled. Images with loading='lazy' should appear in the Images tab with their full URL, proving they are discoverable without JS execution.

  • Audit strategic pages to distinguish between above-the-fold images (no lazy loading) and below-the-fold images (lazy loading recommended)
  • Apply loading='lazy' only to images located below the initial fold, never to logo, hero, first product image
  • Consistently specify width and height attributes to avoid CLS during deferred loading
  • Check in the source HTML that the src attribute contains the full image URL (no data-src)
  • Monitor Google Search Console > Performance > Images to ensure indexing is not impacted
  • Control Core Web Vitals (LCP, CLS) in the experience report after deployment
The loading='lazy' attribute is a simple yet discerning optimization lever. When applied correctly, it improves Core Web Vitals without compromising indexing. Applied blindly, it degrades user experience and can harm ranking. If managing the viewport, conditional rendering, and post-deployment monitoring seems complex — or if you're short on time to audit image by image — hiring a specialized SEO agency can accelerate this compliance while avoiding classic pitfalls. Personalized support ensures that each technical optimization truly serves your business objectives.

❓ Frequently Asked Questions

L'attribut loading='lazy' ralentit-il l'indexation des images par Google ?
Non. Les images avec loading='lazy' restent dans le HTML source avec leur URL complète dans l'attribut src, donc Googlebot les découvre et les indexe normalement sans avoir besoin de rendre la page.
Peut-on utiliser loading='lazy' sur les images hero ou les images de produits principales ?
Non, c'est déconseillé. Les images above the fold (visibles immédiatement) doivent charger en priorité pour optimiser le LCP. Le lazy loading natif doit s'appliquer uniquement aux images below the fold.
Faut-il supprimer les scripts Javascript de lazy loading si on utilise l'attribut natif ?
Oui, dans la plupart des cas. Combiner les deux crée des conflits et peut annuler les bénéfices pour l'indexation si le script manipule l'attribut src. L'attribut natif suffit pour les besoins SEO et performance de base.
L'attribut loading='lazy' fonctionne-t-il aussi sur les iframes d'embed vidéo ?
Oui. Vous pouvez l'appliquer aux iframes YouTube, Vimeo, Google Maps situées below the fold pour réduire drastiquement le poids initial de la page. Attention toutefois aux widgets critiques immédiatement visibles.
Comment éviter le Cumulative Layout Shift avec les images en lazy loading ?
Spécifiez toujours les attributs width et height sur vos balises img. Cela permet au navigateur de réserver l'espace avant le chargement différé et évite le décalage de mise en page (CLS) au moment où l'image apparaît.
🏷 Related Topics
Domain Age & History Crawl & Indexing Images & Videos Web Performance

🎥 From the same video 22

Other SEO insights extracted from this same Google Search Central video · duration 54 min · published on 15/05/2020

🎥 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.