Interactive 3D Website Development

An interactive 3D website is a site where 3D graphics run live in the page and respond to the visitor (scroll, pointer, click) rather than sitting there as a video or an image. It is built with WebGL or WebGPU, usually through Three.js, and it runs in an ordinary browser with nothing to install.

The interesting question is not how to build one. It is whether the version you build stays fast on a four-year-old Android, still works for someone who has motion sensitivity turned on, and still communicates when the GPU refuses to cooperate. Most agency pages on this topic show the reel and skip that part. It is the part that decides whether the site performs commercially, so it is what this page is about.

Built by

Peter Csipkay

Creative frontend developer near Munich, and the person behind this site. I scope, build and ship the work myself.

Live demo

A generative scene, with no model to download

This is the cheapest kind of 3D on the web: the visuals are computed in a shader rather than downloaded as geometry and textures, so it costs kilobytes rather than megabytes. Move your pointer across it.

Rendered with WebGPU where the browser supports it, WebGL where it doesn't. It pauses when it scrolls out of view and holds still if your system asks for reduced motion.

What counts as an interactive 3D website

The label covers a wide range, and the range matters because the costs differ by an order of magnitude.

  • A 3D element on a normal page. A rotating product, a hero object, a WebGL background. The site is a site; 3D is one component. Cheapest, safest, and usually the right call.
  • A scroll-driven narrative. The page scroll drives a camera or an animation: a product assembling, a journey through a scene. This is the format most people picture. The difficulty is not the 3D, it is choreographing it against real content while keeping the page usable.
  • An explorable scene. The visitor moves through a space rather than down a page. Effectively a small game in a browser. Expensive, and rarely the right answer for a marketing site.
  • A generative or shader-driven site. The visuals are computed rather than modelled (fluid, particles, distortion, type effects). Can be extremely light, since there may be no model to download at all, and the hero animation on this page is one.

Choosing the wrong tier is the most expensive mistake available here. An explorable scene where a single rotating product would have converted better costs both the build and the conversions.

Performance: the conversation most 3D sites avoid

3D on the web has a deserved reputation for slow sites. It is deserved because most 3D sites are built as demos and shipped as marketing pages. Here is what actually has to hold.

Core Web Vitals

Google measures three things that a 3D site can easily break.

LCP: how long until the largest visible element appears. If the canvas is the largest element and it waits on a model download, LCP is the model download. The fix is structural: the page's headline and copy are real HTML, rendered server-side, and they are what paints first. The 3D arrives afterwards.

INP: how quickly the page responds to interaction. A heavy scene starves the main thread and every tap feels late. Keeping the render loop honest, moving work to workers or the GPU, and not decoding a 40 MB texture during a scroll are what protect it.

CLS: how much the layout jumps. Canvases that resize after load, or a scene that pushes content down when it initialises, cause exactly this. Reserve the space before anything loads.

None of these forbid 3D. They forbid 3D that blocks the page, which is a build decision rather than a property of the medium.

Mobile GPUs

The gap between a development laptop and a mid-range Android is enormous, and it is not mainly about speed; it is memory and heat. Mobile GPU memory is limited and shared; exceed it and the browser reloads the tab silently. Sustained load causes thermal throttling, so a scene that runs at 60 fps for twenty seconds runs at 25 fps after two minutes.

The practical rules: compress textures to KTX2 so they stay compressed in GPU memory, cap resolution rather than rendering at full retina density, cap the pixel ratio, draw fewer objects rather than simpler ones, and stop the render loop entirely when the canvas scrolls out of view. That last one is a two-line change that fixes most complaints about 3D sites draining batteries.

The download

Nobody waits eight seconds. Compressed geometry, compressed textures, code-split the 3D bundle so it is never part of the initial JavaScript payload, and prefer generated visuals over downloaded models where the design allows it. A shader costs kilobytes.

Accessibility and reduced motion

Three things are non-negotiable, and all three are cheap when planned and expensive when retrofitted.

Respect prefers-reduced-motion. Some people get genuinely ill from parallax, continuous motion and scroll-hijacked camera moves. The OS setting exists to tell you that, and a site that ignores it is not edgy, it is careless. Respecting it does not mean a blank page: it means no auto-rotation, no continuous drift, no motion the visitor did not initiate. The static scene is often the better composition anyway.

Never make 3D the only route to content. If the price, the specification or the navigation exists only inside the canvas, then screen reader users, keyboard users and anyone whose GPU is blocklisted have no route to it. The canvas is a picture. The content is HTML, underneath it, always.

Keyboard operation. Controls are buttons and receive focus, with a visible focus ring. Scroll-driven scenes must remain navigable by keyboard scroll, which rules out the more aggressive forms of scroll hijacking.

Scroll hijacking deserves its own note. Taking over the scroll wheel to drive a camera can be beautiful and it breaks find-in-page, position memory, deep links and the scrollbar as an indicator of length. When it is used, it should be for a bounded section rather than the whole document, and the page should still be readable by scrolling normally past it.

When WebGL is not available

WebGL fails more often than the demos suggest: old drivers, locked-down corporate machines, GPU blocklists, battery-saver modes, virtualised environments, some headless crawlers. It is a small percentage, and a small percentage of a marketing site's traffic is still a meaningful number of people.

The design question to settle early is what those visitors see. The answer should be a designed state (a still image or a poster frame, the same headline, the same call to action) and not a black rectangle or a browser-console error.

This is also why the page is built server-rendered first. Every heading, every paragraph, every link exists in the HTML before any JavaScript runs. The 3D layers on top. Test it by disabling JavaScript in your own browser: if the page still reads and still converts, it is built correctly. That test is worth running on any 3D site you are considering commissioning, including mine.

The showcase on this site is a few thousand Three.js sites, and it is a useful place to calibrate before commissioning anything: browse it on your phone, on mobile data, and notice which ones you wait for.

What an interactive 3D website costs

Cost is driven by the tier above, plus four things:

  1. Bespoke 3D content. Modelling, texturing and animation are a separate discipline from development, and on an explorable scene they dominate the budget. Generative and shader-driven work skips this entirely, which is why it is often the best value.
  2. Choreography. Scroll-driven sequences are iterative by nature. Timing gets tuned by feel, in review, repeatedly. Budget for iteration rather than treating it as scope creep.
  3. Device coverage. Supporting current flagship phones is one number. Supporting a four-year-old mid-range Android is a larger one, and it is usually the correct one.
  4. What happens after launch. A 3D site is software. Browsers update, GPUs get blocklisted, a library moves a version. A site with no maintenance plan degrades quietly.

For most businesses, the highest-return version is the first tier — one strong 3D element on a fast conventional site. It costs a fraction of a full 3D experience, it carries almost none of the performance risk, and on a landing page it is usually indistinguishable in effect. I have talked several people down from tier three to tier one and I do not remember anyone regretting it.

Built with Three.js and WebGPU

Three.js is the practical default: mature, enormous ecosystem, works everywhere. In a React codebase, React Three Fiber expresses the same thing as components, which matters when the 3D has to coexist with an application rather than sit in a standalone page.

WebGPU is the newer graphics API. Through Three.js's node system and TSL it makes compute work practical in the browser and material authoring composable. For a rotating logo it changes nothing. For particle systems, heavy post-processing or many dynamic lights, it changes what is affordable. The right posture today is WebGPU where it is supported, WebGL everywhere else, one codebase. That is what Three.js's node materials are for.

GSAP handles the animation choreography, and smooth-scroll libraries handle the scroll feel, both of which this site uses. They are worth naming because they carry the same caveats: they must respect reduced motion, and they must not take the page's scrollbar hostage.

What goes wrong

3D chosen before the message. If the brief starts with "we want something like [award site]" rather than with what the page has to persuade someone to do, the 3D becomes decoration with a hosting bill. Decide what the page is for, then decide whether 3D serves it.

Desktop-first, mobile as an afterthought. Most traffic is mobile. A scene designed for a 27-inch display and then "made responsive" is two builds, done badly, in sequence.

Loading screens as a design feature. A progress bar is an apology. Sometimes an honest one, but a five-second wait costs more visitors than the animation earns.

Everything at once. Bloom, depth of field, chromatic aberration, particles, a physics simulation. Each is a frame-rate cost, and combined they turn into a heater. Restraint reads as quality.

No measurement after launch. Real-user performance data will tell you what devices your visitors actually have, and it is almost always slower than the assumption. Ship with monitoring or you are guessing.

A page that is only a page with JavaScript. Which is also an SEO problem, an accessibility problem and a fragility problem, all at once. Server-render the content. Enhance with 3D. In that order.

Budget

What it costs to work with me

The four tiers above differ by roughly an order of magnitude, so one published number would be meaningless. Tell me which tier the project needs (or let me tell you, which is usually the more useful conversation) and the quote follows from that.

Schedule

How long it takes

  1. 01

    Concept and technical scope

    1 week

    Decide which tier the project needs, agree the device floor to support, and set the performance budget in numbers rather than adjectives.

  2. 02

    Prototype the hardest moment

    1–2 weeks

    Build the single most demanding interaction first and profile it on the slowest supported device. This is where a plan meets reality cheaply.

  3. 03

    Content and 3D production

    2–6 weeks

    Models, materials, or the generative work that replaces them — running in parallel with the conventional build of the page.

  4. 04

    Integration and choreography

    2–4 weeks

    Scroll and pointer interaction, animation timing, reduced-motion variants, and the non-WebGL fallback as a designed state rather than an accident.

  5. 05

    Performance pass and launch

    1 week

    Lighthouse and field metrics, mid-range Android under throttling, thermal behaviour over a sustained session, then launch with monitoring in place.

Phases overlap in practice, and the ranges assume decisions arrive when they are needed. The one that slips most often is the first.

Proof

Work

Radix 3D

An interactive 3D network graph built with React Three Fiber. It loads live JSON and re-renders the full node and edge graph every three seconds, which makes it a study in the thing that matters on these projects: keeping interaction responsive while the scene is continuously rebuilt.

  • React Three Fiber
  • Three.js
  • Data visualization

Three.js Resources showcase

A few thousand curated Three.js and WebGL sites, filterable by technology. The most useful reference I can offer before you commission anything, including for judging what holds up on a phone.

  • Reference

Client projects I can show publicly are on the services page. Some work sits under NDA — ask on a call and I will say what I can.

F.A.Q

Frequently asked questions

Will an interactive 3D website hurt my SEO?

Not if it is built server-rendered first. Search crawlers index the HTML; if your headings, copy and links only exist after JavaScript runs and a canvas initialises, you are relying on rendering that may be delayed or skipped. Build the page so that everything meaningful is in the HTML, then add 3D as an enhancement on top. Core Web Vitals are the other half: a canvas that blocks the largest contentful paint or shifts the layout will cost you, and both are avoidable with lazy loading and reserved space.

How much does an interactive 3D website cost?

It depends almost entirely on which tier you need. A single 3D element on an otherwise conventional site is a fraction of a scroll-driven narrative, which is itself a fraction of an explorable 3D scene. Bespoke modelling and animation often cost more than the development; generative and shader-driven visuals skip that entirely and are frequently the best value. For most businesses the highest-return version is one strong 3D element on a fast conventional site, and I will usually recommend starting there.

Will it work on phones?

It has to, since most traffic is mobile, and that has to shape the build rather than be checked at the end. The real constraints on mobile are GPU memory and heat rather than raw speed: exceeding memory reloads the tab with no error, and sustained load throttles the frame rate after a couple of minutes. Compressed textures, capped pixel ratio, fewer draw calls and pausing the render loop when the canvas is off-screen handle most of it. I test on mid-range Android with a throttled CPU, not on the newest hardware.

What happens if a visitor cannot run WebGL?

They should see a designed fallback: a still image or poster frame with the same headline and the same call to action. WebGL is unavailable more often than demos suggest: old drivers, corporate machines, GPU blocklists, battery-saver modes. Because the page is server-rendered, those visitors still get the whole page; they do not get the animation. A black rectangle or a console error means the site was built without that state in mind.

Does 3D hurt accessibility?

It does if the 3D is where the content lives. Keep the canvas decorative and the content in HTML underneath it, make every control a real focusable button with a visible focus ring, and honour the prefers-reduced-motion setting by removing auto-rotation and continuous motion rather than by disabling the page. Scroll hijacking is the riskiest pattern: it breaks find-in-page, keyboard scrolling and position memory, so it should be bounded to a section rather than applied to the whole document.

How long does an interactive 3D website take to build?

A conventional site with one well-executed 3D element is a matter of weeks. A scroll-driven narrative is a couple of months, and most of the extra time goes into choreography and iteration rather than code. An explorable scene is a longer project shaped like game production. The most useful thing you can do to protect a timeline is prototype the hardest interaction first and profile it on the slowest device you intend to support, before the rest of the site is built around it.

Can you add 3D to our existing website?

Usually yes, and it is often the sensible move. A single component (a hero, a product, a background) can be added to an existing React, Next.js, Vue or plain-HTML site without rebuilding it, as long as the 3D bundle is code-split so it never lands in the initial JavaScript payload. What makes this hard is not the 3D but the existing site's performance budget: if the page is already slow, adding a canvas makes the underlying problem visible rather than causing it.

How do I judge whether an agency’s 3D work is any good?

Open their portfolio sites on your own phone, on mobile data, and count the seconds before something readable appears. Turn on reduced motion in your OS settings and reload. Disable JavaScript and see whether the page still says anything. Scroll to the bottom and back up and see whether the fans spin up. Those four tests take five minutes and separate work that was built to ship from work that was built to be screenshotted. Run them on my work too. The [showcase](/showcase) is a good sample to practise on.

What is the page actually for?

Tell me what the site has to persuade someone to do, and which devices your visitors use. I will tell you which tier of 3D that justifies, including when the answer is one element rather than a whole experience.

Get In Touch

Let's talk about your project

Tell me what you're trying to build, big or small. I'll reply personally within 24 hours, usually same day.

I reply personally within 24 hours — usually same day.

Peter Csipkay

Peter Csipkay

Creative Frontend Developer

Let's connect

Three.js developer and creator of threejsresources.com. I scope, build, and ship the work myself — no middlemen, no handoffs.

Based in

Munich, Germany

Testimonials

What Clients Say

Don't just take my word for it — here's what people I've worked with have to say.

Peter is different from other front end developers. He understands design along with the tech stack. He successfully resolved bugs and optimized the webapp quickly. I appreciate his good work ethic. He is very logical and manages to capture ideas perfectly.
AhmedCEODubai, UAE
Amazing work with super fast turn around. I'm thrilled!
RobertFounder, 3D AgencyTampa, Florida
Peter is a great resource. I enjoyed working with him. I will definitely work with him again.
ThomasProduct LeadBerlin, Germany
Was a pleasure to work with. Very reliable and motivated to deliver great work. I can highly recommend him.
SarahMarketing ManagerLondon, UK

Keep reading

Related services

Free tools

Useful before you commission anything