Open methodology · Open data

JS SEO Lab

Empirical research on what JavaScript content patterns deliver to bots and LLM fetchers in 2026. Open methodology, open data, reproducible findings.

What we measure

Eight JavaScript content patterns × five page types × three rendering modes, open to every crawler. Per-cell signals captured in a public tracker.

Live test bed: next.jsseo.dev: 55 cells running now.

Render probe: one page on this site that records which crawlers run JavaScript here.

Open data

Raw bot tracker data, hypothesis pre-registration, methodology - all open from day one. CC0 / CC-BY for data, MIT for code.

GitHub repo · Data & citation

By Jakub Sawa

Senior technical SEO consultant, 25 years in the field. Independent owner of SAWA PROJEKT, co-founder of FratreSEO.

About · jakubsawa.pl · LinkedIn · YouTube

Latest findings

Why this experiment

In 2024 Vercel and MERJ reported that major AI crawlers don't execute JavaScript. That's the rendering-mode answer, and on our cells it mostly holds, with exceptions: as of 2026-11-13, ClaudeBot, Amazonbot and CCBot never fired a beacon and GPTBot only ran the inline script, but Applebot rendered React, and meta-external and ShapBot ran both the inline script and React. Real client audits don't ask "is this site SSR or CSR?" though: they ask "is this specific JS pattern (a click-to-reveal, a useEffect-fetched price, a hash-routed navigation) costing me visibility in this specific bot's index?"

What's measured

Eight JS content patterns (clean / js-images / js-links / click-reveal / js-fetched / hash-routing / late-loaded / mixed) × five page types × three rendering modes (SSR / CSR / optional SSG). As of 2026-11-13, 34 named bots had visited the test cells, among them verified GPTBot, ClaudeBot, Googlebot, Bingbot, Applebot, ChatGPT-User and Claude-User.

How it's verified

Bot claims are checked wherever the vendor publishes a way to check them: reverse DNS for Google/Bing/Apple/Baidu, IP-range CIDR matching against published OpenAI/Perplexity/Anthropic/Amazon/Parallel manifests, and either path for Amazonbot and CCBot. Meta's crawlers are checked against Meta's own network (AS32934). Claude Code fetches stay visible but unresolved, since there is no public verification path. Deprecated anthropic-ai/Claude-Web UAs and the Google-Extended/Applebot-Extended tokens, which their vendors never send as a user agent, are automatically flagged as unverified. As of 2026-11-13, 47,838 of 57,631 hits (83%) have no verification result; 43,740 of them come from human visitors and clients the classifier can't name.