GLB Compressor
Shrink GLB models for the web: dedup and quantize geometry, optionally apply meshopt compression, and re-encode textures as WebP. The output is re-imported to verify it loads.
Drag & drop your GLB file here
Shrink GLB models with mesh quantization and WebP texture compression. Processed locally in your browser.
Or click to browse
GLB (binary glTF)
How It Works
Upload a GLB
Drop in a binary glTF file with embedded textures and buffers.
Pick your trade-offs
WebP texture quality and max size, quantization for compatibility, or meshopt for minimum size.
Download and ship
The compressed file is re-imported and verified before you download it.
Frequently Asked Questions
Three things: textures re-encoded as WebP and capped to a sensible resolution (usually the biggest win), vertex quantization that stores positions and normals in fewer bits, and optional meshopt compression on top. Duplicate and unused data is also stripped.
With the default settings, yes — quantization (KHR_mesh_quantization) and WebP textures (EXT_texture_webp) are supported by Three.js, Babylon.js, and modern engines. Meshopt compression needs a MeshoptDecoder wired into the loader, which is why it's off by default.
Quantization is visually lossless at default settings. Texture quality is the lever you control — the quality slider trades file size against texture sharpness, and normal maps automatically get extra quality since they show artifacts sooner.
Files that are already Draco-compressed can't currently be read — decompress them in your DCC tool or gltf-transform CLI first, then compress here.
As a rule of thumb: under ~2 MB loads comfortably on mobile connections, 2–5 MB is fine behind a loading state, and beyond 10 MB you should question whether the asset needs that fidelity. Textures usually dominate — check their share of the size before touching geometry settings.
Quantization alone is the compatibility-safe choice: standard extensions, loads everywhere. Meshopt stacks on top for the smallest files but requires wiring a MeshoptDecoder into your loader. Ship quantization by default; add meshopt when you control the loading code and need the extra savings.