BlogFindings

AI SEO: 17 of 380 home pages sent a crawler zero words

Lantad requested the home page of 392 hostnames on 11 September 2026 and read the bytes with no JavaScript executed. 380 answered HTTP 200, and 17 of those carried no visible text at all. Every one of the 17 carried a title element, 13 carried a meta description, and the two together came to a median of 17 words per site.

15 min read Lantad

So on 11 September 2026 we asked the plainest version of the question. One GET of the home page of each of the 392 hostnames in this repository's committed platform corpus frame, as LantadBot/1.0, redirects followed, one attempt each, a twenty second timeout, from one network location. No browser, nothing executed. We then ran the bytes through this scanner's own extractor, the same code path that produces a prose parity figure in a real scan, and counted what it could read. 380 of the 392 answered HTTP 200. Seventeen of those 380 held no visible text whatsoever.

In short

  • Lantad requested the home page of all 392 hostnames in this repository's committed platform corpus on 11 September 2026 and parsed the raw response with no JavaScript executed: 380 answered HTTP 200, and 17 of those 380 contained no visible text at all.
  • AI SEO on a client rendered page is decided before any tactic applies: all 17 of the empty pages carried a title element, 13 carried a meta description, and the title and description together came to a median of 17 words per site.
  • The 17 empty responses shipped 1,158,058 bytes between them, and the largest of them, pollyreach.ai, sent 377,131 bytes of which 366,841 were body, containing zero readable words.
  • Two of the ten platform strata produced 15 of the 17: 10 of 42 Bubble and no-code sites and 5 of 44 single page app startups, against none of the 34 Shopify stores, none of the 37 WordPress small business sites and none of the 37 SaaS marketing sites.
  • Lantad executed no JavaScript, requested home pages only and read no access log, so no figure here reports what any AI crawler did or whether a crawler that renders would have seen more.
What the raw home page heldSitesWhat a fetcher that does not render receives
No visible text at all17The title, and in 13 cases a description
Text present, none of it main content4Menus and footers only
1 to 99 visible words, some main content12A fragment, and the rest after rendering
100 or more visible words, some main content347Prose a parser can work with
Did not answer HTTP 20012Nothing measured, counted apart
Measured by Lantad on 11 September 2026. One GET per hostname of the home page as LantadBot/1.0 with redirects followed, no JavaScript executed, text counted with the scanner's own extractor. 392 hostnames is a fixed list, not a random sample of the web.

What does AI SEO check first on a page?

It checks whether there is anything to read. The seventeen are not thin pages or badly written pages. They are documents in which the region between the opening body tag and the closing one contains no text node a parser can reach. caseflood.ai is the shape in its clearest form: 831 bytes in total, a head carrying a title and a stylesheet and one JavaScript module, and a body consisting of a single empty div with the id root. Everything a reader eventually sees on that page arrives after the browser has fetched and run that module, and an AI crawler that does not run it sees the empty div.

We checked all seventeen a second way rather than trusting one extractor, because a bug that silently dropped text would produce this exact result and would be impossible to tell apart from the finding. The second pass was deliberately crude: strip script, style and noscript blocks with a regular expression, remove every remaining tag, collapse the whitespace, measure what is left. All seventeen came back at zero characters under both methods, so the number is a property of the responses rather than of our parser.

Byte size predicts none of it, which is the part worth sitting with. An empty page is not a small page. pollyreach.ai returned 377,131 bytes, of which 366,841 were inside the body, and the readable word count of that body was zero. listr.pro returned 329,112 bytes with the same result, letterhunt.co 242,412, grandmamillers.net 50,576. Between them the seventeen shipped 1,158,058 bytes and not one sentence. A person watching a network tab sees a large, healthy looking response. A parser reading it recovers the head and stops.

This is a harder failure than the one we have written about before, and it is worth naming the difference. When text ships inside a hydration payload, the words are at least present in the response: we have shown that a page whose text lives in hydration JSON scores exactly the same as a page with no text at all, both landing at 34.4 and an F, which is a scoring decision about whether a string in a JSON blob counts as prose. Here there is no payload to argue about. Four of the seventeen carried any harvested JSON strings at all, and the most any of them held was the 329 words on pollyreach.ai. On the other thirteen the words are not in the document in any form. They are in a JavaScript bundle, to be assembled later, by something that runs JavaScript.

The site keeps two pages that exist to make this comparison concrete rather than theoretical, a client rendered canary and a server rendered canary carrying the same content by two routes, and the gap between what a raw fetch recovers from each is the whole of the effect described here.

HostnameBytes returnedHead wordsCorpus stratum
pollyreach.ai377,13139Single page app startups
listr.pro329,11213Bubble and no-code
letterhunt.co242,41212Bubble and no-code
grandmamillers.net50,57629Local media
martechbase.com34,67138Bubble and no-code
yep.so31,24217Bubble and no-code
incomee.co28,97227Bubble and no-code
beelango.com26,31915Bubble and no-code
conntour.com10,93230Single page app startups
nanny.network4,9385Bubble and no-code
byword.ai4,71852Bubble and no-code
dynamoosejs.com3,8831Static documentation
lifelegacy.io3,7797Bubble and no-code
toothy.ai3,71530Single page app startups
projectant.io2,56428Bubble and no-code
rocketable.com2,2631Single page app startups
caseflood.ai8315Single page app startups
The 17 home pages that answered HTTP 200 with no visible text, ordered by response size, measured by Lantad on 11 September 2026. Head words counts the title plus the meta description. Every response was re-checked by a second method to rule out an extraction fault.

What a fetcher that does not render gets instead

Not nothing, and that is the reason this failure survives so long without anybody noticing. All seventeen carried a title element, and thirteen carried a meta description, so a fetcher walks away with a short phrase and usually a sentence. Added together across all seventeen sites, the title and description came to 349 words, a median of 17 per site. That is what stands in for a home page.

Seventeen words is enough to look like something in a listing and nowhere near enough to answer a question about a business. byword.ai is the best case in the set at 52 words of head, and rocketable.com is the other end: a title reading Rocketable, no description, and a body of 2,263 bytes holding no text. Four of the seventeen shipped no description at all, being dynamoosejs.com, lifelegacy.io, rocketable.com and caseflood.ai, so on those four the entire machine readable description of the page is its title. Two of those titles are a single word.

The markup layer does not rescue it either. Four of the seventeen carried any JSON-LD, which is a lower rate than the corpus as a whole managed on the same day, where we found that 241 of 382 home pages carried at least one JSON-LD block and 141 carried none. That ordering makes sense once stated: a site that generates its markup in the browser alongside everything else has nothing to put in the raw response, so the absence of prose and the absence of structured data tend to arrive together rather than compensating for one another.

What remains is head metadata doing a job it was never scaled for. We have counted that layer directly before and found it thin even on pages that do ship prose: across five captured pages, 85 meta elements were present and two of them addressed a crawler at all. A title and a description are a label. They tell a machine what the page is called. They do not say what the company does, whom it serves, what it charges, where it operates or why any of it should be believed, and those are the claims entity confidence is built from. A system deciding whether to name a business in an answer is left with the label and no evidence behind it.

What arrived on the wire, in full

  • HTTP 200, 831 bytes
  • title: Caseflood, AI-Powered Legal Intake
  • meta description: none
  • body: one div, id root, no children
  • Visible words: 0
  • JSON-LD blocks: 0

What decides the page instead

  • One module script, /assets/index-C2u7hV36.js
  • One stylesheet, one font preconnect
  • All prose assembled after that module runs
  • Recovered by a fetcher that renders
  • Recovered by a fetcher that does not: the title
caseflood.ai as returned to LantadBot/1.0 on 11 September 2026, against what the same URL presents once a browser has run its JavaScript module. The left panel is the complete body of the response, reproduced in full rather than excerpted.

Which website platforms shipped an empty home page

The corpus is grouped into ten strata by the stack a site runs on, and the seventeen are not spread across them. Fifteen of the seventeen sit in two: 10 of the 42 Bubble and no-code sites, and 5 of the 44 single page app startups. The remaining two are one documentation site, dynamoosejs.com, which is a Docusaurus build whose html element carries the attribute data-has-hydrated set to false, and one local media site, grandmamillers.net, which is a Square Online store whose entire body is 539 bytes of loading scaffolding inside a 50,576 byte document.

The strata that produced none are as informative as the two that produced most. None of the 34 Shopify stores returned an empty home page. None of the 37 WordPress small business sites did. None of the 37 SaaS marketing sites did, and none of the 30 Framer sites, none of the 41 Webflow sites and none of the 54 Wix and Squarespace sites did either. Those platforms assemble a document on the server and send it, so their customers inherit a readable page whether or not they ever think about crawlers, which is the same inheritance mechanism we keep finding in the robots.txt layer: 20 of 40 Webflow robots.txt files held no rule at all and 16 of 24 WordPress sites named no AI crawler because in both cases the platform, not the owner, wrote the file.

The median visible word count by stratum says the same thing more gently. Shopify stores came in at 1,201 words, WordPress small business at 1,079, single page app startups at 1,045 and SaaS marketing at 1,014, while Wix and Squarespace sat at 488 and static documentation at 357. Note what that ordering does to the single page app stratum: its median is among the highest in the corpus, and it still contributed five of the seventeen empty responses. The stack does not determine the outcome on its own. A React application can server render its first response or it can ship a shell, and the same framework produces both, which is why the guidance on this site is written per stack rather than per verdict, for React, for Next.js and for Framer.

Bubble is the one stratum where the pattern is close to structural rather than a choice, at 10 of 42. A platform whose editing model is an application canvas has no obvious server rendered document to emit, and the owner of the site has no setting to reach for. That is not a criticism of anybody's build. It is a statement about which sites will need a different answer than a configuration change.

  • Bubble and no-code (of 42) 10 sites No server rendered document to emit
  • Single page app startups (of 44) 5 sites Median elsewhere in this stratum was 1,045 words
  • Static documentation (of 31) 1 sites A Docusaurus build, not yet hydrated
  • Local media (of 30) 1 sites A Square Online storefront
  • Webflow (of 41) 0 sites
  • Wix and Squarespace (of 54) 0 sites
  • Shopify (of 34) 0 sites
  • WordPress small business (of 37) 0 sites
  • SaaS marketing (of 37) 0 sites
  • Framer (of 30) 0 sites
Home pages returning HTTP 200 with no visible text in the raw response, by corpus stratum, on 11 September 2026. Denominators are the sites in each stratum that answered HTTP 200. Measured by Lantad with no JavaScript executed.

Four more pages had text, and none of it was content

Beside the seventeen there is a smaller group that a word count alone would score as healthy. Four home pages returned visible text and no main content: every text block the extractor found on them sat inside a navigation element, a header, a footer or an aside, or in a container it could not treat as content at all.

pto.nz is the clearest of the four and the most surprising, because it is a Webflow site with 841 visible words in the raw response. That is more prose than the median site in three of the ten strata. The document contains no main element and no article element, and it contains four nav elements and thirteen footer elements. All 129 text blocks the extractor found were classified as boilerplate on that basis, so the scanner's main content figure for a page carrying 841 words is zero. The words about the trust's vision and services are genuinely in the response; the structure says they are furniture.

thisisthebakery.com is the opposite problem. It carries no main, article, nav, header, footer or aside element anywhere, and its 33 visible words are a browser fallback sentence about embedded videos repeated four times, plus a short menu. The page is a set of videos and the text in it is the apology shown to a browser that cannot play them. thegrilledcheesefactory.fr returned 42 visible words with 17 of its 19 blocks inside navigation or a footer, and sammylabs.com returned six words inside two nav elements.

None of this is an argument that landmark elements are decoration. It is an argument that they are load bearing, and that a site can be penalised for having no opinion about them rather than for a wrong one. We have measured both halves of that before on captured pages: 1,395 of 2,729 text blocks were navigation rather than main content, and removing the main element from a page cost 1,665 of its 13,615 words without changing a single character that a reader could see. Counted together, 21 of the 380 pages we asked on 11 September 2026 handed this scanner no main content at all: the seventeen that carried no text, and these four whose text sits entirely outside the content region.

  • pto.nz 841 words, zero main No main or article element. Four nav elements and thirteen footer elements, and all 129 text blocks fell inside them.
  • thisisthebakery.com 33 words, zero main No landmark elements of any kind. The text is a video fallback sentence repeated four times plus a menu.
  • thegrilledcheesefactory.fr 42 words, zero main A main element is present, but 17 of the 19 text blocks sit inside navigation or the footer.
  • sammylabs.com 6 words, zero main Two nav elements hold every word in the response. A further 198 words sit in a JSON payload.
The four home pages that returned visible text with no main content, measured by Lantad on 11 September 2026. Landmark element counts were confirmed against the raw response by hand.

What this does not prove, and what to check on your own site

It does not prove that any AI crawler saw nothing on these twenty one sites. We executed no JavaScript, so what we measured is what a fetcher that does not render receives, and whether a given crawler renders is a separate question with a genuinely unsatisfying answer. When we read the vendor documentation behind the fifteen crawler tokens this scanner evaluates, only two of nine operators stated either way whether their crawler executes JavaScript. OpenAI's own crawler page, read again today, names four agents and gives their full user agent strings, including GPTBot/1.4 and OAI-SearchBot/1.4, and says nothing at all about rendering or JavaScript. It carries no date either. Google, by contrast, documents its behaviour plainly: its JavaScript SEO guidance, last updated 2026-03-04, describes three phases of crawling, rendering and indexing, and states that once resources allow, a headless Chromium renders the page and executes the JavaScript. Google's own web.dev guide, published in February 2019 and last updated on 5 January 2026, puts the trade off in one line: client side rendering can work, but often needs additional testing and overhead.

So the honest reading is a conditional one. For a crawler that renders, an empty first response costs a queue position and some budget. For a crawler that does not, it costs the page. Seventeen sites are currently betting the second case does not apply to them, and thirteen of the seventeen cannot tell you which crawlers tested that bet, because nobody has read their logs for it.

The other limits are the usual ones and they matter here. This is one URL per hostname, the home page only, so a site with an empty home page and server rendered article pages is recorded as empty on the strength of one request. Each host was asked once, on one day, from one network location, with no retry, so a transient failure would look like a permanent one. The twelve hostnames that did not answer HTTP 200 are excluded from every figure rather than counted as anything: five returned HTTP 202 carrying a 169 byte document that meta refreshes to a captcha path, two returned 403, one 404 and four never completed inside the timeout. And the corpus frame is a fixed list of 392 sites chosen to span ten platforms, not a random sample, so it over-represents hosted site builders and cannot be read as a statement about the web.

Checking your own site needs none of this apparatus. Fetch your home page with curl and no browser, and read what comes back; if the words you expect are missing, everything downstream is downstream of that. The same request is what our GPTBot view tool makes without the command line, and the weighting that turns the result into a grade is set out in the scoring methodology. The fix, where there is one, is a rendering decision rather than a content one, which is why it belongs at the start of any AI visibility work rather than after it.

Sample Illustrative, not a measurement of any real site.

The path a home page takes to a fetcher that does not render, and the two points at which this measurement found it ending early. Illustrative of the mechanism, not a measurement of any one site.

Written by

Lantad

Published .

Most AI SEO advice assumes the words are already on the page. It argues about which words, where they sit, what markup wraps them, which crawler is allowed to take them and how an answer engine might weigh them. All of that is worth arguing about and none of it comes first, because a fetcher that does not run JavaScript either receives the sentences or it does not, and the server settles that before any of the rest applies.

Common questions

How do I see what my home page sends before JavaScript runs?

Request it without a browser and read the bytes. A single curl of your home page with redirects followed returns exactly what a non-rendering fetcher receives, and if the sentences you expect are not in that response then no markup, robots.txt rule or llms.txt file changes the outcome. That is the same request this measurement made against 392 hostnames on 11 September 2026.

Do AI crawlers execute JavaScript?

Some do and most will not say. Of the nine vendor documentation pages behind the fifteen crawler tokens this scanner evaluates, read on 5 September 2026, two stated either way and five were silent. OpenAI's crawler documentation names four agents with their full user agent strings and does not mention rendering at all. Google documents that a headless Chromium renders pages for Search once resources allow, on a page last updated 2026-03-04.

Is a title and a meta description enough for an AI crawler?

On the 17 empty pages measured on 11 September 2026 it was all there was, and it came to a median of 17 words per site. Four of the 17 carried no description at all, leaving only a title, and two of those titles were a single word. A title names a page. It does not state what a business does, whom it serves or what it charges.

Which website platforms shipped an empty home page in this measurement?

Fifteen of the 17 sat in two strata: 10 of 42 Bubble and no-code sites and 5 of 44 single page app startups. The other two were one Docusaurus documentation site and one Square Online storefront. None of the 34 Shopify stores, 37 WordPress small business sites, 37 SaaS marketing sites, 41 Webflow sites, 54 Wix and Squarespace sites or 30 Framer sites returned an empty home page.

See what AI can read on your site

Run a free scan and get a graded report of exactly what AI crawlers can and cannot read, with ranked fixes.