Declaration officielle
Autres déclarations de cette vidéo 9 ▾
- 1:48 Faut-il vraiment conserver vos anciens assets CSS et JS pour éviter les erreurs de crawl ?
- 2:05 Faut-il vraiment conserver les anciens assets CSS/JS pour Googlebot ?
- 2:40 Faut-il vraiment pré-rendre 100% du contenu pour que Googlebot l'indexe correctement ?
- 2:40 Le prerendering JavaScript pose-t-il encore des risques d'indexation en SEO ?
- 3:43 Comment éviter que JavaScript réécrive vos balises title et sabote votre indexation Google ?
- 4:15 Faut-il vraiment se méfier du JavaScript dans un contenu pré-rendu ?
- 4:35 Le JavaScript post-prerendering est-il vraiment sans danger pour le SEO ?
- 5:19 Faut-il vraiment privilégier le SSR et le prerendering pour améliorer son crawl ?
- 5:19 Le dynamic rendering va-t-il vraiment disparaître du SEO ?
Google peut indexer un titre de page modifié par JavaScript si ce changement se produit au chargement initial. Martin Splitt recommande de déclencher ces modifications uniquement après une interaction utilisateur pour garder le contrôle sur le titre indexé. Concrètement : si votre titre change dynamiquement sans action de l'utilisateur, Google risque d'indexer la version modifiée plutôt que votre <title> d'origine.
Ce qu'il faut comprendre
Pourquoi Google indexe-t-il parfois un titre modifié par JavaScript ?
Google exécute le JavaScript des pages lors du crawl et de l'indexation. Si un script modifie le contenu de la balise pendant le rendu de la page — avant toute interaction utilisateur — le moteur peut interpréter cette version dynamique comme le titre définitif.
Le problème surgit quand cette modification n'était pas destinée à l'indexation. Certains sites utilisent du JS pour personnaliser l'affichage selon le contexte (geolocalisation, heure, A/B testing) sans anticiper que Googlebot verra et indexera cette variante. Résultat : le titre qui apparaît dans les SERP ne correspond pas à celui prévu par le SEO.
Que signifie « placer derrière une interaction utilisateur » concrètement ?
Martin Splitt conseille de déclencher la modification du titre uniquement après un événement utilisateur explicite : clic, scroll, hover, saisie dans un champ. Cette approche garantit que Googlebot, qui ne simule pas ces interactions lors du rendu initial, indexera le HTML d'origine.
Techniquement, cela implique d'éviter les scripts qui s'exécutent au DOMContentLoaded ou au chargement immédiat de la page. Tout changement de titre doit être conditionné par un addEventListener() sur une action humaine. C'est une nuance cruciale : le timing d'exécution du script fait toute la différence.
Cette recommandation s'applique-t-elle à tous les types de modifications dynamiques ?
La directive vise spécifiquement les modifications de titre non intentionnelles pour l'indexation. Si vous changez volontairement le titre via JS pour améliorer le SEO — par exemple en injectant un mot-clé calculé côté client — et que vous voulez que Google l'indexe, alors pas besoin de le bloquer.
En revanche, si le changement est purement cosmétique, contextuel ou destiné à l'UX (affichage d'un compteur, notification, personnalisation), alors oui, isolez-le derrière une interaction. La règle d'or : ce que Googlebot voit au premier rendu = ce qui sera indexé.
- Google exécute le JavaScript et peut indexer un titre modifié dynamiquement si le script tourne au chargement initial
- Placer derrière interaction utilisateur signifie conditionner le changement de titre à un événement explicite (clic, scroll, etc.)
- Timing critique : un script qui s'exécute au DOMContentLoaded est visible par Googlebot, un script déclenché par un clic ne l'est pas
- Distinction intentionnelle : si vous voulez que Google indexe le titre modifié, laissez-le accessible au premier rendu ; sinon, isolez-le
- Impact sur les SERP : un titre indexé par erreur peut nuire au CTR et à la cohérence de votre stratégie de mots-clés
Avis d'un expert SEO
Cette recommandation est-elle cohérente avec les observations terrain ?
Oui, et c'est même une confirmation attendue. Les tests de rendu via Search Console (outil d'inspection d'URL) montrent depuis des années que Googlebot exécute le JS et capture l'état du DOM après rendu. Si un script modifie le titre avant que ce snapshot soit pris, Google l'indexe.
Ce qui est nouveau ici, c'est la solution explicite : isoler ces modifications derrière une interaction. Martin Splitt aurait pu dire « désactivez le JS côté serveur » ou « utilisez un SSR propre », mais il propose une approche plus nuancée qui respecte les besoins UX. Reste que cette consigne suppose un audit JS minutieux — combien de sites savent précisément quel script touche au et quand ?
Quelles limites faut-il signaler ?
Premier point : Google ne garantit jamais qu'il utilisera le que vous lui fournissez. Même si vous suivez ce conseil à la lettre, le moteur peut réécrire votre titre en fonction du contexte de la requête, du contenu de la page ou de ses propres heuristiques. Cette directive limite les modifications accidentelles, pas les réécritures algorithmiques.
Deuxième point : [À vérifier] Aucune donnée publique ne quantifie l'impact réel d'un titre mal indexé sur le ranking ou le CTR. On sait que Google privilégie la cohérence sémantique entre titre, H1 et contenu, mais l'ampleur de la pénalité (si pénalité il y a) reste floue. Cette recommandation relève surtout du contrôle qualité : vous voulez maîtriser ce qui apparaît dans les SERP, point.
Dans quels cas cette règle est-elle difficile à appliquer ?
Les applications monopages (SPA) posent un défi particulier. Dans une SPA React ou Vue, le titre change souvent à chaque navigation client-side via un router. Techniquement, ces changements surviennent après interaction (clic sur un lien interne), donc Google ne devrait pas les indexer sur la page d'origine. Mais quid des URL pushState/replaceState ? Si Google crawle directement une de ces URLs, il verra le titre correspondant — et c'est voulu.
Autre cas épineux : les tests A/B côté client. Si vous testez des variantes de titre via JS pour mesurer le CTR organique, vous risquez que Google indexe une version non représentative. La solution ? Soit passer par un A/B serveur (mais c'est coûteux en dev), soit accepter le risque et surveiller de près les données d'indexation. Pas de solution miracle ici — c'est un arbitrage entre rigueur SEO et agilité produit.
Impact pratique et recommandations
Que faut-il auditer en priorité sur son site ?
Commencez par lister tous les scripts qui touchent à document.title ou à l'élément <title> du DOM. Un grep dans votre codebase sur « document.title = » ou « .textContent » appliqué à title révèle souvent des surprises : librairies analytics, chats tiers, widgets de notification.
Ensuite, testez le rendu via Search Console (Inspection d'URL > Afficher la page explorée). Comparez le titre HTML source avec celui capturé après rendu. Si les deux diffèrent et que ce n'était pas intentionnel, vous avez un candidat à corriger. Répétez l'opération sur un échantillon représentatif de templates — homepage, fiches produit, articles, landing pages.
Comment implémenter la protection par interaction utilisateur ?
Plutôt que d'exécuter votre script de modification de titre au load ou au DOMContentLoaded, attachez-le à un événement utilisateur. Par exemple, si vous affichez un compteur de temps passé dans le titre, déclenchez-le au premier scroll ou au premier clic dans la page.
Côté code : remplacez window.addEventListener('load', modifyTitle) par document.addEventListener('click', modifyTitle, { once: true }). Le flag { once: true } garantit que le listener ne se déclenche qu'une fois, évitant les répétitions. Alternative : déclenchez au premier mousemove si vous avez besoin que ça se lance plus tôt, mais gardez en tête que Googlebot ne simule aucun de ces événements.
Quelles erreurs éviter absolument ?
Ne confondez pas « derrière interaction » avec « en différé ». Utiliser un setTimeout() de 3 secondes ne protège pas votre titre : Googlebot attend souvent plusieurs secondes pour que le JS finisse de s'exécuter, et votre script tournera quand même. Seule une interaction humaine authentique (clic, touch, keypress) est ignorée par le bot.
Autre piège : oublier les dépendances tierces. Les scripts de chat, de personnalisation, de tracking peuvent modifier le titre sans que vous le sachiez. Auditez vos tag managers et vos scripts async. Si vous ne contrôlez pas directement le code, passez par une politique CSP (Content Security Policy) pour restreindre les modifications du DOM, ou encapsulez ces scripts dans un contexte isolé.
- Lister tous les scripts qui modifient document.title (grep codebase + audit tag manager)
- Tester le rendu via Search Console sur un échantillon de templates représentatifs
- Remplacer les listeners load/DOMContentLoaded par des événements utilisateur (click, scroll, mousemove)
- Vérifier que les scripts tiers (chat, analytics) ne modifient pas le titre au chargement
- Documenter les exceptions volontaires (titres dynamiques destinés à l'indexation)
- Monitorer les changements de titre indexé via les rapports de couverture et les logs de crawl
❓ Questions frequentes
Google indexe-t-il systématiquement le titre modifié par JavaScript ?
Un setTimeout de quelques secondes suffit-il à éviter l'indexation du titre modifié ?
Faut-il appliquer cette recommandation aux applications monopages (SPA) ?
Comment vérifier si Google a indexé un titre modifié par erreur ?
Cette directive empêche-t-elle Google de réécrire mon titre dans les SERP ?
🎥 De la même vidéo 9
Autres enseignements SEO extraits de cette même vidéo Google Search Central · durée 6 min · publiée le 16/03/2020
🎥 Voir la vidéo complète sur YouTube →
💬 Commentaires (0)
Soyez le premier à commenter.