Dude, where's my schema?

JS-rendered schema is invisible to AI crawlers even when it passes Google validation. A finding from client audit work that could be affecting your site.

Illustrated scene showing a confused marketer lost at a desert crossroads with signs pointing to Raw HTML, JSON-LD, and AI Answers, with an SEO road trip van in the background
Article
4
min read

Dude, where's my schema?

You have great content and took the time to build a solid schema strategy that Google can easily grab on to. Your SEO investments are keeping you visible in Google Search, and so long as people keep searching the same way, all is good.

So why aren’t you visible in AI?

Checking a schema on a webpage is fairly straightforward using the Google Rich Results Test. And you can always download the page sources and share it with your favorite AI tool.  But if you stop there, you could be in for an unpleasant surprise.

How that schema made its way to the page matters, because AI crawlers and Google take different paths to read it.  Your schema can arrive in the HTML two different ways raw in HTML, or injected via JS. The difference is invisible to most audits.

Classification Meaning AI can read?
static JSON-LD found in raw HTML YES
both JSON-LD in raw HTML AND additional JS-rendered types Partial
js-only NO JSON-LD in raw HTML; schema present only after JS executes NO. Nada.

For a schema that is only there after JS, this is what Claude came back with after checking a site in a real audit:

No schema markup whatsoever in the raw HTML response. Not a single <script type="application/ld+json"> block. No microdata attributes. No schema of any kind that an AI crawler would see on fetch.

Even without schema, AI can read the page the same way that us mere mortals read it.  The content is visible.  And your page could indeed be cited.

But schema is still an important signal, particularly inside Google's and Bing's own ecosystems, where dedicated infrastructure parses structured data for entity disambiguation and knowledge graph inclusion. The structured identity layer is missing. For a company in a competitive category, that gap matters at the margin, and margins are where citation decisions get made.

The fork in the road

This is one of the biggest differences in technical readiness between SEO and AEO.

An AEO-first approach produces schema that both can read. When you build your site for AEO, you are not only writing content that answers real questions and amplifies your brand, you are pairing it with a schema layer that AI crawlers can actually read. Your AEO efforts in schema building will already be useful for your SEO needs.

SEO practitioners could be validating against the wrong evaluator. Google's Rich Results Test was designed for Google, and it does that job well. The issue is assuming a green checkmark covers AI crawler visibility too. Schema can become JS-dependent in several ways: a GTM Custom HTML tag firing at runtime, a CMS plugin or theme injecting it via JavaScript, or a client-side rendering framework that builds the page in the browser rather than the server. In every case, the schema exists, it's just not in the raw HTML response that AI crawlers read. Whatever the platform, what determines visibility is how the schema arrives in the HTML.

Getting found versus getting picked

Fixing the JS-rendering problem solves one thing: whether AI crawlers can see your schema at all. It does not solve a second, separate question: whether schema earns you more citations once it is visible.

Ahrefs recently tested this directly, tracking 1,885 pages that added JSON-LD and measuring citation changes across Google AI Overviews, Google AI Mode, and ChatGPT. The result: no meaningful citation lift on any platform. In the same study, Ahrefs tested five major AI systems, ChatGPT, Claude, Perplexity, Gemini, and Google AI Mode, by fetching pages directly. None of them used the JSON-LD. Every system extracted only the visible HTML content.

If anything, this explains why the fix above matters even more. If AI tools read structured data the same way they read any other text on the page, rather than specially validating it, then JS-rendered schema loses the one thing it had going for it: it was never being read as text either, because it was never in the response at all. Fixing this gets your schema into the room. Whether anyone listens once it's there is a different question.

Where schema still does real work is inside Google's and Bing's own infrastructure. Both run dedicated pipelines that parse structured data for entity disambiguation and knowledge graph inclusion, separate from how they generate an AI answer. Outside of that, the lift comes from somewhere else: visible content that answers a real question clearly enough for an AI system to lift it directly.

What you can do

Start by checking what AI actually sees. Download the raw HTML of your key pages and search for application/ld+json. If it's not there, your schema is JS-rendered and invisible to AI crawlers regardless of what Google's Rich Results Test says.

If it's missing, the fix depends on how your schema is being delivered, but in most cases it means moving it out of GTM or your CMS's JS layer and into a static head snippet.

The broader point: build schema for AI first. Static JSON-LD in raw HTML works for both Google and AI crawlers. JS-rendered schema works for Google only. AEO-first schema strategy covers both bases without doubling the effort.

We check for this in every AEO Readiness Assessment, alongside the content and authority signals that schema alone can't replace.

Related Glossary Terms

Related blogs from AEO Wrangler

All AEO Wrangler blogs →

Ready to improve your AI visibility?

Get the AEO Readiness Assessment →Or learn more about how we work →