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

FormatSupportHow
GLBBuilt inGLTFLoader from three/addons/loaders/GLTFLoader.js
glTFBuilt inGLTFLoader from three/addons/loaders/GLTFLoader.js
OBJBuilt inOBJLoader, plus MTLLoader for the .mtl materials
STLBuilt inSTLLoader, which returns a BufferGeometry
FBXBuilt inFBXLoader from three/addons/loaders/FBXLoader.js
PLYBuilt inPLYLoader, which returns a BufferGeometry
3MFBuilt inThreeMFLoader from three/addons/loaders/3MFLoader.js
DAEBuilt inColladaLoader from three/addons/loaders/ColladaLoader.js
USDZBuilt inUSDZLoader 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.