Does lazy-loaded content show up for AI crawlers?
99Visibility Research · Updated October 21, 2026 · 5 min read
Usually not. Text that JavaScript injects after the page loads, on scroll, on a click or behind a load more button, is invisible to crawlers that don't execute JavaScript. Vercel's crawler study found that ChatGPT's and Claude's crawlers download JavaScript files but don't run them. Googlebot renders JavaScript, so Google is the exception. Check your raw HTML for your key facts.
The short answer and why
Lazy loading means a page sends a light first version, then uses JavaScript to fetch more content later. That later content might arrive when a visitor scrolls, opens a tab, or presses load more.
A crawler that doesn't run JavaScript only sees the first version. It reads the HTML your server returns and stops there. Anything that depends on a script running in a browser simply isn't in its copy of the page.
That matters because most AI crawlers work this way. Vercel's study found that ChatGPT and Claude crawlers do fetch JavaScript files (11.50% of ChatGPT's requests and 23.84% of Claude's), but they don't execute them. In Vercel's words, they can't read client-side rendered content.
So if your pricing table, your product list or your reviews load on scroll, the crawler behind ChatGPT search may never see them. For the full mechanism, see our guide to JavaScript rendering and AI crawlers.
Which crawlers render and which don't
The split is by crawler, not by company size or page type.
- Render JavaScript: Googlebot, which serves Google Search, AI Overviews and AI Mode. AppleBot also renders through a browser-based crawler.
- Don't render JavaScript: GPTBot, OAI-SearchBot and ChatGPT-User (OpenAI), ClaudeBot and Claude-SearchBot (Anthropic), PerplexityBot, Meta-ExternalAgent and Bytespider. Independent re-testing in June 2026 reported the same result for this set.
This is why Google tools can mislead you. Search Console may show a page as indexed with all its content, because Googlebot ran your scripts. ChatGPT's crawler fetched the same URL and got the empty shell. Our explainer on SEO bots vs AI crawlers covers why these are different systems.
This is a Stage 1 (access) problem. It decides whether your content exists for the engine at all. What the engine retrieves for a given question, and what the model chooses to cite, happen later and are outside your control.
What counts as lazy-loaded, and the edge cases
Not every interactive element hides content. The question is whether the text is in the HTML before any script runs.
Usually visible to AI crawlers
- Accordions and tabs where all the text is in the HTML and CSS just hides it until clicked.
- Server-rendered pages, including frameworks that render on the server and hydrate later.
- Data embedded in the initial HTML response. Vercel notes that JSON or React Server Components payloads in the initial response may still be indexed.
Usually invisible to AI crawlers
- Infinite scroll that fetches the next batch of items as the visitor scrolls.
- Load more buttons that request content from an API on click.
- Tabs or accordions that fetch their contents only when opened.
- Reviews, prices or FAQs pulled in by a third-party widget script.
One that doesn't matter here
Native image lazy loading (loading="lazy") defers images, not text. It doesn't hide your words from a crawler.
Our tabs, accordions and load more check walks through each pattern.
How strong the evidence is
This is the strongest finding in the AI crawler evidence, but carry its limits.
Vercel's data is a one-month snapshot from December 2024, drawn mostly from its own Next.js traffic. Microsoft Copilot was excluded because it had no unique user agent. Vercel also sells server-side rendering hosting, so it has a commercial interest. The finding has since been re-confirmed independently, which is why it holds up.
What the evidence does not say matters too. Making content visible to a crawler doesn't make an engine more likely to pick your page. It means your page can be considered at all. Retrieval fires per query, and no published study shows that fixing rendering produces a citation lift. Treat it as hygiene: a block you remove, not a ranking you earn.
What to do next
Start by checking, not rebuilding.
- List your load-bearing facts. Prices, plan names, product names, locations, the one-line description of what you do.
- Fetch the raw HTML. Use view source in your browser (not the inspector, which shows the rendered page), or run a command like the one below.
- Search for each fact. If a price appears in the browser but not in the raw HTML, a non-rendering crawler can't see it.
- Fix what's missing. Render that content on the server, prerender the page, or put the text in the initial HTML and use CSS to collapse it. For load more and infinite scroll, give each batch a real paginated URL.
curl -s https://example.com/pricing | grep -i "starter"
No output means the word isn't in the HTML the server sent. Our playbook to find key facts hidden behind JavaScript turns this into a repeatable audit.
Rendering is one of three access gates. The others are per-bot robots.txt permission and network reachability, since a CDN or firewall can block AI crawlers that robots.txt allows. The free AI crawler checker requests a page as each AI crawler, so you can see what each one actually gets back.
Does Googlebot see lazy-loaded content? Googlebot renders JavaScript, so it can see content that scripts add to the page. That is why a page can look complete in Google Search Console and still be empty to ChatGPT's or Claude's crawlers. Don't use a Google result as proof that other AI crawlers can read your page. Check the raw HTML separately.
Is content inside a collapsed accordion visible to AI crawlers? It depends on how the accordion is built. If the text sits in the HTML and CSS hides it until a click, a crawler that reads raw HTML can see it. If the accordion fetches its text from a server only when opened, that text isn't in the raw HTML and non-rendering crawlers miss it. View source to tell which one you have.
Will server-side rendering get my site cited in ChatGPT? No one can promise that. Server-side rendering makes your content present in what the crawler fetches, which is a precondition for being used. Whether ChatGPT search retrieves your page for a question, and whether the model cites it, depends on the query and the model. Rendering removes a block. It doesn't guarantee an outcome.
Do AI crawlers scroll the page or click load more? Crawlers that don't execute JavaScript can't scroll or click, because those actions only trigger scripts. They read the HTML once and move on. The reliable fix for infinite scroll and load more buttons is to give each batch of content its own URL with plain links, so a crawler can follow them like ordinary pages.
Is it fine to show AI crawlers a different version of the page? Serving crawlers content that visitors never see is cloaking, and it's a risk. Engines treat manipulated content as a trust problem, and it can backfire. The safe approach is to send everyone the same content in the initial HTML. Prerendering that gives crawlers the same text a visitor eventually sees is a different thing and is fine.
Sources
This page is AI-assisted. It was written from a verified evidence base and checked against our editorial policy. Engine behaviour changes often; facts are as of October 21, 2026.