3D · 13 tools · nothing uploads

Convert 3D model

Turn an OBJ, STL, PLY, GLB, glTF, FBX, DAE, 3MF, 3DS or 40-odd other 3D formats into GLB, glTF, OBJ, STL, PLY or USDZ. Textures round-trip through glTF/GLB; OBJ, STL, PLY and USDZ output geometry only. Nothing is uploaded.

Input

Options

Convert 3D model reads whatever three.js or assimp imports, from OBJ and STL through FBX, 3MF and DAE, and writes GLB, glTF, OBJ, STL (binary or ASCII), PLY or USDZ. Textures survive only through glTF and GLB; the other outputs carry geometry alone. One file goes in, so an OBJ leaves its .mtl materials behind.

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.

Compare

Related 3D tools

1→13D model mesh infoRead vertex/face/material counts and the bounding box out of an OBJ, STL, FBX, DAE or 40-odd other 3D formats, via assimp's import side, the wide side of the engine model-convert also uses.Takes one file1→1Inspect a glTF/GLB modelRun the Khronos glTF-validator over a glTF or GLB file and report every error, warning, info and hint it finds, alongside a resource summary (draw calls, vertex/triangle counts, materials, textures, animations). A model in another format is converted to GLB first, so the report describes that conversion's output rather than the original file's own bytes.Takes one file1→1Measure a 3D modelRead the bounding box, volume, surface area and triangle count out of a 3D model, per mesh and as a whole. Volume assumes consistent outward-facing triangle winding.Takes one file1→1Strip 3D model metadataRemove authoring metadata (generator string, copyright, node/mesh names, and any glTF "extras" fields) from a 3D model before sharing it. Converts through assimp's import side to glTF/GLB first, so the input can be any of the 40-odd formats assimp reads, then edits the resulting scene JSON directly.Takes one file1→1Optimize a 3D modelShrink a 3D model: weld coincident vertices within a tolerance, simplify the mesh toward a target triangle fraction, and quantize vertex positions onto a coarser grid. No Draco compression, since three ships Draco's decoder but not its encoder, and the encoder three's own exporter points at is a CDN this project never fetches anything from.Takes one file1→1Convert STL between ASCII and binaryConvert an STL 3D model between its ASCII (text) and binary encodings. Both describe the same triangle mesh, so this is a direct parse-and-rewrite with no 3D engine involved.Takes one file