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

During server-side rendering, if the application state is serialized as JSON in the page (for hydration) in addition to the rendered HTML, it does not pose a duplicate content issue. Google only looks at the DOM, not the in-memory state or embedded JSON data for the application.
20:02
🎥 Source video

Extracted from a Google Search Central video

⏱ 51:17 💬 EN 📅 12/05/2020 ✂ 37 statements
Watch on YouTube (20:02) →
Other statements from this video 36
  1. 1:02 Faut-il ignorer le score Lighthouse pour optimiser son SEO ?
  2. 1:02 La vitesse de page est-elle vraiment un facteur de classement Google ?
  3. 1:42 Lighthouse et PageSpeed Insights ne servent-ils vraiment à rien pour le ranking ?
  4. 2:38 Les Web Vitals de Google modélisent-ils vraiment l'expérience utilisateur ?
  5. 3:40 La vitesse de page est-elle vraiment un facteur de ranking aussi décisif qu'on le prétend ?
  6. 7:07 Faut-il vraiment injecter la balise canonical via JavaScript ?
  7. 7:27 Peut-on vraiment injecter la balise canonical via JavaScript sans risque SEO ?
  8. 8:28 Google Tag Manager ralentit-il vraiment votre site et faut-il l'abandonner ?
  9. 8:31 GTM sabote-t-il vraiment votre temps de chargement ?
  10. 9:35 Servir un 404 à Googlebot et un 200 aux visiteurs est-il vraiment du cloaking ?
  11. 10:06 Servir un 404 à Googlebot et un 200 aux utilisateurs, est-ce vraiment du cloaking ?
  12. 16:16 Les redirections 301, 302 et JavaScript sont-elles vraiment équivalentes pour le SEO ?
  13. 16:58 Les redirections JavaScript sont-elles vraiment équivalentes aux 301 pour Google ?
  14. 17:18 Le rendu côté serveur est-il vraiment indispensable pour le référencement Google ?
  15. 17:58 Faut-il vraiment investir dans le server-side rendering pour le SEO ?
  16. 19:22 Le JSON sérialisé dans vos apps JavaScript compte-t-il comme du contenu dupliqué ?
  17. 20:24 Cloudflare Rocket Loader passe-t-il le test SEO de Googlebot ?
  18. 20:44 Faut-il tester Cloudflare Rocket Loader et les outils tiers avant de les activer pour le SEO ?
  19. 21:58 Faut-il ignorer les erreurs 'Other Error' dans Search Console et Mobile Friendly Test ?
  20. 23:18 Faut-il vraiment s'inquiéter du statut 'Other Error' dans les outils de test Google ?
  21. 27:58 Faut-il choisir un framework JavaScript plutôt qu'un autre pour son SEO ?
  22. 31:27 Le JavaScript consomme-t-il vraiment du crawl budget ?
  23. 31:32 Le rendering JavaScript consomme-t-il du crawl budget ?
  24. 33:07 Faut-il abandonner le dynamic rendering pour le SEO ?
  25. 33:17 Faut-il vraiment abandonner le dynamic rendering pour le référencement ?
  26. 34:01 Faut-il vraiment abandonner le JavaScript côté client pour l'indexation des liens produits ?
  27. 34:21 Le JavaScript asynchrone post-load bloque-t-il vraiment l'indexation Google ?
  28. 36:05 Faut-il vraiment passer sur un serveur dédié pour améliorer son SEO ?
  29. 36:25 Serveur mutualisé ou dédié : Google fait-il vraiment la différence ?
  30. 40:06 L'hydration côté client pose-t-elle vraiment un problème SEO ?
  31. 40:06 L'hydratation SSR + client est-elle vraiment sans danger pour le SEO Google ?
  32. 42:12 Faut-il arrêter de surveiller le score Lighthouse global pour se concentrer sur les métriques Core Web Vitals pertinentes à son site ?
  33. 42:47 Faut-il vraiment viser 100 sur Lighthouse ou est-ce une perte de temps ?
  34. 45:24 La 5G va-t-elle vraiment accélérer votre site ou est-ce une illusion ?
  35. 49:09 Googlebot ignore-t-il vraiment vos images WebP servies via Service Workers ?
  36. 49:09 Pourquoi Googlebot ignore-t-il vos images WebP servies par Service Worker ?
📅
Official statement from (5 years ago)
TL;DR

Google states that serializing the application state as JSON for client-side hydration does not pose any duplicate content issues. The search engine focuses solely on the rendered DOM, ignoring embedded JSON data for JavaScript initialization. In practice, you can continue using your modern frameworks without fearing penalties, but ensure that critical content appears in the initial HTML.

What you need to understand

What is hydration and why does it generate JSON in the page?

When a React, Vue, or Next.js application performs server-side rendering, the server sends a complete HTML document to the browser. But for the interface to become interactive, the JavaScript framework must take over on the client side.

This process is called hydration. To avoid redoing all API calls, the server serializes the application state into a <script type="application/json"> block or a global variable. The result? The same content appears twice: once rendered as visible HTML, and once as raw JSON in the source code.

Why are some SEO practitioners worried about this duplication?

It seems logical: if Google penalizes duplicate content across different pages, why wouldn't it do so within a single page? Some feared that these large JSON blobs would be interpreted as keyword stuffing or hidden text.

This fear was based on a partial understanding of how Googlebot works. The crawler executes JavaScript, accesses the complete DOM, and could technically detect these structural duplicates. But detecting does not mean penalizing.

What does Martin Splitt specifically say about this topic?

Google's position is clear: the engine only looks at the rendered DOM. The embedded JSON data for hydration is not considered indexable content. Googlebot distinguishes between the visual rendering and the application initialization code.

In practice, this means that your __NEXT_DATA__ blocks, your window.__STATE__, or your <script type="application/json"> tags are transparent for indexing. Google does not care whether data exists in memory or in a script — what matters is what is displayed in the DOM tree accessible to the user.

  • Server-side rendering with hydration is totally safe for SEO
  • Modern frameworks (Next.js, Nuxt, SvelteKit) do not create a risk of internal duplication
  • Google clearly differentiates between visible content and technical application code
  • This clarification applies to all types of serialized state: props, Redux store, React context, etc.
  • No special optimization is needed to "hide" this JSON from Google

SEO Expert opinion

Is this statement consistent with field observations?

Absolutely. For years, sites using Next.js or Gatsby have never reported penalties related to the presence of __NEXT_DATA__ or its equivalent. If Google were to actually penalize this practice, SSR SPAs would have suffered massively — which is not the case.

Practical tests confirm: two versions of the same page, one with a large JSON state and the other without, achieve identical ranking performances with equal HTML content. Ranking depends on the visible DOM, not the underlying application state.

What nuances should we add to this statement?

To be honest: this clarification does not resolve all SEO issues for JavaScript applications. It strictly relates to internal duplication. If your critical content only appears client-side after hydration, Google will not see it — but that's another topic.

Second point: the size of the JSON payload can impact Core Web Vitals. A 500 KB blob slows down parsing, increases the Largest Contentful Paint, and degrades the user experience. Google won't penalize you for duplication, but potentially for poor performance.

Attention: This rule only applies to technical application state. If you inject editorial content solely into JSON without a visible equivalent in the DOM, Google will not index it. Hydration assumes pre-existing complete HTML on the server side.

In what cases does this rule not provide complete protection?

If your framework generates minimal HTML and loads all content via JavaScript after hydration, you step outside classic SSR. Google crawls the post-rendering DOM, indeed, but with time and resource limitations. A site that takes 8 seconds to display its content risks partial indexing, JSON or not.

Another edge case: sites that serialize sensitive or redundant data in the JSON state. Even if Google ignores this content for indexing, it can pose security issues or unnecessarily inflate the page size. The SEO rule is clear, but the best technical practice may diverge.

Practical impact and recommendations

What concrete actions should you take on your tech stack?

Nothing particular if you are already using clean server-side rendering. Continue letting your frameworks generate their hydration state as they do natively. There's no need to try to hide, minify, or obfuscate the embedded JSON for SEO reasons — it’s a waste of time.

Focus on what really matters: ensure that your critical content appears in the initial HTML sent by the server. Use the URL inspection tool in the Search Console or a simple curl to check what Googlebot receives before any JavaScript.

What mistakes should be avoided with modern frameworks?

Do not confuse SSR with client-side rendering. If you use React in pure SPA mode (create-react-app without SSR), your content loads after hydration — and at that point, Google may have difficulty indexing everything. The issue is not the JSON, it’s the absence of initial HTML.

Avoid artificially inflating the application state with unnecessary data. Even if Google doesn’t care, every KB counts for performance. A user on mobile 3G will pay for an excessive payload, and indirectly, your ranking via Core Web Vitals.

How to verify that your implementation is compliant?

Test your page with JavaScript disabled or in curl mode. Essential content must be present in the raw HTML. Then, check in the Search Console that Google is seeing the complete DOM with the URL inspection tool.

Compare the initial HTML rendering and the rendering after hydration. If the content changes drastically, it's a warning signal. Hydration should make the page interactive, not fill it with content absent from the server HTML. A well-architected site shows the same text before and after JavaScript — only events and interactions should be added.

  • Ensure that priority content is present in the source HTML (view-source: or curl)
  • Test with the URL inspection tool in the Search Console to see what Google actually indexes
  • Measure the weight of your JSON state: beyond 100-150 KB, question its necessity
  • Compare the rendering with JavaScript disabled vs. enabled: the delta should be minimal on editorial content
  • Monitor your Core Web Vitals, particularly the LCP and TBT which can suffer from excessive payload
  • Document your SSR architecture to prevent regressions during refactoring
Duplicated application state in JSON does not create any direct SEO risk, but remains an indicator of overall technical quality. A well-optimized site limits this payload to what's strictly necessary, ensures a rich HTML on the server side, and maintains high performance. If these technical trade-offs between SEO, performance, and hydration seem complex to balance alone, enlisting a specialized SEO agency in modern JavaScript architectures can help you avoid costly mistakes and accelerate your compliance with best practices.

❓ Frequently Asked Questions

Le JSON d'hydratation ralentit-il l'indexation de ma page ?
Non, Google ignore complètement ce JSON pour l'indexation. Il peut en revanche ralentir le parsing côté client et impacter les Core Web Vitals, mais pas le crawl ou le classement direct.
Dois-je compresser ou minifier le JSON embarqué pour le SEO ?
Pour le SEO, non, puisque Google ne le lit pas comme du contenu. Pour la performance utilisateur, oui : utilisez la compression gzip/brotli et limitez la taille de l'état sérialisé.
Si je mets du contenu uniquement dans le JSON sans HTML, sera-t-il indexé ?
Non. Google indexe le DOM rendu, pas l'état applicatif. Si un texte n'apparaît jamais dans le HTML visible, il ne sera pas pris en compte pour le ranking.
Cette règle s'applique-t-elle aux SPA purs sans server-side rendering ?
Le problème des SPA n'est pas le JSON mais l'absence de contenu dans le HTML initial. Google crawl le DOM après JavaScript, mais avec des limitations de temps et ressources.
Peut-on utiliser cette technique pour cacher du contenu sensible de Google ?
Techniquement oui, mais ce n'est pas son usage prévu. Si vous voulez vraiment exclure du contenu de l'indexation, utilisez noindex, robots.txt ou des zones authentifiées, pas un hack JSON.
🏷 Related Topics
Domain Age & History Content Crawl & Indexing AI & SEO JavaScript & Technical SEO

🎥 From the same video 36

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