Outline Technologies — SEO, AEO & GEO Agency
Back to Blog
Technical SEOTechnical Guide

Static HTML Wins the AI Crawler War

Most AI crawlers do not execute JavaScript. If your content only exists after hydration, they receive navigation and an empty shell. How to test what a crawler really gets, why this is the most common invisible cause of never being cited, and the rendering strategies that survive.

Abd Shanti 10 min readAugust 12, 2026
In This Guide
The short versionWhy AI crawlers differ from GooglebotHow to test what a crawler receivesWhat an empty shell looks likeRendering strategies that workContent behind interactionsIt is the strategy, not the frameworkFAQ

The Short Version

Most AI crawlers do not run JavaScript. They request the HTML and read what is in it. If your main content is injected on the client, those agents see a page with a header, a nav and nothing to quote.

This is the most common invisible cause of never being cited, and it is invisible precisely because the page looks perfect in your browser.

Why AI Crawlers Differ From Googlebot

Google renders JavaScript at scale, because it has spent two decades building the infrastructure to do it. That capability is expensive and most AI crawler operators have not replicated it.

So the mental model many teams carry, that a crawler will eventually render the page, is true for Google and false for most of the agents that decide whether you appear in an AI answer. Ranking in Google and being quoted by an assistant now have different technical prerequisites.

How to Test What a Crawler Receives

01

Fetch the page without a browser

Request the URL the way a crawler does and capture the raw response. No rendering, no JavaScript, no waiting.

02

Search that response for a sentence from your article

Pick a distinctive line from the middle of the page. If it is not in the raw HTML, it does not exist for any agent that does not render.

03

Repeat for a page type, not just the homepage

Homepages are frequently server rendered while article or product templates are not. Test the template that carries your actual content.

The one command test

This is the highest value check in AI visibility work and it takes seconds. Everything else, the writing, the schema, the licensing files, is downstream of whether the content is present at all.

What an Empty Shell Looks Like

A shell response usually contains the document head, the navigation, a root element, and a script tag. It reads as a complete page to a validator and as nothing at all to a reader. If the body of your response is a single empty div, that is what every non rendering agent has been reading.

Rendering Strategies That Work

StrategyContent in initial HTMLNotes
Static generationYesBest fit for articles and documentation, and the cheapest to serve
Server side renderingYesRight when content is personalised or changes per request
Prerendering for botsYes, for the agents you configureWorks, but you maintain a second path and it can drift
Client side onlyNoThe failure case, and the default in several popular setups

Content Behind Interactions

Tabs, accordions and read more toggles are fine if the text is in the HTML and merely hidden with styling. They fail if the content is fetched when the user clicks, because nothing that reads your page will ever click.

The test is the same as for the page overall. Ask whether the words exist in the response, not whether they appear on the screen.

It Is the Strategy, Not the Framework

No modern framework prevents you from shipping complete HTML, and plenty of sites built with them are cited constantly. The problem is a default configuration that renders on the client, which is common enough that it is worth verifying rather than assuming.

Before you rewrite anything

Run the fetch test first. Teams routinely rebuild content that was fine, when the actual fault was that nothing could read it. Confirm the content is reaching the crawler before you touch a single sentence of it.

Frequently Asked Questions

Do AI crawlers execute JavaScript?

Most do not. Search engines like Google render JavaScript at scale, but the majority of AI crawlers and fetchers request the HTML and read what is in it. If your content only exists after hydration, those agents receive a page with navigation and no substance, which is the most common invisible cause of never being cited.

How do I test what an AI crawler actually sees?

Fetch your page the way a crawler does, without a browser, and read the raw HTML that comes back. If your main content is missing from that response, it is missing for every agent that does not render. This takes one command and it is the single highest value check in AI visibility work.

Is server side rendering required for AI visibility?

Not required, but you need the content present in the initial HTML by some route. Server rendering, static generation and prerendering all achieve that. What fails is shipping an empty shell that fetches content on the client, because the agents that matter here never run the fetch.

Does a JavaScript framework hurt my AI citations?

The framework does not, the rendering strategy does. Any modern framework can output complete HTML, and plenty of sites using them are cited constantly. The problem is a default configuration that renders on the client, which is common enough that it is worth checking rather than assuming.

What about content behind interactions like tabs and accordions?

If the text is in the HTML it is readable even when visually hidden, and if it is fetched on click it is not. The test is the same as for the page overall. Content that only exists after a user gesture cannot be quoted by something that never gestures.

Not sure what AI crawlers actually receive from your site?

We fetch your key templates the way each major agent does and show you exactly which pages arrive empty, before you spend anything on content.

Get an AI visibility audit