three.js

From public sources

three.js is an MIT-licensed JavaScript 3D library for building WebGL and WebGPU scenes in the browser with a lightweight, easy-to-use API.

LibraryCategory: Libraries & SDKs · Animation & 3DOpen sourcedata checked Oct 15, 2026

Overview

Building 3D graphics for the web usually means working directly with low-level WebGL, which is verbose and hard to get right. three.js offers a higher-level layer: scenes, cameras, geometries, materials and renderers that handle the GPU details for you, so developers can focus on what appears on screen. The library ships WebGL and WebGPU renderers, and SVG and CSS3D renderers are available as addons. Developers can create objects, apply materials and animate them with a render loop, as shown in the library's basic usage example. The project provides examples, documentation, a manual and a migration guide to help with adoption. three.js is aimed at web developers, creative coders and teams building interactive visualizations, games or product viewers. It is distributed under the MIT license and is installed as an npm package or loaded directly in the browser.
  • 3d
  • animation
  • augmented-reality
  • canvas
  • html5
  • javascript
  • svg
  • virtual-reality
  • webaudio
  • webgl
  • webgl2
  • webgpu

Installation

Commands are shown, never run by the marketplace. Check them against the official documentation.
  • Official websiteFrom public sourcesfrom catalog metadata
    threejs.org/ ↗
  • Language package registrynodejsFrom public sourcesfrom the package manifest — publication on the registry is not verified
    npm install three

    Not verified: check that this package in the registry belongs to this project before installing.

    www.npmjs.com/package/three ↗
  • Build from sourceFrom public sourcesfrom catalog metadata

    Build from source: no validated build recipe — follow the repository instructions.

    github.com/mrdoob/three.js ↗

Compatibility

Unknown means no evidence was found — not that the product is incompatible.
PlatformStatusArchitectureEvidenceConfidence
Node.jsCompatible—package manifest: package.json name0.60
PythonUnknown———
JVMUnknown———
.NETUnknown———
WebAssemblyUnknown———
Web browserUnknown———

Releases

checked Oct 29, 2026
No releases found on the source.

Quality profile

algorithm quality-v1.0 · assessed Oct 15, 2026
Quality Score91
Risk Score0
Confidence 1.00
Quality Score and Risk Score are different measures. A high score does not guarantee safety.

Score components

Maintenance · 2020
last activity 0 days ago
Documentation · 1515
README 2969 chars, description present
Ready to use · 156
install instructions: no; releases: yes
Metadata · 1010
4/4 of description, homepage, license, topics
Releases · 1010
10 release(s), latest 21 days ago
Category confidence · 1010
classifier confidence 1
Adoption · 1010
116458 stars (log-dampened, 10k = max)
License clarity · 55
SPDX MIT
Community · 55
issues enabled, 36646 forks

License

MIT
Known licensefrom the repository host

This is the catalog policy status, not legal advice.

Sources

github.com/mrdoob/three.jsPrimary★ 116,458 starslast activity Oct 15, 2026Primary repository · Confidence 1.00

Reviews

Sign in to write a review

No reviews yet.

Alternatives

README

From mrdoob/three.js · license MIT · fetched Oct 29, 2026

three.js

[NPM Package] [Build Size] [NPM Downloads] [jsDelivr Downloads] [Discord]

JavaScript 3D library

The aim of the project is to create an easy-to-use, lightweight, cross-browser, general-purpose 3D library. The current builds only include WebGL and WebGPU renderers but SVG and CSS3D renderers are also available as addons.

Examples — Docs — Manual — Wiki — Migrating — Questions — Forum — Discord

Usage

This code creates a scene, a camera, and a geometric cube, and it adds the cube to the scene. It then creates a WebGL renderer for the scene and camera, and it adds that viewport to the document.body element. Finally, it animates the cube within the scene for the camera.

import * as THREE from 'three';

const width = window.innerWidth, height = window.innerHeight;

// init

const camera = new THREE.PerspectiveCamera( 70, width / height, 0.01, 10 );
camera.position.z = 1;

const scene = new THREE.Scene();

const geometry = new THREE.BoxGeometry( 0.2, 0.2, 0.2 );
const material = new THREE.MeshNormalMaterial();

const mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );

const renderer = new THREE.WebGLRenderer( { antialias: true } );
renderer.setSize( width, height );
renderer.setAnimationLoop( animate );
document.body.appendChild( renderer.domElement );

// animation

function animate( time ) {

	mesh.rotation.x = time / 2000;
	mesh.rotation.y = time / 1000;

	renderer.render( scene, camera );

}

If everything goes well, you should see this.

Cloning this repository

Cloning the repo with all its history results in a ~2 GB download. If you don't need the whole history you can use the depth parameter to significantly reduce download size.

git clone --depth=1 https://github.com/mrdoob/three.js.git

Change log

Releases

Open the repository ↗