Is AI reading the numbers and structured data on your pages correctly? Our record on JavaScript, JSON-LD and llms.txt (October 2026)
The short answer: whether AI reads them correctly, our records cannot confirm. What we found is three things.
- A number that JavaScript rewrites after the page opens can reach a bot that does not run JavaScript as its starting value, often 0. On our product page the HTML said "Languages supported 0+", and the AI apps answered with a number from another source instead (whether the one caused the other, we do not know).
- On our site, llms.txt was read 0 times by AI search bots and 0 times by visitors that open pages when a user asks.
- We have exactly one record of a bot fetching a URL written only in JSON-LD.
Recorded 22 October 2026 (each item gives its own check date). Every number comes from the logs of two of our sites (the company site migurei.ai and the test site pw.migurei.ai, "pw" below) and from our records of questions put to AI apps.
Words used on this page
- HTML (server HTML): what the server returns first. A bot that does not run JavaScript reads only this.
- JSON-LD: one way of embedding structured data in a page. People do not see it; it tells machines what the page is.
- llms.txt: a text file summarising a site and its links for AI (https://llmstxt.org/).
- Bot, UA, IP check: a bot is a program that fetches pages; the UA is the name it gives; an IP check confirms that its IP address is in the list its operator publishes.
- Run: one trial in which we put a fixed question to an AI app and record the answer and the logs.
1. A number animated by JavaScript can be read as 0
- On 18 October 2026 at 06:49 UTC (15:49 Japan time), fetching our group's product page
migurei.ai/m-meetingas is returned HTML that said "Languages supported 0+". In a browser, a JavaScript animation counts up from 0 and shows "60+". The same HTML was seen again on 20 October. - The same day (18 October) we asked 4 AI apps about this product 92 times (23 per app). Answers that gave a specific number of languages: ChatGPT 11, DeepSeek 9, Claude 4, Gemini 4. The number given was mostly "4 languages (Japanese, English, Vietnamese, Korean)", and the sources the apps cited included our group's own PR TIMES release (24 September 2026).
- That the apps used the release's number because the page said "0+" is our inference, not shown. They might have quoted the release even if the page had carried the right number.
Our own sources do not agree either: the page shows "60+", the release says 4 languages, and the app itself lists 6. Which is right is for the product owner to decide, not this record. It is also an example of checking that your own information agrees before asking whether AI reads it correctly.
2. JavaScript can also change the version of a page in Google's index
- pw used to have a JavaScript that switched a browser set to English from a
/japage to the/enpage. While it was there, the 5/japages in Google's index all showed the/enpage as the "User-declared canonical" in Search Console, although the server HTML of each declared the page itself. - We removed that JavaScript on 14 October at 17:18 UTC (02:18 on 15 October, Japan time). On 15 October, Google's index still held the 5 pages as fetched before the removal, in the state above.
- Google then fetched the 5 pages again, and for all 5 both the "User-declared canonical" and the "Google-selected canonical" became the page itself. We checked three times, on 17, 19 and 22 October, with the same result each time.
- Google's own guidance says to avoid automatically redirecting users from one language version of a site to another (https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites).
This is about Google Search, but it touches AI too: Google says AI Overviews and AI Mode use as sources only pages in Google's index (https://developers.google.com/search/docs/appearance/ai-features). Whether the corrected canonical changed anything in AI Overviews, we did not measure.
This is a before-and-after record on our site, with nothing to compare against (no pages left unchanged). It is not separated from the effect of the sitemap date change, of the "Request indexing" we used in Search Console, or of Google coming back on its own. That Google's renderer ran as English is our inference too.
3. llms.txt: who read it
pw has an llms.txt and points to it from every page. The log up to 21 October 2026:
| Reader | Times |
|---|---|
| AI search bots (OAI-SearchBot, Claude-SearchBot, PerplexityBot) | 0 |
| Visitors that open pages when a user asks (ChatGPT-User, Claude-User, Perplexity-User) | 0 |
| Training bot GPTBot (16 October) | 1, following a link from the home page, like any other page |
| Training bot ClaudeBot (16 October) | 1, after it had fetched the sitemap pages |
| Amazonbot (18 October, judged by UA only) | 1, then it fetched URLs from inside llms.txt (below) |
| Googlebot and Bingbot (1 to 14 October) | Googlebot 2, Bingbot 1 |
pw's llms.txt writes its links in the standard format (https://llmstxt.org/), as in - [料金](https://pw.migurei.ai/pricing): …. On 19 October Amazonbot requested /pricing): and /docs):, URLs that do not exist. Amazonbot seems to have kept the closing ) and the : of the Markdown link syntax as part of the URL (2 requests, both 404, judged by UA only). With the standard format left as it is, the only harm was those 404s. If it bothers you, you can put each URL on a line of its own, but we have not checked that this helps.
4. JSON-LD: one bot fetched a URL from inside it, once
- From 16 October 2026, every page of our company site migurei.ai carried the URL
/en/docs/ld-probein its JSON-LD. The URL existed only there: not in the sitemap, not as a link on any page, not in llms.txt. - On 17 October at 17:22 UTC (02:22 on 18 October, Japan time), a visitor calling itself Amazonbot requested that URL (there is no page, so 404). We did not check the IP against Amazon's list.
- That is the only time we saw it. Amazonbot is not among the AI search bots we count. And whether Amazonbot really found the URL in the JSON-LD, we do not know.
On whether structured data is "correct", Google's tool shows a mistake of ours. The JSON-LD of pw's pricing page describes a Product with no price, and Search Console's URL Inspection judged its "Product snippets" invalid (1 item) at all three checks (17, 19 and 22 October). Google's documentation requires a Product to have one of offers, review or aggregateRating. This is Google's rich-result check, and a separate matter from whether AI apps read the JSON-LD.
Outside reports (two, pointing opposite ways)
- AI bots do not run JavaScript: a study by Vercel and MERJ (17 December 2024, https://vercel.com/blog/the-rise-of-the-ai-crawler) reported that none of the major AI crawlers (OAI-SearchBot, ChatGPT-User, GPTBot, ClaudeBot, PerplexityBot and others) render JavaScript, the exceptions being Gemini (on Googlebot's infrastructure) and AppleBot. The study is nearly two years old.
- OpenAI's bots started running JavaScript: a Zenn article (by hirajo, 30 September 2026, https://zenn.dev/hirajo/articles/chatgpt-crawler-js-rendering) reports that from 25 September 2026, OAI-SearchBot and GPTBot (IP-checked) showed signs of running JavaScript on the author's site (Next.js prefetch requests rose from 2% to 84% of OAI-SearchBot's requests). One author's observation, no announcement from OpenAI, not checked by us. On pw, OAI-SearchBot fetches no pages, so our log cannot check it.
Which holds today, this record cannot say. Google, for its part, notes that not all bots can run JavaScript and recommends server-side rendering or pre-rendering (https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics).
How to check your own site
- Compare the server HTML with what a browser shows: fetch the page without JavaScript (with
curl, for example) and see whether prices, stock or headline numbers are in the HTML. A number you see in the browser but not in the HTML does not reach a bot that does not run JavaScript. - Look at the canonical of the version in Google's index: in Search Console's URL Inspection, check the "User-declared canonical" and the "Google-selected canonical". If either differs from what your server HTML declares, suspect a script that rewrites the page.
- Count bots by UA and IP together: to see who fetched llms.txt or a URL inside JSON-LD, read the UA in your access log and check the IP against each operator's published list.
- Check that the URLs in llms.txt are fetched correctly: look in your access log for requests (404s) to your llms.txt URLs with a
)or:stuck on the end. There is no need to change the standard format ([name](url): note). - Check your structured data's format: Google's Rich Results Test or Search Console shows whether it is written without errors. That tells you Google's verdict only.
What the free tools show and do not show is in What Search Console, Bing Webmaster Tools and Cloudflare show about AI search, and what they do not; whether OpenAI's bots came to pw is in Is ChatGPT visiting your site?.
What this record does not show
- Two sites of ours, days to weeks. The numbers are counts, not rates or trends.
- We cannot say "0+" made the apps give another number. It is an observation with nothing to compare against.
- We cannot say the canonical came back because we removed the JavaScript. Nothing to compare against, and other causes are not separated. Being in Google's index also does not mean showing up in Japanese searches or in AI Overviews.
- We cannot say llms.txt is useless. AI search bots hardly come to pw at all, so "came but did not read llms.txt" and "did not come" look the same. If an app uses content through another company's search index or cache, our log does not show it.
- We cannot say AI apps use JSON-LD in their answers. All we saw is Amazonbot fetching a URL once, without an IP check.
- We did not measure how prices or stock are read. Our sites publish neither. The "number" in this record is a product page's count of supported languages.
- We wrote this and we measured it. No independent party has checked it.
Records this page uses
knowledge/claims/js-count-up-stat-reads-zero-to-bots.md(our observation),lab/grades/2026-10-18-mmeeting-baseline-day1.json(our grades)knowledge/claims/client-language-redirect-sets-wrong-canonical-in-google.md(before-and-after on our site, no control),docs/evidence/2026-10-22-no-lang-redirect-read3.mdknowledge/claims/google-ai-features-need-indexed-snippet-pages.md(outside source: Google documentation)knowledge/claims/llms-txt-read-by-search-bots-not-ai-bots.md(current statement: our observation),amazonbot-follows-urls-from-llms-txt-and-json-ld.md(our observation)knowledge/claims/google-product-snippet-requires-offers.md(outside source: Google documentation)knowledge/claims/openai-crawlers-render-js-since-2026-09.md(outside source: one Zenn article)