MrTechKing

4 min read

three.js: The JavaScript Library Behind 3D on the Web (GitHub, Scanned)

The most widely used JavaScript library for 3D graphics in the browser, with WebGL and WebGPU renderers and hundreds of examples.

three.js logo
✅
Scan: safe. Nothing to warn about. The long lines are minified third-party helpers and lookup tables, the binaries are 3D models and textures, and the two advisories are minor build-tool issues. Scanned Nov 13, 2026; the full report is below.

three.js is how most 3D on the web gets made. It wraps the browser's low-level graphics APIs in friendly building blocks: a scene, a camera, meshes, materials, lights and a renderer. A spinning cube takes about twenty lines, and the same library powers product configurators, data visualizations, portfolio sites, browser games and many of the 3D effects you see on landing pages.

The core ships WebGL and WebGPU renderers, with SVG and CSS3D renderers as add-ons. Around it sit loaders for glTF, FBX, OBJ and other 3D formats, post-processing effects, physics and VR and AR helpers, plus more than 600 live examples, a manual and full documentation on threejs.org. The site also hosts a free browser-based editor for arranging scenes.

three.js was started by Ricardo Cabello (mrdoob) and has been open source since 2010. It is MIT-licensed, with about 118,000 stars and more than 2,600 contributors. Release r187 came out on 30 October 2026.

  • Repository: github.com/mrdoob/three.js
  • Licence: MIT (MIT License)
  • Language: JavaScript. Stars: 118.3K. Forks: 37K. Last push: Nov 13, 2026.
  • Scan: safe, Nov 13, 2026, commit acf77e4

Who it is for

Web developers adding 3D to a site or app, creative coders and designers making interactive experiences, and game and visualization builders who want to stay in JavaScript. You need some JavaScript to use the library.

Getting started

1. Add it to your project

npm install three

2. Then import it in your code

import * as THREE from 'three';

3. Browse the live examples for something to start from

https://threejs.org/examples/

Safety scan

We cloned mrdoob/three.js at commit acf77e4 on Nov 13, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.

  • No secret hits across 6,098 files and about 1.1 million lines, mostly JavaScript and HTML examples. The 11 pattern hits are all very long lines in vendored, minified libraries (acorn, esprima, the meshoptimizer decoders, a TIFF reader) and two copies of the SMAA anti-aliasing lookup textures written as data.
  • The 19 committed binaries are example assets: 16 glTF and model .bin files, one FBX head model and two EXR textures used by the examples and the manual. None is an executable.
  • 2 advisories, both in the development lockfile: a moderate one in minimatch and a low one in deepmerge, used by build and test tools. The library itself has no runtime dependencies.
  • The hosts are what a graphics library documents: threejs.org, GitHub, Khronos and MDN references, CDNs for the examples, and links to papers and Shadertoy. We found no analytics service.
  • Six workflows, no pull_request_target, and both third-party actions are pinned to commits. A security policy, Renovate, CodeQL, contributing guide and code of conduct are present. OpenSSF Scorecard gives it 7.2 out of 10.

What the scanner counted

CheckResult
SecretsNone found.
Suspicious code11 pattern hits found and read; every one is listed under the raw findings.
Install-time codeNone: nothing runs at install beyond the package manager itself.
Committed binaries19 executable or compiled objects committed; listed under the raw findings.
CI workflows6 workflows. None use pull_request_target. 0 of 2 third-party actions pinned to a tag rather than a commit.
Network hosts40 distinct hosts referenced from source; most often github.com, threejs.org, en.wikipedia.org, www.ecma-international.org. No URLs to bare IP addresses.
Known vulnerabilities2 advisories across 250 pinned packages: 0 critical, 0 high, 1 moderate, 1 low. package-lock.json: 252 packages, 2 advisories.
Project hygieneHas security policy, automated dependency updates, CodeQL, licence file, contributing guide.
OpenSSF Scorecard7.2 out of 10, as of Oct 19, 2026.

The raw findings

Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.

Pattern hits (11)
WhereRuleMatch
editor/js/libs/acorn/acorn.js:36very-long-line4317 chars
editor/js/libs/esprima.js:4644very-long-line6677 chars
editor/js/libs/esprima.js:4646very-long-line8007 chars
examples/jsm/libs/meshopt_clusterizer.module.js:7very-long-line21948 chars
examples/jsm/libs/meshopt_decoder.module.js:7very-long-line9482 chars
examples/jsm/libs/meshopt_decoder.module.js:9very-long-line13788 chars
examples/jsm/libs/meshopt_simplifier.module.js:7very-long-line34473 chars
examples/jsm/libs/utif.module.js:454very-long-line4381 chars
examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js:525very-long-line3042 chars
examples/jsm/postprocessing/SMAAPass.js:218very-long-line44306 chars
examples/jsm/tsl/display/SMAANode.js:701very-long-line44306 chars
Committed binaries (19)
  • manual/examples/resources/models/cartoon_lowpoly_small_city_free_pack/scene.bin: .bin, 4 MB
  • examples/models/fbx/Head_69.fbx: .fbx, 2 MB
  • examples/textures/piz_compressed.exr: .exr, 2 MB
  • examples/textures/matcaps/040full.exr: .exr, 1 MB
  • examples/models/gltf/MaterialsVariantsShoe/glTF/MaterialsVariantsShoe.bin: .bin, 706 KB
  • examples/models/gltf/DamagedHelmet/glTF/DamagedHelmet.bin: .bin, 559 KB
  • manual/examples/resources/models/animals/Zebra.bin: .bin, 557 KB
  • manual/examples/resources/models/animals/Cow.bin: .bin, 512 KB
  • manual/examples/resources/models/animals/Horse.bin: .bin, 468 KB
  • manual/examples/resources/models/knight/KnightCharacter.bin: .bin, 457 KB
  • manual/examples/resources/models/animals/Llama.bin: .bin, 401 KB
  • manual/examples/resources/models/animals/Pig.bin: .bin, 396 KB
  • manual/examples/resources/models/animals/Sheep.bin: .bin, 395 KB
  • manual/examples/resources/models/animals/Pug.bin: .bin, 384 KB
  • manual/examples/resources/models/3dbustchallange_submission/scene.bin: .bin, 292 KB
  • manual/examples/resources/models/mountain_landscape/scene.bin: .bin, 137 KB
  • examples/models/gltf/DamagedHelmet/glTF-instancing/GpuInstancingRotation.bin: .bin, 1 KB
  • examples/models/gltf/DamagedHelmet/glTF-instancing/GpuInstancingScale.bin: .bin, 1 KB
  • examples/models/gltf/DamagedHelmet/glTF-instancing/GpuInstancingTranslation.bin: .bin, 1 KB
Worst known vulnerabilities (2 of 2)
AdvisorySeverityPackageSummary
GHSA-g3hv-75wg-m249moderateminimatch@10.2.6minimatch has potential denial of service via globparts amplification
GHSA-gcqx-w48m-w2h4lowdeepmerge@4.3.1deepmerge mergeObject() allows prototype poisoning of returned objects

By the numbers

Stars118.3K
Forks37K
Contributors2,619
Commits48.6K
Open issues258
Open pull requests145
Releases179
Latest releaser187
LicenceMIT
Main languageJavaScript
Project age16 years
Last pushNov 13, 2026
Tracked files6,098
Lines of code1.1M
Checkout size592 MB

Lines by language: JavaScript 551.7K, HTML 404.7K, Markdown 105.3K, JSON 38.7K, CSS 8,980, GLSL 1,600.

Questions

Is three.js free?

Yes. three.js is free and open source under the MIT licence, including for commercial projects.

Do I need to know WebGL to use three.js?

No. That is the point of it. You work with scenes, cameras, meshes and lights, and three.js handles the WebGL or WebGPU calls. Knowing some 3D basics such as coordinates and materials helps.

Can I make games with three.js?

Yes, many browser games use it, but it is a rendering library, not a full game engine. For a complete engine with an editor, physics and export to desktop and mobile, Godot, also on this list, is the closer fit.


This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.