zlim
Sign inGet started
Compression

Draco compression for glTF and GLB

Draco is Google's open-source mesh compression for glTF geometry — positions, normals, UVs, and indices — that can shrink the geometry payload by an order of magnitude. Zlim applies Draco (with tolerance-bounded quantization) deterministically as part of optimizing a model to GLB.

Get an API key Read the docs

What Draco does

Draco encodes mesh attributes and connectivity into a compact compressed buffer inside the glTF/GLB. It is the standard way to cut the geometry half of a model's size, and it is supported by the KHR_draco_mesh_compression glTF extension.

Draco is lossy in the sense that it quantizes attributes to a chosen bit depth — but Zlim bounds that quantization so the result is visually indistinguishable from the source.

The trade-off: decode cost

Draco-compressed meshes must be decoded at load time by a Draco decoder. Mainstream runtimes ship one (model-viewer, three.js, Babylon.js), so this is usually transparent — but on very low-end devices the decode adds a little CPU time. When fast decode matters more than maximum size, meshopt is the alternative; Zlim supports both.

bash
zlim optimize model.glb       # Draco applied per the chosen profile

FAQ

Is Draco lossless?

Not strictly — it quantizes attributes. Zlim caps the quantization so the output is visually lossless while still capturing most of the size win.

Does Draco require a runtime decoder?

Yes. Web viewers like model-viewer and three.js bundle a Draco decoder, so Draco GLBs load out of the box in those environments.

Draco vs. meshopt — which should I pick?

Draco for the smallest files; meshopt for faster decode and progressive-friendly buffers. Zlim can apply either, chosen by profile.

Optimize your model now

Start free — 25 optimizations a month. No card required.

Get an API key
Related
FBX to GLBOBJ to GLBCompress GLBOptimize glTFKTX2 texturesReduce poly countOptimize for webOptimize for ARAPI & CLI docs