Share
Why Do AI Tools See a Different Page Than Your Visitors?

Why Do AI Tools See a Different Page Than Your Visitors?

By AEO Bob Team, Master 22 Solutions, makers of the AEO Bob plugin and free AI auditPublished Updated
AI crawlersJavaScriptPrerenderingTechnical SEOAnswer Engine Optimization

AI tools can see a different page because many crawlers fetch raw HTML without running JavaScript. Visitors’ browsers run that code and build the complete page, while crawlers may receive an almost empty shell. We can make important content accessible in the initial HTML through server rendering or prerendering.

AI tools can see a different page than your visitors because many AI crawlers fetch raw HTML without running JavaScript. If your website relies on JavaScript to load its text, visitors may see a complete page while those crawlers receive an almost empty shell. Server rendering or prerendering puts the important content into the initial HTML so it doesn't depend on a browser doing extra work.

This is easy to miss during a normal website review. We open a page, see the headline and services, and assume that anyone requesting the same URL gets the same information. On a JavaScript app, that's not necessarily true.

Your browser can download the initial document, run application code, request more data and build the finished page. A crawler that stops after the first step never reaches that finished version. It may find a site name and a loading message, but none of the useful material underneath.

That makes this a delivery problem before it's a writing problem. Better answers and clearer headings won't help a crawler if those improvements exist only after JavaScript runs.

We treat this as part of the technical foundation shared by SEO and Answer Engine Optimization. SEO and AEO have different goals, but both need accessible, understandable pages. AEO adds an AI layer on top of good SEO, not a replacement for it.

What is the difference between raw HTML and a rendered page?

Raw HTML is the document your server returns when someone requests a URL. A rendered page is what a browser produces after processing that document, applying styles and running any JavaScript. Sometimes those versions contain essentially the same text; sometimes they're very different.

A content-rich HTML response

On a traditional server-rendered page or a statically generated page, the response already includes the heading, paragraphs, links and other key information. JavaScript might add a menu, calculator or booking widget, but it doesn't have to create the core explanation.

A crawler can read that explanation straight from the response. It doesn't need to wait for application code or a separate request to a content API.

A client-rendered JavaScript app

In a client-rendered app, the initial HTML can contain little more than a container for the application. The browser runs JavaScript to decide which page to display and fetch the content that belongs there.

Visitors with a working browser see the result and may never notice the extra steps. A fetch-only crawler sees the container, not the completed page.

  • What visitors see: a service description, pricing information, answers and navigation.
  • What the initial response contains: a basic page shell and instructions for loading the app.
  • What a crawler can extract: only the information available through the fetching and rendering capabilities it actually uses.

Not every AI crawler behaves the same way, and some tools can render JavaScript. We shouldn't assume either universal rendering or universal failure. The practical approach is to make important public content available without requiring it.

How can you check what your server actually sends?

Start with a page that matters, such as a service page, product page or detailed guide. Test its exact URL rather than assuming the homepage represents the whole site.

One useful check is curl, a command-line tool that retrieves a response without running the page's JavaScript. This command follows redirects and saves the returned HTML to a file:

curl -sSL https://example.com/services/ > page.html

Open the file in a text editor and search for a distinctive sentence from the visible page. Then look for the main heading, meaningful links and page-specific metadata. We want the important text in readable HTML elements, not just buried inside application data that another program would need to interpret.

Your browser's View Page Source option is another useful starting point. The Elements panel in developer tools usually shows the live document after JavaScript has modified it, so it can hide the problem you're trying to diagnose.

  1. Load the page normally and note its main heading and a unique sentence.
  2. Fetch the same URL with curl or inspect its source.
  3. Check whether the heading and sentence appear as page content.
  4. Check the title, description and canonical URL.
  5. Repeat with several deeper pages, including a recently published one.

You can also run the free AI audit as a starting point for reviewing your site. Keep the raw-response check alongside it when investigating a JavaScript rendering issue.

A curl response isn't a perfect simulation of every crawler. Servers can vary responses by user agent, location or access controls, and crawler permissions still matter. It does answer a useful first question: what does this request receive before JavaScript runs?

How do server rendering and prerendering fix the problem?

Both approaches make useful HTML available in the initial response. The main difference is when that HTML gets created, which affects how we handle updates, caching and deployment.

Server-side rendering

Server-side rendering generates the page's HTML on the server when a request arrives, sometimes with caching to avoid repeating the work. The response can include the current heading, body content and metadata before the browser runs any application code.

This can suit content that changes frequently or depends on request-time data. It does introduce server work, so the implementation needs sensible performance and caching decisions.

Prerendering or static generation

Prerendering creates HTML ahead of the visitor's request, often during a build or publishing process. The server can then deliver a ready-made page instead of an empty application shell.

This is often a good fit for public marketing pages, documentation and articles. The important operational detail is freshness: when the content changes, the generated HTML needs to change too.

We ran into this distinction on aeobob.com itself. The site is a JavaScript app, and it now ships prerendered HTML for every page. The app hasn't stopped being a JavaScript app; the key difference is that each page now arrives with HTML rather than relying on client-side rendering alone.

Keep interactivity without hiding the content

Neither approach requires removing JavaScript. A browser can receive useful HTML first and then attach interactive behavior, commonly called hydration.

We still need to test the result rather than trusting the name of a framework setting. Fetch a deep URL directly and confirm that its own content is present. A prerendered homepage doesn't solve missing HTML on every service page underneath it.

What content and metadata should each page include?

If a full rendering change isn't immediately practical, start by making a static copy of the key content available in each page's initial HTML. By static copy, we mean normal page content that visitors and crawlers can access, not a separate keyword-filled version shown only to bots.

For a service page, that usually means the service name, what it includes, who it's for and the next step. For an article, it means the actual explanation, not just a headline and a prompt to enable JavaScript.

  • A clear heading and body: include the central answer and supporting details in readable HTML.
  • Relevant links: use normal links with real destinations for important navigation.
  • A page-specific title: describe that page rather than repeating the same generic site title everywhere.
  • A useful meta description: summarize the individual page accurately.
  • A correct canonical: identify the preferred URL, usually the page's own URL when it's a distinct, original page.

Those metadata elements should be in the initial response too. Changing the browser tab title after the app loads doesn't help a tool that never runs the code making that change.

Canonicals deserve particular care on JavaScript sites. Accidentally giving every route the homepage canonical sends the wrong consolidation signal. A canonical also doesn't replace content, guarantee indexing or force an AI tool to cite a page.

Finally, check that real pages return appropriate success responses and missing pages return appropriate error responses. Keep the static and interactive versions consistent, and verify fresh HTML after publishing. This is why we describe AEO as the next layer on top of SEO: sound delivery comes before polishing content for answers.

Frequently Asked Questions

Do all AI crawlers ignore JavaScript?

No. Capabilities vary, and some AI tools can use browser rendering. Many crawlers fetch HTML without running JavaScript, so we recommend delivering essential public content in the initial response rather than relying on a particular tool's rendering support.

Does a JavaScript website need to be rebuilt?

Not necessarily. Your current framework or hosting setup may support server rendering, static generation or prerendering. We would first check the available options and test a representative page before committing to a larger rebuild.

Is embedded JSON enough to make page content accessible?

Not reliably. Some tools may extract information from embedded data, but that isn't the same as receiving a readable page. Put the key explanation in ordinary HTML headings, paragraphs and links instead of depending on a crawler to reconstruct it.

Will prerendering guarantee AI citations?

No. Prerendering removes a potential access barrier, but it doesn't guarantee crawling, selection or citations. Content quality, relevance, crawl permissions and other signals still matter, and each AI service makes its own retrieval decisions.

How often should raw HTML be checked?

Check after changes to rendering, routing, templates or publishing workflows. We also recommend spot-checking new pages and updated content so a successful deployment doesn't hide stale prerendered files or routes that still return an empty shell.

Want to check your own site?

Run the free AEO audit to see your score and get ready-to-paste fixes. Using WordPress? AEO Bob Lite is free on WordPress.org. Rather have it done for you? Our done-for-you fixes start at $497.

Share

Ready to Optimize Your Content for AI?

AEO Bob helps you score and improve every page for both traditional search engines and AI assistants.

Get Started with AEO Bob