MeshFormat

Compress 3D Models

Drop a model, cut its triangle count and texture sizes, then take the result in whichever format you need. Everything runs locally, so large scenes never leave your machine and there is no upload limit to work around.

or drop them anywhere in this box

Files are processed on your device and never uploaded

Try a sample:

Questions

What does compression actually change?

Duplicate meshes and unused data are removed, vertices are welded, attributes are quantized to integers and the buffers are packed with EXT_meshopt_compression. Optionally the triangle count is reduced and oversized textures are scaled down.

Why does the triangle budget sometimes rebuild the normals?

Cutting triangles works by collapsing edges, and that needs neighbouring triangles to share their vertices. STL and most CAD exports store a separate normal for every face, so no two triangles match up and there is nothing left to collapse. When that happens the original normals are dropped so the mesh can be welded, and flat ones are written again once the geometry is thinner. Models that already carry smooth shared normals keep them untouched.

Will the compressed file still open everywhere?

Meshopt compressed GLB is read by three.js, Babylon.js, model-viewer, Godot and the Khronos glTF validator. If a tool refuses it, turn meshopt off and keep only quantization, which needs no extension support at all.

Can I compress an STL or a STEP file?

You can drop one in and it will be read into a GLB first, because the compression steps are glTF features. The download is not locked to GLB though: pick any format the converter writes and the optimized model is written out to it, keeping the reduced triangle count and the resized textures.

Why is the compression itself only available in GLB?

Because compressed data has to be described by the file format itself, and glTF is the only one here that standardises it. STL spends fifty plain bytes on every triangle with nowhere to record that they were packed, and OBJ is plain text. 3MF is the one other format that comes out smaller for free, since the file is a zipped package. Everywhere else the ways to save space are fewer triangles, binary rather than ASCII encoding, and fewer decimal places.

Why is Draco not offered?

The Draco encoder is not available as a browser friendly WebAssembly module in this pipeline, and meshopt usually wins on decode speed anyway. Meshopt gives comparable size with far less CPU cost when the model loads. Reading is a different matter: Draco compressed files are unpacked without any extra steps, since the decoder ships with the site.