Skip to main content

three.js

vr170

The most widely used JavaScript library for 3D graphics in web browsers, supporting WebGL and WebGPU

Rasterization
JavaScript
MIT
Active
GPU: WebGL, WebGPU
At a Glance
Technique
Rasterization
Language
JavaScript
License
MIT
Platforms
Web
GPU Support
Yes (WebGL, WebGPU)
CPU Support
No
Scene Formats
glTF, GLB, OBJ, FBX, COLLADA, 3ds, STL, PLY, Draco, USDZ
Output Formats
Framebuffer, PNG, JPEG
First Release
Apr 2010
Best For
Web-based 3D experiences, interactive data visualizations, product configurators, and creative coding projects that run directly in the browser without installation

Development Activity

Commit activity data is not available for this renderer.

Overview

Best for

Web-based 3D experiences, interactive data visualizations, product configurators, and creative coding projects that run directly in the browser without installation

Not ideal for

Offline physically based rendering, native desktop/mobile applications requiring maximum GPU performance, or projects needing built-in physics and scene editing tools

Strengths

  • Dominant ecosystem position with the largest community, most examples (~700+ official), and widest third-party library support of any web 3D framework
  • Extremely low barrier to entry — works in any modern browser with no build step, installation, or plugin required
  • WebGPU support via the new WebGPU renderer and TSL node-based material system positions it for next-generation web graphics with compute shader access
  • Comprehensive loader ecosystem supporting virtually every 3D file format through well-maintained addon modules
  • Battle-tested in production by thousands of websites, agencies, and applications spanning e-commerce, data visualization, art, and gaming

Limitations

  • No built-in scene editor — project setup and scene composition require code, though community tools like React Three Fiber, drei, and leva help
  • API surface is very large and has accumulated legacy patterns over 14+ years of development, making some areas inconsistent
  • Performance ceiling is constrained by JavaScript's single-threaded execution model and WebGL/WebGPU browser sandbox overhead
  • Material system is transitioning from legacy shader-based approach to the new TSL node system — documentation is fragmented during this migration
  • No native support for advanced global illumination — limited to baked lightmaps, environment maps, and screen-space techniques

Background

three.js is the dominant JavaScript library for creating and displaying 3D content in web browsers. Created by Ricardo Cabello (Mr.doob) in 2010, it abstracts the complexity of WebGL into a scene graph API with cameras, lights, materials, geometries, and post-processing effects. With over 100,000 GitHub stars, it has the largest community, the most third-party integrations, and the widest deployment of any web 3D framework — powering everything from creative coding experiments to production e-commerce configurators, data visualizations, and interactive art installations.

three.js provides a physically based material system through MeshStandardMaterial and MeshPhysicalMaterial, supporting metallic/roughness workflows, clearcoat, transmission, iridescence, and screen-space subsurface scattering approximations. The library includes an extensive loader ecosystem for glTF, OBJ, FBX, Collada, PLY, STL, and dozens of other formats. Post-processing is available through an EffectComposer pipeline offering bloom, depth of field, SSAO, tone mapping, and more.

The library is actively transitioning to support WebGPU alongside WebGL, introducing a new node-based material system called TSL (Three.js Shading Language) that enables more expressive and composable shaders. three.js also provides built-in WebXR support for VR and AR experiences, skeletal animation, morph targets, instanced rendering, raycasting, and sprite/particle systems. Its zero-dependency, no-build-step approach means it can be loaded via a single script tag, making it uniquely accessible for rapid prototyping.

Quick Start

Community & Resources

Performance Benchmarks

No benchmark data available for three.js yet.

Benchmarks will be added as more renderers are tested across our standard scene suite.

Learn about our methodology