JS SEO Lab

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

Status: Phase 1 in progress. First findings expected June 2026.

What we measure

Eight JavaScript content patterns × five page types × three rendering modes, crawled by all major bot classes. Per-cell signals captured in a public tracker.

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

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

First findings coming soon

The experiment is running but findings posts haven't been published yet. Track progress at github.com/Qbeczek1/jsseo-dev — see the SESSION-LOG for daily activity.

Or jump straight to the methodology to see how the experiment is structured, or the test bed to explore the live research surface.

Why this experiment

Vercel and MERJ established in 2024 that batch AI crawlers don't execute JavaScript. That's the rendering-mode answer. But real client audits don't ask "is this site SSR or CSR?" — 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). Crawled by 25+ bot classes including GPTBot, ChatGPT-User, Claude-User, ClaudeBot, Googlebot, Bingbot, PerplexityBot.

How it's verified

Three-layer bot identification: reverse DNS for Google/Bing/Apple, IP-range CIDR matching against OpenAI/Perplexity/Anthropic published manifests, and HTTP Message Signature header instrumentation for ChatGPT Agent's signed traffic. False-positive UAs (deprecated anthropic-ai/Claude-Web) automatically flagged as unverified.