3D tools

Convert 3D model

Turn an OBJ, STL, PLY, FBX, DAE, 3DS or 40-odd other 3D formats into glTF or GLB. Nothing is uploaded.

Runs on your device. The file is never uploaded.

Convert 3D model reads whatever assimp imports, from OBJ and STL through FBX and DAE, and writes glTF 2.0 as either one self-contained .glb or a .gltf beside its .bin. Assimp's own result name is replaced by yours, with the buffer reference inside rewritten to match. One file goes in, so an OBJ leaves its .mtl materials behind.

Input

Options

Questions

Which formats can it read?

Whatever assimp reads, which is 40-odd formats including OBJ, STL, PLY, FBX, DAE, 3DS, glTF and GLB. The engine is assimpjs 0.0.10, which wraps assimp 5.2 as WebAssembly. The extension has to match the real format, since that is how assimp picks its importer, so a renamed file will be refused.

Why can it only write glTF and GLB?

Because that is the engine's ceiling, not a design choice. assimpjs 0.0.10 exposes exactly five export targets, and after removing the deprecated glTF 1.0 pair and the JSON dump, glTF 2.0 and GLB are what remains. Asking it for OBJ, STL or PLY returns an export error. The format option therefore offers glb, the default, and gltf.

What is the difference between glb and gltf output?

Packaging. glb is one self-contained binary file, which is the easier thing to move around and the default here. gltf gives you a JSON file plus a companion .bin holding the vertex data, so it is two files that must stay together. When you pick gltf, the buffer reference inside the JSON is rewritten to point at the renamed .bin, so the pair still works after download.

Why did my model lose its materials or textures?

Because only one file goes in. An OBJ with a companion .mtl, or a glTF referencing external images, arrives here without those companions, so assimp imports the geometry and the material definitions go missing. The geometry itself is intact. Embedded materials inside a single-file format such as FBX or GLB do survive.

Why was my file rejected?

One of two reasons, each with its own message. If assimp cannot parse it at all you get "assimp could not read this as a 3D model" with the error code, and a reminder that the extension has to match the real format and the file must not be a zipped or partial download. If it parses but the scene is empty you get "assimp read the file but found no geometry in it", which is what a stray text file passed to the OBJ reader produces.

Is my model uploaded for conversion?

No. assimp is compiled to WebAssembly and runs in a Web Worker in this tab, with its wasm file served from this site. Models are often unreleased product designs or scan data, and none of it goes anywhere; the conversion works with your network switched off.

Related 3D tools