Can a 3D Website Be Fast? Core Web Vitals and WebGL Performance Guide
“3D websites are slow” isn’t true; “badly built 3D websites are slow” is. The difference comes down entirely to engineering decisions. In this article, we walk you step by step through how we protect Google’s speed metrics on animated and 3D websites.
Metrics first: what exactly does Google measure?
Google uses three Core Web Vitals metrics as a ranking signal, and a 3D website threatens each of them in a different way:
- LCP (Largest Contentful Paint) — how long it takes for the largest element on screen to appear. If the 3D scene is above the fold and there’s no poster frame, LCP waits for the scene to load. This is the worst-case scenario.
- INP (Interaction to Next Paint) — how quickly the page responds when a user interacts with something. If WebGL keeps the main thread busy, a user tapping the menu gets no response.
- CLS (Cumulative Layout Shift) — layout shifts on the page. When the scene loads late and starts taking up space, it pushes the content below it down. This is an entirely preventable mistake.
Rule 1 — No 3D on the critical path
The chain of resources a page needs in order to render is called the “critical path.” The 3D engine must not be part of that chain. In practice:
- The 3D library loads after the page’s first paint; it never sits in the HTML as a render-blocking script.
- The scene code is split from the main bundle and requested as a separate chunk. That way, pages without 3D never carry that weight at all.
- Fonts and critical CSS get priority; the scene comes last in the queue.
Rule 2 — The poster frame is non-negotiable
The box the scene will sit in must be ready at the right size, with a static image inside, the moment the page first renders. This single decision solves three problems at once: LCP completes with that static image, CLS drops to zero because the box is already in place, and visitors see a meaningful image even if JavaScript never runs.
The image is served in a modern format at the correct size, with separate versions for mobile and desktop.
Rule 3 — Don’t draw a single frame before it’s in the viewport
A scene further down the page shouldn’t run until the user scrolls to it. Modern browser APIs support this directly: the render loop doesn’t start until the scene crosses the visibility threshold, and it stops when the scene leaves the viewport. Rendering also pauses when the tab is moved to the background.
This alone dramatically reduces battery drain and average CPU usage; most complaints about phones heating up and stuttering on mobile devices come from exactly this.
Rule 4 — A budget for models and textures
On 3D websites, most of the weight isn’t in the code but in the assets. A model from the designer never goes onto the web as is. The budget discipline we apply:
- Polygon reduction. Detail that will never be visible on screen is removed; a separate low-poly version is prepared for the web.
- Texture compression. Textures are converted to compressed formats the GPU can read directly; this reduces both download size and video memory usage.
- Texture size limits. Almost no web scene needs 4K textures. Size is capped according to the pixel area the texture actually covers on screen.
- Model format. Web-optimized formats with compression support are used.
- Pre-computed lighting and shadows. Instead of real-time shadows, a pre-baked lightmap delivers the same look at a fraction of the cost.
Rule 5 — Tiers by device
A single scene isn’t served the same way to everyone. The device’s screen density, number of cores and memory status are read, and a tier is chosen accordingly:
- High tier: full scene, with shadows and reflections enabled.
- Mid tier: lower-resolution textures, shadows off, capped frame rate.
- Low tier: the scene is never initialized; the poster frame stays.
The last point is the most important. A stuttering 3D scene does more commercial damage than no 3D scene at all, because visitors remember the site as “broken.”
Rule 6 — Keep the main thread free
This is where the INP metric is won or lost. Heavy computation is moved off the main thread, model decoding and texture preparation happen in the background, and the animation loop is tied to the browser’s own rendering cadence. For scroll-driven animations, event listeners are marked as passive and layout isn’t read on every frame.
Rule 7 — Text never lives inside the canvas
This is both an SEO and an accessibility rule. Neither Google nor screen readers can read text drawn inside a canvas. Every label, heading and technical value in the scene has an HTML equivalent on the page. The 3D layer is a presentation layer; it is not the content itself.
We cover the details of this approach in our guide to 3D animated corporate websites, and technology selection in our article Three.js vs. Spline.
Pre-launch checklist
- Is the page readable and meaningful with JavaScript disabled?
- Is there a poster frame, is the box the right size, and does any layout shift occur?
- Does the scene render before it enters the viewport? (Check with the frame counter in developer tools.)
- How many seconds does the first screen take to load on a mid-range Android phone?
- What is the total download size, and how much of it is 3D assets?
- Is there any response delay when tapping the menu, a form or a button?
- Does the scene stop when the “reduce motion” preference is enabled?
- In field data (real user monitoring), are LCP, INP and CLS within the thresholds?
Why does speed directly affect revenue?
Speed makes you money through two channels at once. The first is organic: page speed is one of Google’s ranking signals and sets the ceiling for your SEO work. The second is advertising: in Google Ads, landing page experience affects Quality Score, and Quality Score lowers your cost per click. A slow landing page means fewer clicks for the same budget.
In other words, performance on a 3D website isn’t an aesthetic preference; it’s a direct cost item.
Frequently asked questions
Does a 3D scene hurt LCP?
Not if there’s a poster frame. LCP completes with the static image, and the scene kicks in afterward. Without a poster frame, LCP waits for the scene to load and the metric deteriorates significantly.
Do we have to turn off 3D on mobile?
No, tiering is enough. Modern mid-range phones run an optimized scene comfortably. The scene is disabled only on very low-powered devices.
Can 3D be added to our existing slow website?
Basic speed has to be fixed first. Adding 3D on top of an already slow site doubles the problem. The order is: technical cleanup, speed, then the 3D layer.
How fast should it load?
Our goal is for the first meaningful content to appear in under two and a half seconds on mobile. Since this doesn’t wait for the scene, the full scene may take longer to load, and that isn’t a problem.
How do you measure speed?
Lab tests alone aren’t enough; real user data is what counts. The Core Web Vitals report in Search Console and field measurements are tracked together.