3D · 13 tools · nothing uploads

Optimize a 3D model

Shrink 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. Nothing is uploaded.

Input

Options

Optimize a 3D model shrinks a mesh three ways. Weld merges vertices within a set distance, 0.0001 by default, 0 to skip it. SimplifyRatio removes triangles toward a target fraction, 1 leaving the mesh whole. QuantizeBits snaps positions onto a coarser grid, a plain float rounding rather than glTF's own quantization extension. Draco compression is not offered here at all.

Questions

What does weld do?

It merges vertices that sit within a set distance of each other, closing tiny gaps left by how the model was exported. weld defaults to 0.0001 in the models own units, and setting it to 0 turns welding off entirely.

What does simplifyRatio do?

It removes triangles toward a target fraction of the original count using three.js SimplifyModifier, so 0.5 aims to keep about half the triangles. A value of 1, the default, leaves the mesh unsimplified; the accepted range is 0.01 to 1.

What does quantizeBits do, and is it the same as glTFs own compression?

No. It snaps every vertex position onto one of 2 to the power of N evenly spaced steps across the geometrys bounding box, a plain float32 rounding done before export. glTFs own KHR_mesh_quantization extension changes the accessors component type to a normalized integer instead, and this tool does not write that extension.

Why is there no Draco compression option?

Because three.js ships Dracos decoder but not an encoder, and the encoder three.js own exporter points at lives on a CDN this project never fetches anything from. Adding Draco output would mean shipping a dependency this codebase does not otherwise carry.

What output formats can I choose?

glb, gltf, obj, stl, stl-ascii, ply or usdz, glb by default. The result is named after your input file with an -optimized suffix and the extension matching your chosen format.

Does it run on the command line?

Yes. It takes a single file and has no browser-only restriction, so the CLI and MCP surfaces run the same weld, simplify and quantize code as the page.

Compare

Related 3D tools

1→1Convert 3D modelTurn 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.Takes one file1→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→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