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

Latest findings

All findings · Chronological archive

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 published manifests, and explicit unresolved status for bot families without a reliable public verification path, including current Anthropic crawlers. False-positive UAs (deprecated anthropic-ai/Claude-Web) automatically flagged as unverified.