Technical SEO / AEO · MOFU
Your Website Might Be Invisible to ChatGPT. Check This Before You Start AEO
Devansh Trivedi — 14 October 2026 · 6 min read

Most businesses start AEO in the same place. They add FAQ schema, rewrite headings as questions and publish an llms.txt file. Then they wait for ChatGPT to start citing them. Often, it never does.
Very few of them check one basic thing first. Does the website send its content as ready HTML, or does it build that content in the visitor's browser with JavaScript? If it is the second, most AI crawlers see an almost empty page. No amount of schema or question-led headings will fix that.
This problem is common on sites built with React, Vue or Angular. It is also common on AI website builders like Lovable and Bolt, which produce React apps by default.
What is the difference between client-side and server-side rendering?
Every web page has to become HTML before anyone can read it. The only question is where that happens.
Server-side rendering (SSR): The server builds the full page before sending it. When a browser or a crawler asks for the URL, it receives complete HTML. The headings, paragraphs, prices and links are already in it. WordPress works this way by default. So do frameworks like Next.js and Nuxt when they are set up for it. Static site generation is a close relative. Pages are built ahead of time and served as finished HTML.
Client-side rendering (CSR): The server sends a thin HTML shell. It usually holds an empty container like <div id="root"></div> and a link to a JavaScript file. The browser downloads that file, runs it and only then fills the page with content.
Think of SSR as a restaurant serving a cooked meal. CSR is a meal kit with instructions. Your visitors' browsers cook the kit in a second, so both versions look identical to them. Most AI crawlers do not cook. They take one look at the box and leave.
Why can Google and Gemini still read client-side rendered sites?
Googlebot renders JavaScript. It fetches the raw HTML first, then queues the page and runs its JavaScript in a headless Chrome browser. That second step can be delayed, and it can fail on heavy or broken scripts. For most sites, though, Google eventually sees the finished page.
Gemini benefits from the same system. Vercel's analysis of AI crawler traffic found that Gemini uses Googlebot's infrastructure, so it gets fully rendered pages. Google's AI Overviews draw on Google's own index too.
This is why so many owners never notice the problem. The site ranks on Google. It may even appear in AI Overviews. The Google numbers look healthy, so nobody thinks to look further.
Why is client-side rendering a bottleneck for ChatGPT, Claude and Perplexity?
Their crawlers do not run JavaScript. The same Vercel study found that none of the major AI crawlers render JavaScript. That includes OpenAI's GPTBot, Anthropic's ClaudeBot and PerplexityBot. They do download JavaScript files. JS files made up 11.5% of ChatGPT's crawler requests and 23.84% of Claude's. But they never execute them, so they only read the empty shell.
Rendering is expensive at scale. Running a browser for every page costs far more than reading raw HTML. Google has spent years building that pipeline. Most AI companies skip the step and read whatever the server sends.
Your AEO work can disappear with the content. Many JavaScript sites add their meta titles, descriptions and JSON-LD schema with scripts after the page loads. If that is your setup, the FAQ schema you added for AEO is invisible to the same crawlers you added it for.
Someone else fills the gap. An AI tool cannot cite a page it has never read. When a buyer asks ChatGPT about your service, the answer comes from directories, review sites or competitors whose pages it could read. Your own site, with the most accurate information, is left out.
How do you check if your website is client-side rendered?
You can check this in about two minutes. You do not need a developer for this part.
Check 1: View page source and Ctrl+F. Open an important page, such as your homepage or a main service page. Right-click and choose "View page source", or press Ctrl+U (Cmd+Option+U on a Mac). This shows the raw HTML the server sent, before any JavaScript ran. Do not use "Inspect". Inspect shows the page after JavaScript has run, which hides the problem.
Now press Ctrl+F (Cmd+F) and search for a sentence from the middle of the page. Pick something specific, like a line from a service description or an FAQ answer. Then search for your main heading. If both appear in the source, the page is server-rendered and AI crawlers can read it. If neither appears, and you see a near-empty <div id="root"> or <div id="app"> with script tags below it, the page is client-side rendered.

Repeat this on your homepage, a service page and a blog post. Some sites render different sections differently.
Check 2: Use a browser plugin. The View Rendered Source extension for Chrome shows the raw HTML and the rendered HTML side by side, and highlights what JavaScript added. Wappalyzer tells you which framework the site uses. If it shows React, Vue or Angular without Next.js or Nuxt, look more closely. You can also switch JavaScript off with the Web Developer extension and reload the page. If the page goes blank, so does every AI crawler's view of it.
If you use Ahrefs Site Audit or Screaming Frog, compare the raw and rendered HTML for the same URL. An empty raw column is the same warning.
How do you fix it?
The goal is simple. Your important content should be in the HTML the server sends. Interactive features can still load with JavaScript on top of that.
There are a few ways to get there. A React site can move to Next.js, and a Vue site can move to Nuxt. Angular has its own SSR support. For pages that rarely change, like service pages and blog posts, prerendering at build time works well. It turns each page into a finished HTML file. A prerendering service that serves ready HTML to bots is a stopgap, not a long-term fix. For a small brochure site, a rebuild on WordPress is often cheaper than retrofitting SSR.
What should you ask your developer?
Take these questions to your developer or agency:
- Is our site server-rendered, statically generated or rendered in the browser?
- If I open "View page source" on our main pages, will I see the full body copy, the H1, the meta title, the meta description and our schema?
- Can we server-render or prerender the pages we want AI tools to cite? That means the homepage, service pages, location pages, blog posts and FAQs.
- Are our meta tags and JSON-LD added by JavaScript after the page loads? Can they move into the server HTML?
- Is the content inside tabs, accordions and "load more" sections in the HTML, or is it fetched only when someone clicks?
- Does our robots.txt allow GPTBot, OAI-SearchBot, ClaudeBot and PerplexityBot?
How do you confirm the fix worked?
Start by repeating the View page source test. Your body copy, headings, meta tags and schema should all be in the raw HTML now.
Then test it with the AI tools themselves. Paste the page URL into ChatGPT, Claude and Perplexity. Ask each one to summarise the page and list its headings. Then ask about a detail that only appears on that page, like a price, a package name or a specific service area. If the answers match your page, the tool can read it. If it says it cannot access the content, or gives a vague, generic answer, it is still reading the shell.
Treat this as a second check, not the only one. Some chat tools run a full browser in certain modes, so a good answer there does not always mean the crawlers can read the page. The page source is the real proof.
I fixed this exact problem on a client site
I ran into this same issue with Detailing World, a car detailing studio in Woodbridge, Ontario. The site looked fine to visitors and Google could read it. But the raw HTML that most AI crawlers depend on did not carry the content that mattered. We fixed the rendering first, then built the local SEO and AEO work on top of it.
Today, Detailing World ranks first for searches like "PPF installer Woodbridge". It holds a top-three spot in the local map pack. It is also cited in Google's AI Overviews for both PPF cost and ceramic coating cost searches. You can read the full story in the Detailing World case study.
If you are not sure how your own site renders, email me. I will take a look before you spend money on AEO.
Frequently asked questions
Can ChatGPT read JavaScript websites?
Mostly no. OpenAI's GPTBot downloads JavaScript files but does not run them. Content that only appears after JavaScript runs is invisible to it.
Does Gemini read client-side rendered pages?
Yes. Gemini uses Googlebot's infrastructure, which renders JavaScript before reading the page.
How do I know if my site is client-side rendered?
Open View page source and search for a sentence from the page. If the text is missing and you see an empty div with script tags, the page is client-side rendered.
Is server-side rendering better for AEO?
Yes. Server-rendered pages send full HTML, so every AI crawler can read the content, headings, meta tags and schema.
Is a Lovable or React website bad for SEO?
Not for Google, which renders JavaScript. It is a problem for ChatGPT, Claude and Perplexity unless the pages are server-rendered or prerendered.