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 will attempt to index the content rendered by JavaScript if it is visible on the page. Unseen content is not taken into account for indexing.
43:32
🎥 Source video

Extracted from a Google Search Central video

⏱ 58:36 💬 EN 📅 12/08/2016 ✂ 12 statements
Watch on YouTube (43:32) →
Other statements from this video 11
  1. 4:08 Les Quality Raters influencent-ils vraiment vos positions dans Google ?
  2. 5:45 Les balises HTML dépréciées impactent-elles vraiment votre classement Google ?
  3. 6:48 Combien de temps faut-il attendre pour que Google prenne en compte vos améliorations de qualité ?
  4. 10:09 Un nom de domaine pénalisé peut-il retrouver ses positions dans Google ?
  5. 11:01 Les en-têtes de cache influencent-ils vraiment le référencement naturel ?
  6. 25:21 Faut-il vraiment bloquer l'indexation du contenu généré par IA ?
  7. 27:07 HTML5 et SEO : Google accorde-t-il vraiment un traitement spécial à vos pages ?
  8. 31:08 L'AMP booste-t-il vraiment votre classement Google ?
  9. 50:44 Faut-il vraiment bloquer l'indexation des résultats de recherche interne ?
  10. 51:14 Les fiches immobilières identiques sont-elles vraiment indexées comme uniques par Google ?
  11. 65:01 Pourquoi Google privilégie-t-il la valeur globale du site plutôt que les facteurs techniques isolés ?
📅
Official statement from (9 years ago)
TL;DR

Google only indexes the visible and rendered JavaScript content on the page, not what is hidden in the source code. Specifically, if your JS loads conditional content not displayed during crawling, it will not be indexed. Check the final rendering with the URL inspection tool: what Googlebot sees determines what will be indexed, period.

What you need to understand

What does “JavaScript rendered content” actually mean?

JavaScript rendered content refers to any HTML elements generated client-side after the initial page load. Unlike the static HTML present in the source code, this content only exists after the JS is executed by the browser. Therefore, Googlebot must execute the JavaScript to access these elements.

The crucial nuance: Google no longer simply reads the raw HTML. It goes through a rendering phase where it executes JavaScript like a real browser. However, this phase has technical limitations: timeouts, blocked resources, and JS errors can hinder rendering. If your JS crashes or takes too long, Googlebot indexes what it sees at that moment, not what should have appeared.

Why does Google specify “if it is visible on the page”?

This wording is significant. It explicitly excludes any hidden content via CSS (display:none, visibility:hidden, opacity:0) or loaded but not displayed on screen. Hidden tabs, closed accordions, non-triggered modals: all of this remains invisible to Googlebot, even if the JS technically generated it in the DOM.

This is a major shift from common misconceptions. Many still believe that if the content is in the DOM after JS execution, Google indexes it. False. It must be visibly present at the time of crawling, without requiring user interaction. A closed dropdown? Not indexed. A lazy loading that only activates on scroll? Risky.

How does Googlebot determine what is “visible”?

Google uses an approach close to the initial viewport: what displays without scrolling or clicking when the page loads. The bot does not interact with your buttons, does not scroll to the footer, nor clicks on your tabs. If your content requires user action to appear, it is not considered visible.

The gray area concerns native lazy loading and certain conditional display patterns. Google is gradually improving its ability to detect content that should display naturally, but the ground consensus remains cautious: what matters is the immediate rendering without interaction.

  • Googlebot executes JavaScript but does not replace a real browser with all its interactive capabilities
  • Content hidden by CSS or not initially displayed is not indexed, even if it exists in the DOM
  • User interactions (clicks, scroll, hover) are not simulated by the bot during standard crawl
  • The URL Inspection tool in Search Console shows exactly what Googlebot sees after JS rendering
  • Rendering timeouts (around 5 seconds) can cut off JS execution before loading completes

SEO Expert opinion

Does this statement really reflect observed behavior on the ground?

Yes, but with important nuances rarely discussed by Google. Tests show that Googlebot does index visible JS content, but the definition of “visible” varies in different contexts. Content with strict display:none is never indexed; that's confirmed. However, an element positioned outside the viewport but technically displayed (not display:none) can sometimes be considered. [To be verified] on each specific implementation.

The other point rarely mentioned: the reliability of JS rendering remains lower than pure static HTML. There are still cases where Googlebot fails to execute complex JS correctly, especially with heavy frameworks or multiple dependencies. Mueller's statement is true in theory, less systematic in practice. An audit with the URL inspection tool remains essential; never blindly trust your code.

What edge cases does Google not detail?

The first problematic case: Single Page Applications (SPA) with client-side routing. Google claims to handle them, but changing URLs without a full reload still poses indexing issues. Successive crawls do not guarantee that all virtual “pages” are discovered and indexed correctly. Server-side rendering or static pre-generation remains more reliable.

The second gray area: conditional content based on geolocation, cookies, or user-agent. Googlebot crawls from the United States with its own user-agent. If your JS displays different content based on these parameters, you cannot easily predict what Google will see. Some content may be completely invisible to the bot while being displayed to your actual users. [To be verified] with specific tests from the US.

Should we still be wary of JavaScript for SEO?

Honestly? Yes. Not because Google cannot handle JS, but because it adds a layer of complexity and points of failure. A fully optimized JS site can rank properly, but it requires more monitoring, more testing, and more server resources for rendering. The slightest JS error, the slightest timeout, and you lose indexable content.

If you have architectural choice, prioritize static HTML or SSR for critical SEO content. Reserve client-side JS for interactions and non-critical enhancements for indexing. It’s less flashy than full React, but it is more resilient against crawling fluctuations. The best-performing sites in SEO are those that serve complete HTML on the first request, without relying on JS rendering to display their main content.

Warning: Google is constantly improving its handling of JS, but rendering delays and the queue for the second crawl (after JS execution) can delay indexing by several days compared to static HTML. For real-time content or news, this is problematic.

Practical impact and recommendations

How can you check what Googlebot really sees on your JS pages?

Use the URL Inspection tool in Google Search Console; it's your best ally. It displays exactly the rendered HTML as Googlebot sees it after executing the JavaScript. Compare this rendering with what you see in your browser: any difference signals a potential indexing problem.

Follow up with a test in private browsing mode with JavaScript disabled in Chrome. If your critical content disappears, it entirely depends on JS. Then add network throttling (slow 3G) to simulate the timeout conditions Googlebot might encounter. If the content doesn't load within 5 seconds, it risks not being indexed.

What JS implementation errors penalize indexing?

Aggressive lazy loading remains the number one error. Loading content only on scroll or interaction ensures it will not be indexed. If you must lazy load, do it only for images and non-textual resources, never for main textual content or critical navigation links.

The second pitfall: poorly configured JS frameworks that generate title and meta description tags client-side. Googlebot prioritizes the initial HTML for these elements. If your title only exists in JS, Google may index an empty or default title. Ensure your critical SEO tags are present in the source HTML, before any JS.

What architecture should you prioritize to maximize indexing?

Server-Side Rendering (SSR) or static generation (SSG) remain the most reliable approaches. They serve complete HTML on the first request, eliminating any dependency on JS rendering for indexing. Next.js, Nuxt.js, or Gatsby facilitate these architectures without sacrificing dynamic user experience.

If you remain in pure Client-Side Rendering, implement at a minimum a pre-rendering system for Googlebot. Services like Rendertron or Prerender.io intercept bot requests and serve a static HTML version. It’s a workaround, not an ideal architecture, but it works if you lack the resources to overhaul your stack.

These technical optimizations require sharp expertise and constant maintenance. Between monitoring rendering, adjusting server configurations, and resolving JS errors during crawling, the time needed quickly adds up. Hiring a specialized SEO agency may prove wise to properly implement these architectures, especially if your internal team lacks experience in rendering and indexing issues. An initial audit by professionals will identify critical bottlenecks and save you months of trial and error.

  • Test each critical page with the URL Inspection tool in Search Console to validate Googlebot's rendering
  • Ensure that your title, meta description, and H1 tags are present in the source HTML, not just generated by JS
  • Eliminate lazy loading on main textual content and navigation links
  • Implement JS error monitoring in production (Sentry, LogRocket) to detect crashes that break rendering
  • Prioritize SSR or SSG for critical SEO sections, reserve CSR for secondary interactions
  • Measure indexing delays for your JS pages versus static HTML to quantify the real impact
Visible JavaScript content is indexed by Google, but this visibility depends on successful JS execution, without timeouts or errors, and on immediate display without user interaction. Systematically audit Googlebot's rendering, eliminate JS dependencies on critical content, and prioritize SSR/SSG architectures whenever possible. JS remains a manageable SEO risk, not a fatality.

❓ Frequently Asked Questions

Google indexe-t-il le contenu dans les accordéons fermés ou onglets masqués ?
Non. Si le contenu est caché via display:none ou visibility:hidden au chargement initial, Googlebot ne l'indexe pas. Il faut qu'il soit visible sans interaction utilisateur pour être pris en compte.
Combien de temps Googlebot attend-il pour exécuter le JavaScript ?
Environ 5 secondes maximum selon les observations terrain. Si votre JS met plus de temps à générer le contenu, il risque d'être coupé avant la fin et le contenu manquant ne sera pas indexé.
Le lazy loading d'images pose-t-il problème pour l'indexation ?
Le lazy loading natif (loading="lazy") est généralement bien géré par Google. En revanche, le lazy loading via JS sans fallback peut empêcher l'indexation des images si elles ne se chargent qu'au scroll.
Faut-il servir du HTML différent aux bots et aux utilisateurs ?
Non, c'est du cloaking et ça viole les guidelines Google. Utilisez plutôt du Server-Side Rendering pour servir le même HTML complet à tous, bots et utilisateurs confondus.
Les Single Page Applications sont-elles pénalisées en SEO ?
Pas pénalisées directement, mais plus risquées. Le routing côté client et les changements d'URL sans rechargement compliquent le crawl et l'indexation. Le SSR est fortement recommandé pour les SPA.
🏷 Related Topics
Domain Age & History Content Crawl & Indexing JavaScript & Technical SEO

🎥 From the same video 11

Other SEO insights extracted from this same Google Search Central video · duration 58 min · published on 12/08/2016

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