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

With JSON-LD, there can be synchronization issues if Google needs to fetch a different resource. There is a risk that the JavaScript won't be downloaded at the same time as the HTML, creating a potential synchronization problem.
🎥 Source video

Extracted from a Google Search Central video

💬 EN 📅 07/04/2022 ✂ 14 statements
Watch on YouTube →
Other statements from this video 13
  1. Pourquoi Google préfère-t-il les données structurées au machine learning pour comprendre vos pages ?
  2. Faut-il encore se fatiguer avec les données structurées si le machine learning fait le boulot ?
  3. Les données structurées donnent-elles vraiment du contrôle aux webmasters sur l'affichage Google ?
  4. Google vérifie-t-il réellement l'exactitude de vos données structurées ?
  5. Pourquoi Google recommande-t-il de commencer par les données structurées génériques ?
  6. Pourquoi votre Schema.org valide peut être rejeté par Google ?
  7. Faut-il implémenter des données structurées même si Google ne les utilise pas encore ?
  8. Les données structurées influencent-elles vraiment la compréhension du sujet d'une page par Google ?
  9. Les données structurées sont-elles vraiment utiles si Google comprend déjà votre page ?
  10. Faut-il vraiment bourrer vos pages de données structurées pour mieux ranker ?
  11. Faut-il abandonner JSON-LD au profit de Microdata pour les données structurées ?
  12. Les outils de test Google sont-ils vraiment fiables pour détecter vos données structurées manquantes ?
  13. Les données structurées doivent-elles systématiquement refléter le contenu visible de la page ?
📅
Official statement from (4 years ago)
TL;DR

Ryan Levering reveals that JSON-LD loaded from an external resource can create timing delays during Google's crawl. If the JavaScript carrying the JSON-LD isn't downloaded simultaneously with the HTML, the bot risks indexing a page without its structured data — or worse, with outdated data.

What you need to understand

Why is Google suddenly talking about a "synchronization problem"?

The classic JSON-LD implementation involves inserting the script directly into the page's HTML. The crawler receives everything at once: markup, content, structured data. No friction.

But some sites — often via tag management systems or JS frameworks — load the JSON-LD from an external file or through dynamic injection. In this case, Google must first parse the HTML, discover that an external script exists, then make a second request to retrieve it. Between the two, a timing delay appears. And that delay is what Levering calls a "synchronization problem".

What is the concrete risk for indexing?

If the bot crawls the page but the JavaScript updating the JSON-LD hasn't been executed or downloaded yet, two scenarios present themselves:

  • The JSON-LD is absent from the version analyzed by Google
  • The JSON-LD is present but contains outdated data (case of SPAs that update the schema on the client side)
  • The final rendering differs between what the user sees and what Google indexes, creating a semantic understanding gap

Google prioritizes speed. If the external resource takes too long to load, the crawler may simply move on without waiting.

How does this differ from classic inline JSON-LD?

With inline JSON-LD, everything is served all at once. The crawler retrieves the complete HTML, parses the <script type="application/ld+json"> tags, and indexes. Zero additional requests, zero latency.

With external or JS-injected JSON-LD, the bot must handle asynchronicity. And even though Google is now capable of executing JavaScript, nothing guarantees that it will wait indefinitely for a third-party script to load. That's the whole nuance of this statement.

SEO Expert opinion

Is this statement consistent with field observations?

Yes — and it's even quite transparent on Google's part. On sites tested with JSON-LD loaded via GTM or external CDNs, we regularly find that Search Console doesn't report structured data even though it's well present in the DOM on the client side.

Some practitioners have even noticed enrichments (FAQ, Breadcrumb, Product) that disappear and reappear in the SERP — a classic sign of incomplete or poorly synchronized crawling. Let's be honest: Google crawls fast, and if your JSON-LD arrives 500 ms too late, it risks missing the window.

In which cases doesn't this rule apply?

If your JSON-LD is served inline in the first HTML returned by the server, this issue doesn't concern you. You're in the nominal case that Google handles without friction.

On the other hand, if you use a JS framework (React, Vue, Next in CSR mode without proper SSR) or a tag manager to inject the schema after the first paint, you're potentially exposed. [To verify]: Google claims that its crawler waits "a certain time" before rendering the page, but no official duration is communicated. It's vague, and it remains intentionally so.

Should you completely abandon external JSON-LD?

No. But you must understand the trade-off. If your architecture requires JS to generate the schema (e.g. product data pulled from a client-side API), make sure at minimum that:

  • The script loads with high priority (preload, intelligent defer)
  • SSR rendering or pre-rendering generates the JSON-LD before sending to the client
  • You regularly validate via the rich results testing tool + Search Console

The risk isn't systematic, but it exists. And Levering says it plainly: synchronization can fail. It's up to you to ensure it doesn't.

Warning: If you notice that your structured data appears intermittently in Search Console, this is probably the timing issue. Test with inline JSON-LD for comparison.

Practical impact and recommendations

What exactly should you do to avoid this problem?

The most robust solution remains server-side injection. Generate your JSON-LD during the build or SSR render, and insert it directly into the HTML before it's sent to the client. No asynchronous request, no delay.

If you use a classic CMS (WordPress, Shopify, Prestashop), verify that your SEO plugins (Yoast, Rank Math, SEOPress) generate the schema inline in the source code — this is normally the default, but some themes or extensions may move it.

What mistakes should you absolutely avoid?

  • Don't load JSON-LD from an external script hosted on a third-party CDN without latency control
  • Don't rely solely on Google Tag Manager to inject critical structured data (Product, Article, FAQ)
  • Don't assume that Google will wait "long enough" — it won't always
  • Don't forget to test the crawled version via the URL Inspection Tool in Search Console, not just in your browser

And above all: don't make the mistake of believing that JSON-LD that "displays well in client source code" will necessarily be seen by Google. Just because your DevTools shows it doesn't mean the bot retrieved it at the right time.

How do you verify that your site is compliant?

Use the rich results testing tool in live URL mode, not code snippet mode. This forces Google to actually crawl your page and shows you what it sees.

Then compare with what Search Console reports in the "Enhancements" section. If pages that are valid in testing aren't detected in production, you likely have a timing problem.

The best practice: inline JSON-LD, generated server-side, in the initial HTML. If your current architecture doesn't easily allow this — particularly on complex JS stacks or e-commerce environments with heavy personalization — this type of optimization can quickly become technical. In that case, calling on an SEO-specialized agency allows you to thoroughly audit your rendering architecture and implement a structured data integration strategy tailored to your stack, without risk of regression.

❓ Frequently Asked Questions

Le JSON-LD chargé via Google Tag Manager est-il concerné par ce problème ?
Oui, totalement. GTM injecte le script après le chargement initial de la page, ce qui crée précisément le décalage temporel évoqué par Levering. Privilégie une implémentation serveur pour les schemas critiques.
Google attend combien de temps avant de rendre une page avec JavaScript ?
Google ne communique aucune durée officielle. On sait que le crawler exécute du JS, mais rien ne garantit qu'il attendra qu'un script externe tiers finisse de charger si celui-ci est lent ou bloqué.
Est-ce que ce problème touche aussi les microdonnées et RDFa ?
Non, car ces formats sont directement intégrés dans le HTML servi. Ils ne dépendent pas d'un chargement asynchrone de ressource externe. Le risque est spécifique au JSON-LD injecté dynamiquement.
Peut-on détecter ce problème dans Search Console ?
Partiellement. Si tes données structurées n'apparaissent pas dans la section Améliorations alors qu'elles sont présentes dans le code source client, c'est un signal fort. Utilise aussi l'URL Inspection Tool pour voir ce que Google crawle réellement.
Faut-il complètement abandonner l'injection JS de JSON-LD ?
Pas nécessairement, mais il faut bien maîtriser le timing. Si tu ne contrôles pas la latence du script ou si ton rendu est entièrement côté client sans SSR, tu prends un risque. L'inline reste la voie la plus sûre.
🏷 Related Topics
Structured Data AI & SEO JavaScript & Technical SEO

🎥 From the same video 13

Other SEO insights extracted from this same Google Search Central video · published on 07/04/2022

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