Gathering detailed insights and metrics for three
Gathering detailed insights and metrics for three
Gathering detailed insights and metrics for three
Gathering detailed insights and metrics for three
npm install three
Typescript
Module System
Node Version
NPM Version
94.3
Supply Chain
95
Quality
91.9
Maintenance
100
Vulnerability
99.6
License
JavaScript (64.6%)
HTML (29.98%)
Roff (2.19%)
SCSS (2.08%)
CSS (1.16%)
Total Downloads
237,301,710
Last Day
100,397
Last Week
1,741,282
Last Month
7,639,873
Last Year
77,637,518
MIT License
106,460 Stars
45,362 Commits
35,775 Forks
2,546 Watchers
16 Branches
1,953 Contributors
Updated on Jun 01, 2025
Minified
Minified + Gzipped
Latest Version
0.177.0
Package Id
three@0.177.0
Unpacked Size
28.90 MB
Size
7.30 MB
File Count
1,099
NPM Version
10.9.2
Node Version
22.14.0
Published on
May 30, 2025
Cumulative downloads
Total Downloads
Last Day
-18%
100,397
Compared to previous day
Last Week
-11.9%
1,741,282
Compared to previous week
Last Month
-5%
7,639,873
Compared to previous month
Last Year
31%
77,637,518
Compared to previous year
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
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.
1import * as THREE from 'three'; 2 3const width = window.innerWidth, height = window.innerHeight; 4 5// init 6 7const camera = new THREE.PerspectiveCamera( 70, width / height, 0.01, 10 ); 8camera.position.z = 1; 9 10const scene = new THREE.Scene(); 11 12const geometry = new THREE.BoxGeometry( 0.2, 0.2, 0.2 ); 13const material = new THREE.MeshNormalMaterial(); 14 15const mesh = new THREE.Mesh( geometry, material ); 16scene.add( mesh ); 17 18const renderer = new THREE.WebGLRenderer( { antialias: true } ); 19renderer.setSize( width, height ); 20renderer.setAnimationLoop( animate ); 21document.body.appendChild( renderer.domElement ); 22 23// animation 24 25function animate( time ) { 26 27 mesh.rotation.x = time / 2000; 28 mesh.rotation.y = time / 1000; 29 30 renderer.render( scene, camera ); 31 32}
If everything goes well, you should see this.
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.
1git clone --depth=1 https://github.com/mrdoob/three.js.git
7.5/10
Summary
Denial of service in three
Affected Versions
< 0.125.0
Patched Versions
0.125.0
7.1/10
Summary
Cross site scripting in three.js
Affected Versions
< 0.137.0
Patched Versions
0.137.0
Reason
30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10
Reason
no dangerous workflow patterns detected
Reason
security policy file detected
Details
Reason
license file detected
Details
Reason
SAST tool is run on all commits
Details
Reason
all dependencies are pinned
Details
Reason
detected GitHub workflow tokens with excessive permissions
Details
Reason
1 existing vulnerabilities detected
Details
Reason
binaries present in source code
Details
Reason
Found 11/30 approved changesets -- score normalized to 3
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
branch protection not enabled on development/release branches
Details
Reason
project is not fuzzed
Details
Score
Last Scanned on 2025-05-26
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More