Comment Googlebot gère le JavaScript
Googlebot visite les pages en deux temps. D'abord, il télécharge le HTML brut. Ensuite, dans une file d'attente distincte, il exécute le JavaScript pour obtenir le rendu final de la page. Ce deuxième passage peut prendre plusieurs jours, voire plusieurs semaines selon la taille du site.
Concrètement : si votre contenu principal (texte, liens, balises) est injecté par JavaScript après le chargement, Googlebot ne le verra pas lors du premier passage. Il peut l'indexer plus tard, ou pas du tout si la file de rendu est saturée.
Problèmes SEO courants liés au JavaScript
| Problème | Cause JS | Conséquence SEO |
|---|---|---|
| Contenu non indexé | Texte injecté après chargement | Page introuvable sur Google |
| Liens non suivis | Navigation générée en JS | Pages orphelines, maillage interne cassé |
| Métadonnées manquantes | Balises title/meta injectées en JS | Mauvais snippets dans les résultats |
| Délai de rendu élevé | JS lourd, dépendances multiples | Score Core Web Vitals dégradé |
| URLs hachées (#fragment) | Navigation SPA sans History API | Pages non indexables |
CSR, SSR et SSG : ce que ça change pour le SEO
Les frameworks JavaScript modernes (React, Vue, Angular, Next.js) offrent différents modes de rendu :
- CSR (Client-Side Rendering) : le HTML est vide, tout est construit dans le navigateur. C'est le mode le plus risqué pour le SEO car Googlebot doit exécuter le JS pour voir quoi que ce soit.
- SSR (Server-Side Rendering) : le serveur génère le HTML complet avant de l'envoyer. Googlebot reçoit une page déjà rendue. C'est la solution recommandée pour les sites qui misent sur le SEO.
- SSG (Static Site Generation) : les pages sont pré-générées au moment du build. Idéal en termes de performance et d'indexation.
Recommandations pratiques
-
Privilégier le contenu dans le HTML statique
Les éléments critiques pour le SEO (H1, texte principal, liens de navigation, balises meta) doivent être présents dans le source HTML, sans dépendre du JS.
-
Tester avec "Afficher la source" vs "Inspecter"
Ctrl+U affiche le HTML brut reçu par Googlebot. Si votre contenu n'y apparaît pas mais est visible dans les outils développeur, il est en JS pur et potentiellement invisible.
-
Utiliser l'outil "Inspecter l'URL" dans Search Console
Google Search Console permet de tester le rendu d'une URL tel que Googlebot la voit. C'est le moyen le plus fiable de détecter un problème de rendu JS.
-
Opter pour SSR ou SSG si l'indexation est prioritaire
Pour les sites e-commerce, les blogs ou tout site dont le SEO est un levier commercial, éviter le rendu côté client pur. Next.js, Nuxt.js ou un générateur statique sont des alternatives solides.
Le PHP et le HTML statique restent les approches les plus simples et les plus sûres pour l'indexation : le contenu est disponible immédiatement, sans délai de rendu.
Questions fréquentes
Google indexe-t-il vraiment le JavaScript ?
Oui, Googlebot exécute le JavaScript depuis 2019 via un moteur Chromium. Mais ce rendu se fait en deux temps : crawl HTML brut d'abord, puis rendu JS quelques jours/semaines plus tard selon les ressources allouées. Pour les contenus prioritaires, ce délai peut poser problème. Sur les autres moteurs (Bing, Yandex), le rendu JS est plus limité voire absent.
Faut-il préférer le SSR (Server-Side Rendering) au CSR (Client-Side Rendering) ?
Oui pour les pages prioritaires en SEO. Le SSR (Next.js, Nuxt, Astro) génère le HTML côté serveur avant de l'envoyer au navigateur : Googlebot voit le contenu immédiatement, sans attendre le rendu JS. Le CSR (React, Vue purs) reste viable pour des applications, mais ralentit l'indexation et risque de masquer du contenu si l'exécution JS échoue.
Comment vérifier que Google voit bien mon contenu JavaScript ?
Dans Google Search Console, utiliser "Inspection d'URL" puis "Tester l'URL en direct" et regarder la capture d'écran du rendu et le HTML rendu. Si le contenu principal apparaît, Google le voit. Si la page est vide ou incomplète, le JavaScript pose problème. Un crawl Screaming Frog en mode "JavaScript Rendering" donne aussi un diagnostic précis.
Le lazy loading JavaScript pose-t-il problème au SEO ?
Pas s'il est bien fait. Le lazy loading natif (attribut loading="lazy" en HTML) est parfaitement compris par Google. Les lazy loadings en JavaScript pur sont plus risqués : si l'image n'est chargée qu'après un scroll utilisateur, Googlebot peut ne pas la voir. Préférer le lazy loading natif HTML qui combine performance et accessibilité au SEO.