Are We Building Websites or Movies? Scrollytelling, SEO and AI Visibility
TL;DR
- Cinematic sites are not automatically bad — but the JavaScript, WebGL, and video that produce the "wow" run on the main thread, which is exactly what Core Web Vitals measure. Only 48% of origins pass all Core Web Vitals on mobile today, before any of this is added.
- Accessibility is not a nice-to-have here. An autoplaying hero animation that runs longer than five seconds fails WCAG 2.2.2 at Level A, and WCAG explicitly names scroll-triggered motion as a vestibular-disorder trigger.
- The blind spot: AI assistants do not run your JavaScript. The only public server-log study of AI crawlers found that OpenAI's, Anthropic's, and Perplexity's bots fetch JavaScript files but never execute them. Google renders; they do not.
- The nuance most posts skip: that study is from December 2024, no AI vendor has ever confirmed or denied it, and agentic browsers like ChatGPT Atlas do drive a real browser. The honest claim is narrower than the popular one.
- The verdict: a cinematic site can absolutely be fast, accessible, and citable — it just costs meaningfully more engineering. Spend it deliberately, on campaigns and launches, not on the site your business depends on for organic discovery.
What Is a Scrollytelling Website — and Why This Question Keeps Coming Up
Scrollytelling is a web design pattern where scrolling drives a narrative: as the user scrolls, scenes animate, 3D objects rotate, video scrubs frame by frame, and text reveals in sequence — so the page feels less like a document and more like an interactive film. The pattern is having a moment. Product launches, agency portfolios, and brand sites increasingly ship experiences that would have been a showreel five years ago.
They are genuinely impressive, and I do not want to talk anyone out of building one. But there is a question worth asking before you commit: are these sites solving the right problem? The cinematic feel is produced by heavy JavaScript, large video, high-resolution imagery, WebGL, and complex animation — and every one of those has a measurable, documented cost in performance, accessibility, and discoverability.
This article prices that cost using primary sources only: Google's own documentation, the W3C's WCAG success criteria, Chrome's engineering case studies, the HTTP Archive Web Almanac, and the single public study of how AI crawlers actually behave. Where the evidence is thinner than the internet claims, I say so.
The Performance Bill: What Heavy JavaScript Costs You in Core Web Vitals
Start with the baseline, because it reframes everything. According to the HTTP Archive Web Almanac 2025, the median mobile home page already ships 632 KB of JavaScript and weighs 2.56 MB in total — and page weight growth is accelerating, up 202.8% over the last decade. The Performance chapter shows the result: only 48% of origins pass all Core Web Vitals on mobile (56% on desktop).
That is the average site. A scrollytelling build adds a WebGL context, a scroll-animation library, and multi-megabyte video on top of it.
Why Animation-Heavy Sites Hit INP Hardest
INP (Interaction to Next Paint) measures how quickly your page visibly responds when a user clicks, taps, or types — good is 200ms or less, poor is over 500ms. Google's own explanation of what breaks it is direct: "An input delay occurs until event handlers start running, possibly caused by factors such as long tasks on the main thread."
A long task is defined as any single piece of JavaScript work that occupies the main thread for more than 50 milliseconds. Scroll-driven scenes, physics, and shader setup produce exactly this kind of work. As web.dev puts it: "When a user attempts to interact with a page when there are many long tasks… the user interface will feel unresponsive, and possibly even broken if the main thread is blocked for very long periods of time."
The Almanac gives this a number: the median mobile page's lab Total Blocking Time is roughly 1,916ms, and it rose 58% year over year. The main thread is getting busier, not quieter.
Why the Cinematic Hero Delays LCP
LCP (Largest Contentful Paint) — good is 2.5 seconds or less — measures when the biggest visible element finishes rendering. Crucially, its official list of eligible elements includes <video> elements and "an element with a background image loaded using the url() function". Your full-bleed hero video or CSS background is your LCP element. And Google notes that "anything that blocks the main thread can also lead to unnecessary element render delay" — so the WebGL bundle you load to power the scene actively delays the scene from appearing.
A trap worth naming: lazy-loading the hero
Teams often lazy-load everything to cut bytes. Google measured what that does to an in-viewport hero: median LCP went from 2,922ms to 3,546ms — a 21% regression. As web.dev states: "lazy loading has a very clear positive effect on reducing the number of image bytes at the cost of a delayed LCP." Never lazy-load the element that is above the fold.
The CLS Nuance Most Articles Get Wrong
It is tempting to claim "scroll animations cause layout shift." They usually do not. Google's CLS documentation — good is 0.1 or less — is explicit about the fix: "To move elements around, avoid changing the top, right, bottom, or left properties and use transform: translate() instead." A transform-based animation generates no layout shift at all. Your real CLS risk on a cinematic site is late-loading media without reserved dimensions — the hero video that pops in and shoves the copy down.
The Accessibility Bill: Which WCAG Criteria Immersive Sites Actually Fail
This is the part that gets hand-waved, and it should not. WCAG names motion explicitly, and one of the relevant criteria sits at Level A — the baseline, not the aspirational tier.
WCAG 2.2.2 Pause, Stop, Hide — Level A
The criterion reads: "For any moving, blinking or scrolling information that (1) starts automatically, (2) lasts more than five seconds, and (3) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it." An autoplaying looping hero video or an ambient WebGL background with no pause control fails this at the lowest conformance level there is.
WCAG 2.3.3 Animation from Interactions — Level AAA
This one describes scrollytelling almost by name. The W3C's understanding document states: "if scrolling a page causes elements to move (other than the essential movement associated with scrolling) it can trigger vestibular disorders," and it does not soften the consequences: "Triggered reactions include nausea, migraine headaches, and potentially needing bed rest to recover."
It is worth being precise: this is a Level AAA criterion, not A or AA. That does not make it optional in spirit — it makes the argument honest. The mitigation is well documented and cheap: honour prefers-reduced-motion, the media query that detects when a user has asked their operating system to "minimize the amount of non-essential motion."
A statistic people misquote — do not repeat it
The Almanac's 2025 Accessibility chapter reports that prefers-reduced-motion appears on about 50% of pages. That is the share of sites shipping the media query — not the share of users who enable the setting. No reliable public data exists for the latter. If you see a post claiming "X% of users have reduced motion on," it is invented.
Scroll-Jacking: No Criterion Names It, but It Still Fails
Being accurate here matters, because a lot of SEO content asserts "scroll-jacking violates WCAG [number]" and no such criterion exists. What does exist is more useful. The W3C's ACT rule on scrollable content verifies that scrollable elements "can be reached with sequential focus navigation so that they can be scrolled by keyboard" — mapping to SC 2.1.1 Keyboard (Level A). When your custom scroll container swallows keyboard scrolling, or when SC 2.4.3 Focus Order breaks because tabbing lands on an element the scroll narrative has not "revealed" yet, those are real, citable failures.
Context for how common the basics already are: in the same Almanac chapter, only 31% of mobile sites meet minimum colour contrast requirements, and 67% remove default focus outlines. Most sites are not passing the easy tests. Adding a cinematic layer on top of that is a choice about where you spend a finite accessibility budget.
The Blind Spot: AI Assistants Do Not Execute Your JavaScript
Here is the part I think most teams have not internalised. You can nail Core Web Vitals and rank first on Google, and still be a blank page to the systems answering your customers' questions right now.
The reason is that Google renders JavaScript and the AI crawlers do not. Google's JavaScript SEO documentation describes a three-stage pipeline — crawling, rendering, indexing — and confirms that "once Google's resources allow, a headless Chromium renders the page and executes the JavaScript." (Note the deferral: pages queue for rendering and "may stay on this queue for a few seconds, but it can take longer than that." Google commits to no time bound.)
The AI crawlers appear to do no such thing. In "The rise of the AI crawler" (Vercel, with MERJ, December 2024) — the only public server-log study of AI bot behaviour that exists — the finding is stated flatly:
"The results consistently show that none of the major AI crawlers currently render JavaScript. This includes: OpenAI (OAI-SearchBot, ChatGPT-User, GPTBot), Anthropic (ClaudeBot), Meta (Meta-ExternalAgent), ByteDance (Bytespider), Perplexity (PerplexityBot)."
The mechanism is worth understanding, because it is subtler than "they ignore JS." They download your JavaScript files — the study measured JavaScript at 11.50% of ChatGPT's requests and 23.84% of Claude's — they simply never run them. As the study puts it: "they don't execute them. They can't read client-side rendered content." If your copy only exists after hydration, it does not exist to them.
Meanwhile the study confirms the asymmetry directly: "Google's Gemini leverages Googlebot's infrastructure, enabling full JavaScript rendering." That is the whole uncomfortable point in one sentence — the same page can rank first in Google and be invisible in ChatGPT.
Three things you will read about this that are not true
1. "They analysed 500 million GPTBot fetches and found zero JS execution." This sentence is everywhere and it is a miscitation. The 569 million GPTBot figure in the study is a traffic volume stat for one month — it is not the sample of the rendering test. Vercel never published a sample size or methodology for the rendering finding.
2. "Anthropic/OpenAI officially confirm they don't render JavaScript." They do not. OpenAI's crawler docs, Anthropic's crawler doc, and Perplexity's crawler doc never mention JavaScript, rendering, or headless browsers at all. No AI vendor has ever confirmed or denied this. Every "official" citation you see traces back to the one log study.
3. "This is the state of things in 2026." The study is from December 2024, drew largely on one site plus two job boards, and has never been repeated. It stands unrefuted — but also un-retested. Anyone dating it to this year is re-dating stale data.
The Honest Caveat: Agentic Browsers Do Render
The strongest counter-argument to my own point, and one I have not seen made: AI agents that drive a real browser execute JavaScript by construction. OpenAI now ships ChatGPT Atlas, "a new web browser built with ChatGPT at its core," with an agent mode that navigates sites on your behalf. Perplexity has publicly acknowledged using a third-party cloud browser service "for highly specialized tasks." A real browser sees your client-side content perfectly well — and because it carries a normal browser user-agent, it is invisible to bot-log studies like Vercel's.
So the defensible claim is narrower than the popular one, and it is still the one that matters:
The declared crawlers — the bots that build the retrieval index an AI assistant cites from — do not run your JavaScript. Agents that visit a page because a user sent them there do. Rendering saves you at the visit; it does not save you at the citation.
Who Renders JavaScript, and Who Doesn't?
The full picture in one place, based only on what primary sources support as of July 2026:
| System | Executes JavaScript? | What the evidence shows |
|---|---|---|
| Googlebot (and therefore Google Search, AI Overviews, AI Mode, Gemini) | Yes | Officially documented: "a headless Chromium renders the page and executes the JavaScript." Rendering is deferred, with no committed time bound. |
| GPTBot / OAI-SearchBot / ChatGPT-User | No (observed) | Vercel/MERJ (Dec 2024) found no JS execution; the bots fetch JS files (11.50% of requests) without running them. OpenAI's docs are silent on rendering. |
| ClaudeBot | No (observed) | Same study. Claude's crawler fetched JS in 23.84% of requests without executing it. Anthropic's docs never mention rendering. |
| PerplexityBot | No (observed) | Same study. Perplexity separately admits occasional use of a cloud browser for specialised tasks — so treat this as "mostly not." |
| AppleBot | Yes | Renders through a browser-based crawler, similar to Googlebot. |
| Agentic browsers (ChatGPT Atlas, Perplexity Comet, Claude in Chrome) | Yes | They drive a real browser, so client-side content is visible — but they carry normal browser user-agents and do not feed the citation index the way crawlers do. |
One clarification, because it is a common confusion: Google states there are "no additional requirements" to appear in AI Overviews or AI Mode beyond being indexed in normal Search, and its AI optimization guide confirms "Google is able to process content within JavaScript as long as it isn't blocked." So Google's AI features are not the problem. Everyone else's are.
So Can a Cinematic Site Still Be Fast, Accessible, and Citable?
Yes — and I want to be fair about this, because the answer is genuinely yes. It just costs more engineering than most teams budget for. In the interest of not writing a one-sided article: I could not find a single published case study of a WebGL-heavy or scrollytelling site achieving green Core Web Vitals. Not one. That is not proof it is impossible; it is a signal about how rarely it is achieved. And Google itself offers the fairest counterpoint on page experience: "Core Web Vitals are used by our ranking systems," but "Google Search always seeks to show the most relevant content, even if the page experience is sub-par." A stunning, relevant site can still win. It is simply playing with a handicap.
If you are going to build one, here is the bill, with the official source for each line.
1. Server-render the content, not just the experience
This is the single highest-leverage fix, and it solves the AI-visibility problem outright. Google's rendering guide is unambiguous: "Server-side rendering is a popular choice for delivering a 'complete looking' experience that crawlers can interpret," and "running page logic and rendering on the server lets you avoid sending lots of JavaScript to the client. This helps to reduce a page's TBT, which can also lead to a lower INP." If your headline, body copy, and key facts exist in the initial HTML, a non-rendering AI crawler can read them — the cinematic layer becomes an enhancement on top of a readable document, not a prerequisite for it.
2. Use CSS scroll-driven animations instead of JavaScript scroll listeners
This is not a preference — Chrome measured it. In its own scroll animation performance case study, under heavy main-thread load, "the classic JavaScript version becomes janky and sluggish due to the main thread resources junction. On the other hand, the CSS version is completely unaffected by the heavy JavaScript work." Scroll-driven animations run off the main thread; JS scroll handlers compete with everything else on it.
3. Skip rendering work for scenes nobody is looking at yet
content-visibility: auto lets the browser skip layout and paint for offscreen sections until they are needed. Google's demo took initial render from 232ms to 30ms — roughly 7x. On a long narrative page with a dozen scenes, this is exactly the shape of the problem it was built for.
4. Animate transforms, break up long tasks, and honour reduced motion
Animate with transform rather than layout properties so you generate no CLS. Yield to the main thread between chunks of work — web.dev's guidance is refreshingly blunt: "yielding indiscriminately is better than not yielding at all." And ship a genuine reduced-motion path — not a token one — so the experience degrades to something usable rather than something nauseating.
One caveat I will flag rather than dress up as doctrine: deferring WebGL context creation until after LCP is, in my experience, one of the biggest single wins on these builds. But there is no official Google or MDN document prescribing it — it is a reasoned inference from the long-task guidance above, not a cited best practice. Treat it as my recommendation, not Google's.
One thing you should not reach for: dynamic rendering (serving pre-rendered HTML to bots and the JS app to users). Google now calls it "a workaround and not a recommended solution, because it creates additional complexities and resource requirements." Server-side or static rendering is the supported path.
When Is Scrollytelling the Right Call?
My view, stated plainly, since this article is an argument and not a neutral survey.
Scrollytelling earns its cost when the "wow" moment is the goal: product launches, marketing campaigns, brand storytelling, and creative showcases. These are typically campaign-scoped, promoted through channels other than organic search, measured on memorability rather than long-tail traffic, and often short-lived. Spending a large engineering budget on a cinematic experience there is a rational trade.
It is the wrong default when discoverability is the business model:a SaaS product, a documentation site, a content-led business, or anything that depends on long-term organic traffic and AI-assistant citations. There, the site's job is not to be admired — it is to be found, understood, and acted on. Every one of the three bills above is charged directly against that job.
You can build an outstanding user experience without turning your website into a movie. The best sites I know balance beautiful design with performance, accessibility, and usability — and they do it because a great website should not make users admire the experience. It should help them accomplish what they came to do.
How to Check Where Your Own Site Actually Stands
The good news is that none of this has to be a matter of opinion — all three bills are measurable.
For the performance and accessibility side, Greadme's Deep Scan runs a full Lighthouse audit and reports your Core Web Vitals, long tasks, and WCAG failures in plain language. For the crawlability side — the question of what exists in your raw HTML before JavaScript runs — see our guide to the SEO issues with client-side rendering, which is the same failure mode that makes you invisible to AI crawlers.
For the AI-visibility side specifically, guessing is the worst option. Greadme's AI Visibility Analyzer tests whether AI models actually mention your domain when users ask questions in your niche, which turns "are we invisible to ChatGPT?" into a number instead of an anxiety. If you want the mechanics of how these engines choose their sources, see how ChatGPT, Perplexity, and Google pick citations.
FAQ
Do AI crawlers like ChatGPT, Claude, and Perplexity render JavaScript?
Based on the only public server-log study of AI crawler behaviour — Vercel with MERJ, December 2024 — no. Their declared crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot) fetch JavaScript files but do not execute them, which means they cannot read client-side rendered content. Important caveats: no AI vendor has ever officially confirmed or denied this, the study has not been repeated since, and agentic browsers like ChatGPT Atlas do drive a real browser and therefore do execute JavaScript.
If Google renders JavaScript, does it matter that AI crawlers don't?
Yes, and this is the core asymmetry. Google runs a headless Chromium and confirms that AI Overviews and AI Mode have no additional technical requirements beyond normal indexing, so a client-side rendered site can rank perfectly well there. But the systems that answer questions outside Google — ChatGPT, Claude, Perplexity — build their retrieval indexes from crawlers that appear not to render. Ranking #1 on Google is no longer proof that you are visible everywhere.
Is scrollytelling bad for SEO?
Not inherently — it is bad for SEO when the content only exists after JavaScript runs, and when the animation work degrades Core Web Vitals. If your text, headings, and key facts are server-rendered into the initial HTML, and your animation runs off the main thread via CSS scroll-driven animations, a scrollytelling site can rank. The risk is not the aesthetic; it is client-side rendering plus a busy main thread.
Does scroll-jacking violate WCAG?
No WCAG success criterion names "scroll-jacking" directly, and anyone citing a specific number for it is wrong. In practice it commonly fails SC 2.1.1 Keyboard (Level A) when custom scroll containers cannot be scrolled by keyboard — the W3C has a proposed ACT rule covering exactly this — and SC 2.4.3 Focus Order (Level A) when focus lands on content the narrative has not revealed. Separately, an autoplaying animation over five seconds with no pause control fails SC 2.2.2 (Level A).
How much JavaScript is too much?
There is no official threshold, but there is useful context: the median mobile page already ships 632 KB of JavaScript (Web Almanac 2025), and only 48% of origins pass all Core Web Vitals on mobile. The metric that actually matters is not bytes but main-thread time — any single task over 50ms is a "long task," and enough of them will push INP past the 200ms "good" threshold regardless of your bundle size.
Will server-side rendering fix my AI visibility?
It fixes the mechanical half of the problem — it puts your content in the raw HTML where a non-rendering crawler can actually read it. It does not, on its own, make an AI cite you. Citation still depends on whether your content is original, authoritative, and worth quoting. Server-side rendering gets you into the room; the content decides whether you get called on.
Should I ever build a scrollytelling site?
Yes — when a memorable "wow" moment is the primary goal: product launches, marketing campaigns, brand storytelling, creative showcases. These are usually campaign-scoped and promoted through channels other than organic search. Avoid it as the default for a SaaS product, documentation site, or any business whose growth depends on organic traffic and AI-assistant discoverability.
Conclusion
Immersive scrollytelling sites are not a mistake. They are a trade, and the industry has been quietly under-pricing one side of it. The performance cost is measurable: the median page already ships 632 KB of JavaScript and only 48% of origins pass Core Web Vitals, before you add a single shader. The accessibility cost is written into WCAG, at Level A, in language about nausea and migraines. And the visibility cost is the one almost nobody has priced at all — the crawlers that feed ChatGPT, Claude, and Perplexity appear to fetch your JavaScript and never run it, which means a site that ranks first on Google can be a blank page to the assistant your customer is actually asking.
I want to be careful not to overclaim, because the honest version is more interesting than the viral one: that finding rests on a single study from December 2024, no AI company has ever confirmed it, and agentic browsers are already blurring the line. But nothing has refuted it either — and the fix is the same fix that makes your site faster, more accessible, and easier to maintain: put the content in the HTML, and let the cinema be an enhancement rather than a prerequisite. Build the movie when the movie is the point. When people came to get something done, build them a website.
