Compress GLB models in your browser

Minify the JSON chunk, strip exporter metadata, and quantise float normals and UVs to normalised shorts. Quantised normals declare KHR_mesh_quantization so the file stays valid.

GLB
No GLB selected
Drop a file to start
Drop GLB files here

or browse your device. Everything is processed on this device

No GLB to hand?

How to compress a GLB

01
Drop the GLB

A glTF binary (.glb). It is unpacked in this tab and never uploaded.

02
Choose strip and quantise

Leave both on for the usual saving. Turn stripping off if your runtime reads node or material names.

03
Download the repacked file

You get a valid GLB 2.0 file. Open it in your viewer before shipping if you quantised.

What compressing a GLB actually does

GLB is glTF 2.0 in one file: a short header, a JSON chunk that describes the scene, and a BIN chunk of typed arrays. Exporters often pretty-print the JSON and fill it with names, extras and generator strings. Minifying and stripping that costs nothing at draw time.

The BIN chunk is harder. Draco and meshopt can shrink geometry a lot, but they need WASM codecs and CSP exceptions this site refuses to take on lightly. Instead, float UVs in [0,1] become normalised unsigned shorts (core glTF), and float normals become normalised shorts under KHR_mesh_quantization. Positions stay 32-bit floats.

There is no better same-purpose format to upsell to: GLB is already the web container. STL is worse for browsers. If you need print-ready facets, use the STL tool; for the web, stay on GLB.

GLB compression FAQ

Does this use Draco?

No. Draco needs a WASM decoder in every client that loads the file. This page minifies JSON, strips metadata, and rewrites eligible float accessors as normalised integers.

Will stripping names break my scene?

Only if something in your pipeline looks up nodes, meshes or materials by name. Viewers that only draw the default scene do not need those strings.

Are positions quantised?

No. Integer positions need KHR_mesh_quantization plus a dequantisation transform. Normals use that extension when quantised; UVs use core normalised unsigned shorts. Positions stay 32-bit floats.

Can I compress .gltf with external bin files?

Not on this page. Drop a single .glb. A separate .gltf plus .bin pair is the same data; pack it to GLB first.

Do my files get uploaded?

No. Parsing and rewriting run in this browser tab. Nothing is sent to a server.

Drop more files

Same format joins the queue. Anything else re-routes to its own tool.