Compress GLB

GLB compression for web and AR: meshopt geometry compression, optional mesh simplification and WebP textures. Accepts other input formats and converts them to GLB before compressing.

No file handy?

What this tool does

How it works

  1. 01

    Upload your GLB

    The file is processed locally with gltf-transform compiled to WebAssembly.

  2. 02

    Tune the compression

    Pick texture quality and mesh simplification; you see the resulting size before downloading.

  3. 03

    Download the light GLB

    Ready for web, AR or Three.js — same format, several times faster to load.

Frequently asked questions

How much does it actually reduce?

It depends heavily on what the file arrives with, which is why the ilove3d GLB compressor shows you the exact result before you download anything. A model with dense geometry and large textures — the typical case for a scan or a purchased asset — usually drops between 60 and 85%, and most of that reduction comes from the textures rather than the triangles. A GLB that already came out optimised from its authoring program, or one with no textures at all, drops considerably less: there the only remaining gain is geometry quantisation. The compression works on three fronts that add up: it removes duplicated data and unused nodes, it quantises and compresses the geometry with meshopt, and it re-encodes the textures to WebP at whatever maximum size you specify. Running the same file through twice gains nothing: the second pass finds the data already quantised and the textures already re-encoded, so the size barely moves.

Does the compressed model look the same?

Yes, in practice it is indistinguishable. Meshopt compression quantises positions and normals to a fixed precision rather than discarding geometry, so no triangles are lost and the silhouette does not deform: the compressed model has exactly the shape the original had. Where there is a decision for you to make is in the textures. The ilove3d GLB compressor re-encodes them to WebP, which at quality 80 or above is indistinguishable from the original in the overwhelming majority of cases. If the model carries wide smooth gradients — a sky, a polished metal surface — banding can appear across the transitions, and there it is worth raising the quality or leaving the textures untouched. The side-by-side comparison before downloading exists precisely so you decide that by looking rather than by trusting a number. Normal maps are the other case worth watching, since they encode direction rather than colour and tolerate lossy compression noticeably worse than a base colour map does.

Does it work on files with Draco compression?

No: a GLB that already carries Draco compression cannot be reprocessed with this tool. The right move is to export from your authoring program without Draco and compress here, and that is a recommendation rather than merely a limitation. Draco and meshopt solve the same problem with different priorities: Draco compresses the file on disk somewhat further, but decompressing costs considerably more CPU time on open. Meshopt, which is what the ilove3d GLB compressor uses, decodes far faster at runtime, and that matters when the model has to appear on a web page without the visitor waiting for it. For an asset loaded once and viewed many times, that decoding difference outweighs a few extra kilobytes in the file. The practical rule is simple: compress last, in the final step before publishing, and always keep the uncompressed original as your working copy for any future edit.

Will the compressed GLB work in any viewer?

It needs the viewer to support two glTF extensions: EXT_meshopt_compression for the geometry and EXT_texture_webp for the images. The three most widely used implementations support both — Three.js, Babylon.js and Google's model-viewer — so if your destination is a modern web page you will not run into trouble. Where it can fail is on older viewers, on some CMS plugins and on desktop tools that stayed behind on an earlier version of the format. The ilove3d GLB compressor lets you separate the two: if compatibility worries you, compress only the textures and leave the geometry untouched, and the resulting file opens anywhere. That is often the better starting point anyway, because textures are where nearly all of the weight lives. Whichever route you take, test the compressed file in the actual viewer that will serve it rather than in a desktop tool, because that is where any incompatibility will surface.