three.js 3D file formats: what opens and how
three.js is the most popular JavaScript library for 3D on the web, and it ships a loader for almost every common model format. It opens 9 of the 9 common 3D formats below without conversion; for the rest, convert to GLB first.
Format support at a glance
| Format | Support | How |
|---|---|---|
| GLB | Built in | GLTFLoader from three/addons/loaders/GLTFLoader.js |
| glTF | Built in | GLTFLoader from three/addons/loaders/GLTFLoader.js |
| OBJ | Built in | OBJLoader, plus MTLLoader for the .mtl materials |
| STL | Built in | STLLoader, which returns a BufferGeometry |
| FBX | Built in | FBXLoader from three/addons/loaders/FBXLoader.js |
| PLY | Built in | PLYLoader, which returns a BufferGeometry |
| 3MF | Built in | ThreeMFLoader from three/addons/loaders/3MFLoader.js |
| DAE | Built in | ColladaLoader from three/addons/loaders/ColladaLoader.js |
| USDZ | Built in | USDZLoader from three/addons/loaders/USDZLoader.js |
Which format to choose
GLB and FBX are the most dependable choice for three.js. glTF is the format three.js recommends: PBR materials, skins and animation clips all work. If a model arrives as , convert it to GLB so materials survive the trip.
Units and orientation
three.js works in unitless (most scenes treat 1 unit as 1 metre) and is Y-up. Most problems after an import, such as a model that is invisible, enormous or lying on its side, come from a mismatch with the exporting app rather than a broken file.
- Compress big models with Draco or Meshopt and load them with the matching decoder; it can cut download size several times over.
- Wrap loaded models in a Box3 and use its size to scale and centre them, because files from different apps use different units.
Questions
- What 3D formats can three.js open?
- Without conversion: GLB, glTF, OBJ, STL, FBX, PLY, 3MF, DAE, USDZ.
- How do I get an unsupported format into three.js?
- Convert it to GLB with one of our in-browser converters, then import the GLB. In three.js: GLTFLoader from three/addons/loaders/GLTFLoader.js.
- Does three.js keep textures and animation?
- Yes, when the format carries them. GLB and FBX keep the most; STL and PLY carry no textures.
Source: the official three.js documentation. Menu names can move between versions.
Written with AI assistance by the Renderlyst team in October 2026. Format support reflects each app's current release as we understand it, and we link the official documentation so you can confirm it for your version. Spotted something out of date? Email alishbakhalid766@gmail.com.