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

Having an incorrect canonical tag on the server side and then correcting it on the client side can, in rare cases, cause confusion for Google, which may choose the wrong canonical. It is preferable not to have a canonical tag than to have an incorrect one initially. Prioritize critical content over metadata.
7:27
🎥 Source video

Extracted from a Google Search Central video

⏱ 39:51 💬 EN 📅 17/06/2020 ✂ 51 statements
Watch on YouTube (7:27) →
Other statements from this video 50
  1. 0:33 Google voit-il vraiment le HTML que vous croyez optimiser ?
  2. 0:33 Le HTML rendu dans la Search Console reflète-t-il vraiment ce que Googlebot indexe ?
  3. 1:47 Le JavaScript tardif nuit-il vraiment à votre indexation Google ?
  4. 1:47 Pourquoi Googlebot rate-t-il vos modifications JavaScript critiques ?
  5. 2:23 Google réécrit vos balises title et meta description : faut-il encore les optimiser ?
  6. 3:03 Google réécrit-il vos balises title et meta description à volonté ?
  7. 3:45 DOMContentLoaded vs événement load : pourquoi cette différence change-t-elle tout pour le rendu côté Google ?
  8. 3:45 DOMContentLoaded vs load : quel événement Googlebot attend-il réellement pour indexer votre contenu ?
  9. 6:23 Comment prioriser le rendu hybride serveur/client sans pénaliser votre SEO ?
  10. 6:23 Faut-il vraiment rendre le contenu principal côté serveur avant les métadonnées en SSR ?
  11. 8:00 Faut-il supprimer la balise canonical plutôt que d'en servir une incorrecte corrigée en JavaScript ?
  12. 9:06 Comment vérifier quelle canonical Google a vraiment retenue pour vos pages ?
  13. 9:38 L'URL Inspection révèle-t-elle vraiment les conflits de canonical ?
  14. 10:08 Faut-il vraiment ignorer le noindex sur vos fichiers JS et CSS ?
  15. 10:08 Faut-il ajouter un noindex sur les fichiers JavaScript et CSS ?
  16. 10:39 Peut-on vraiment se fier au cache: de Google pour diagnostiquer un problème SEO ?
  17. 10:39 Pourquoi le cache: de Google est-il un piège pour tester le rendu de vos pages ?
  18. 11:10 Faut-il vraiment se préoccuper de la capture d'écran dans Search Console ?
  19. 11:10 Les screenshots ratés dans Google Search Console bloquent-ils vraiment l'indexation ?
  20. 12:14 Le lazy loading natif est-il vraiment crawlé par Googlebot ?
  21. 12:14 Faut-il encore s'inquiéter du lazy loading natif pour le référencement ?
  22. 12:26 Faut-il vraiment découper son JavaScript par page pour optimiser le crawl ?
  23. 12:26 Le code splitting JavaScript peut-il réellement améliorer votre crawl budget et vos Core Web Vitals ?
  24. 12:46 Pourquoi vos scores Lighthouse mobile sont-ils systématiquement plus bas que sur desktop ?
  25. 12:46 Pourquoi vos scores Lighthouse mobile sont-ils systématiquement plus bas que desktop ?
  26. 13:50 Votre lazy loading bloque-t-il la détection de vos images par Google ?
  27. 13:50 Le lazy loading peut-il vraiment rendre vos images invisibles aux yeux de Google ?
  28. 16:36 Le rendu côté client fonctionne-t-il vraiment avec Googlebot ?
  29. 16:58 Le rendu JavaScript côté client nuit-il vraiment à l'indexation Google ?
  30. 17:23 Où trouver la documentation officielle JavaScript SEO de Google ?
  31. 18:37 Faut-il vraiment aligner les comportements desktop, mobile et AMP pour éviter les pièges SEO ?
  32. 19:17 Faut-il vraiment unifier l'expérience mobile, desktop et AMP pour éviter les pénalités ?
  33. 19:48 Faut-il vraiment corriger un thème WordPress bourré de JavaScript si Google l'indexe correctement ?
  34. 19:48 Faut-il vraiment éviter JavaScript pour le SEO ou est-ce un mythe persistant ?
  35. 21:22 Peut-on avoir d'excellentes Core Web Vitals tout en ayant un site techniquement défaillant ?
  36. 21:22 Peut-on avoir un bon FID avec un TTI catastrophique ?
  37. 23:23 Le FOUC ruine-t-il vraiment vos performances Core Web Vitals ?
  38. 23:23 Le FOUC pénalise-t-il vraiment votre référencement naturel ?
  39. 25:01 Le JavaScript consomme-t-il vraiment votre crawl budget ?
  40. 25:01 Le JavaScript consomme-t-il vraiment plus de crawl budget que le HTML classique ?
  41. 28:43 Faut-il bloquer l'accès aux utilisateurs sans JavaScript pour protéger son SEO ?
  42. 28:43 Bloquer un site sans JavaScript risque-t-il une pénalité SEO ?
  43. 30:10 Pourquoi vos scores Lighthouse ne reflètent-ils jamais la vraie expérience de vos utilisateurs ?
  44. 30:16 Pourquoi vos scores Lighthouse ne reflètent-ils pas la vraie performance de votre site ?
  45. 34:02 Le render tree de Google rend-il vos outils de test SEO obsolètes ?
  46. 34:34 Le render tree de Google : faut-il vraiment s'en préoccuper en SEO ?
  47. 35:38 Faut-il vraiment s'inquiéter des ressources non chargées dans Search Console ?
  48. 36:08 Faut-il vraiment s'inquiéter des erreurs de chargement dans Search Console ?
  49. 37:23 Pourquoi Google n'a-t-il pas besoin de télécharger vos images pour les indexer ?
  50. 38:14 Googlebot télécharge-t-il vraiment les images lors du crawl principal ?
📅
Official statement from (5 years ago)
TL;DR

Google can misinterpret the canonical tag if the server-side tag is incorrect and then corrected on the client side. Martin Splitt confirms that in some rare cases, the engine chooses the wrong URL. It’s better to omit the canonical tag than to declare an incorrect one initially, and prioritize critical content over metadata in the rendering path.

What you need to understand

Why could Google choose the wrong canonical?

The problem lies in Google's two-step rendering process. When the bot crawls a page, it first reads the raw HTML returned by the server. If a canonical tag points to URL A at this stage, Google records that information.

Later, during the JavaScript rendering, this tag may change to point to URL B. In rare cases, Google retains the first value — that from the server HTML — and ignores the client-side correction. The engine ends up with an incorrect canonical, which can lead to indexing or signal consolidation issues.

What does Martin Splitt mean by "prioritizing critical content"?

The idea is simple: visible and textual content should load before SEO metadata. If your JavaScript framework generates the canonical tag after several seconds, you create a window of opportunity where Googlebot may read an intermediate or absent value.

Splitt suggests not injecting a canonical on the server side if it risks being incorrect, even temporarily. It’s better to let Google determine the canonical itself than to provide erroneous information which will be corrected too late in the rendering cycle.

What scenarios trigger this confusion?

Observed cases mainly involve SPA (Single Page Applications) or headless CMSs that generate the DOM after hydration. For example: a React site that displays a default canonical in the static HTML, then dynamically replaces it based on the route or URL parameters.

Google does not specify how often these “rare” cases occur, making diagnosis difficult. The phenomenon is mostly observed on slow-rendering sites or with intermittent JavaScript errors that prevent the correction from executing properly.

  • Server HTML takes precedence over client rendering in some undocumented cases.
  • No canonical is better than an incorrect canonical on the server side.
  • Textual content must load before metadata to avoid inconsistencies.
  • SPA and headless sites are the most exposed to this risk of dual reading.
  • Google does not quantify “rare” — difficult to assess the actual scale of the issue.

SEO Expert opinion

Is this statement consistent with field observations?

Yes, but with nuances. It is indeed observed that Googlebot may favor the initial HTML in certain scenarios, especially on sites with high rates of JavaScript errors or with a high Time to Interactive (TTI). Server logs sometimes show that Google indexes a URL while the final canonical points elsewhere.

However, stating that “in rare cases” it poses a problem is [To be verified] — no official metric quantifies this rarity. On poorly optimized sites for client-side rendering, this phenomenon can be frequent. Prudence is warranted even if Google downplays the impact.

Should we really omit the canonical on the server side?

Splitt suggests not including it if it risks being incorrect. In practice, it's a defensive piece of advice: if your architecture does not guarantee the correct value from the raw HTML, it’s better to leave it empty and only inject it on the client side, once the data is available.

But beware: omitting the canonical on the server side can slow down signal consolidation if Google has to wait until rendering to discover it. On sites with a high volume of pages or complex URL parameters, this is a risk. The choice depends on the ratio between the risk of error and the cost of rendering delay.

What nuances are missing from this statement?

Google does not specify how it arbitrates between server HTML and client rendering when they differ. Is there a timeout? A prioritization based on site type or allotted crawl budget? These details are lacking, complicating implementation.

Another point: [To be verified] Splitt says “prioritize critical content over metadata”, but no metric defines what is “critical”. Does an h1 suffice? Is 200 visible words necessary? The lack of a quantified threshold leaves practitioners in the dark.

Attention: If your site generates canonicals dynamically, audit your Search Console logs to detect potential divergences between the indexed URL and the declared canonical. A recurring gap signals a rendering or timing problem.

Practical impact and recommendations

What should you do concretely to avoid this problem?

The first rule: never inject a default or placeholder canonical in the server HTML. If your CMS or framework generates a tag with a temporary value (e.g., the root URL or a generic route), remove it from the server side and only add it on the client side, once the data is reliable.

The second point: favor Server-Side Rendering (SSR) or static generation for SEO high-stakes pages. A Next.js or Nuxt.js site configured in SSR returns complete HTML with the correct canonical from the server response, eliminating the risk of divergence. If the SPA is unavoidable, use pre-rendering for main landing pages.

How to verify that Googlebot reads the correct canonical?

Use the URL Inspection tool in Search Console: compare the raw HTML (tab “More Info” > “HTML source”) and the rendered HTML (tab

❓ Frequently Asked Questions

Que se passe-t-il si je n'ai aucune balise canonical sur ma page ?
Google détermine lui-même l'URL canonique en analysant le contenu, les redirections et les signaux internes. C'est moins risqué qu'une canonical incorrecte, mais vous perdez le contrôle sur la consolidation des signaux.
Peut-on corriger une canonical incorrecte uniquement via JavaScript ?
Oui, mais Google peut avoir déjà enregistré la valeur serveur avant le rendu. Si la correction arrive trop tard, le moteur conserve la première version. Mieux vaut ne pas en mettre côté serveur si elle est fausse.
Les canonicals relatives posent-elles le même problème ?
Oui, surtout côté client sans base href défini. Googlebot peut mal interpréter le chemin. Privilégiez toujours les URLs absolues avec protocole et domaine complets.
Comment savoir si Google a lu la mauvaise canonical sur mon site ?
Comparez le HTML brut et le HTML rendu dans l'outil Inspection d'URL de Search Console. Si la canonical diffère, ou si Google indexe des URLs non souhaitées, vous avez probablement un problème de timing ou de rendu.
Le passage en SSR résout-il définitivement ce risque ?
Oui, si le SSR renvoie le HTML complet avec la bonne canonical dès la réponse serveur, il n'y a plus de divergence entre HTML brut et rendu. C'est la solution la plus sûre pour les sites à fort enjeu SEO.
🏷 Related Topics
Content Crawl & Indexing AI & SEO Links & Backlinks

🎥 From the same video 50

Other SEO insights extracted from this same Google Search Central video · duration 39 min · published on 17/06/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.