GLB & glTF Compressor
LocalCompress GLB and glTF models in your browser — Draco or Meshopt geometry compression with a validation report. No upload; compression is a Pro feature.
Drag files here, or click to browse
Supports GLB, GLTF, BIN, PNG, JPG, WEBP, BMP, KTX2
Choose fileDraco-compress a GLB to shrink geometry (KHR_draco_mesh_compression), plus a glTF/GLB validation report. Locally processed.
First run loads the compression engine (Draco / Meshopt, once); large files take longer
Per-file cap: see the dropzone validation; very large models are bounded by browser memory. Self-contained .glb works directly. For .gltf, drop the complete set together — the .gltf plus every .bin/texture it references (missing files are named in the error); the set is assembled into a self-contained GLB before compression. Batch queue below handles multiple files.
Preview first: conversion and download happen only after you click the button above. Files are not uploaded.
Batch queue
Drag files here, or click to browse
Supports GLB
Choose fileUp to 10 files per run — each file is isolated: one failure doesn't affect the rest; a single success downloads directly. Runs locally in your browser.
What is it? GLB & glTF Compressor shrinks GLB geometry with a selectable codec — Draco (KHR_draco_mesh_compression, widely supported by three.js, model-viewer and game engines), Meshopt (EXT_meshopt_compression, fast decode) or None (plain GLB that strips existing compression) — and returns a glTF/GLB validation report (PASS/FAIL with an issue list, exportable as JSON or Markdown). .gltf is supported too: drop it together with every referenced .bin/texture as a complete set (missing files are named in the error).
TL;DR: Shrink GLB and glTF models with Draco or Meshopt compression — validation report included, nothing uploaded.
How to use
- Drop or select a self-contained .glb — it is validated and previewed on the page. For .gltf, drop the complete set in one selection (the .gltf plus every referenced .bin/texture, filenames unchanged); the set is assembled into a self-contained GLB.
- Pick the compression codec: Draco (default), Meshopt, or None (plain GLB).
- Click Convert & download — the compressed model (name-draco.glb / name-meshopt.glb / name-plain.glb) saves to your downloads.
- Check the validation panel: PASS/FAIL, issue list, and export the report as JSON or Markdown.
- Batching several models? Use the batch queue below the dropzone — up to 10 files per run, per-file failure isolation, and multiple successes are saved as a ZIP.
FAQ
How much smaller will my file get?
It depends on the geometry share: mesh-heavy models shrink the most; texture-heavy models benefit less (textures are not re-encoded).
Does it affect quality?
Draco and Meshopt are lossy geometry compression; on typical models the visual difference is hard to notice. Confirm with the validation report and preview.
Draco or Meshopt?
Draco (KHR_draco_mesh_compression) usually compresses geometry hardest and is supported by three.js, model-viewer, Babylon.js and major engines. Meshopt (EXT_meshopt_compression) quantizes and reorders vertices then compresses buffer views — comparable size with much faster decode, but requires a meshopt-capable viewer. None outputs a plain GLB and strips existing compression from already-compressed inputs.
Which viewers can open it?
Draco: any loader supporting KHR_draco_mesh_compression. Meshopt: viewers with EXT_meshopt_compression support. The in-page preview decodes both with the bundled decoder so you can see the result before downloading.
How do I compress a .gltf?
Select the .gltf together with every .bin/texture it references in one drop (filenames unchanged) — resources are resolved by filename and the set is assembled into a self-contained GLB first. Missing files are named loudly in the error; .gltf with KHR_draco/basisu-compressed resources must be converted to a self-contained .glb first.
Do huge files fail?
Very large models are memory-bound in the browser and may fail; verify the flow with a smaller file first.
Is it free?
Local inspection and validation are free to try; compression is a Pro feature.
Compress or Optimize?
GLB Compress applies Draco or Meshopt geometry compression for the smallest files — the output needs a viewer that supports the extension. GLB Optimize starts from lossless clean-up (dedup, weld, resample, prune) and adds optional quantization, simplification and texture re-encoding. Clean up first, then compress, or use either on its own.
Do I need to download or install anything?
No — it runs entirely in your browser. The first compression fetches the engine once (self-hosted Draco WASM or the bundled Meshopt encoder); after that it is cached.
Is my model uploaded?
No. The model is decoded, compressed and validated locally in your browser and never sent to a server — safe for unreleased product prototypes and design assets.
Examples
- Drop in a .glb → preview on page → convert & download the Draco-compressed version + validation report
- Drop a .gltf + .bin + textures as one set → assembled into a self-contained GLB → compressed
Supported formats
Limitations
- Compresses geometry, not textures — use GLB Optimize for texture work.
- Draco output requires a Draco-capable viewer (KHR_draco_mesh_compression); Meshopt output requires a viewer with EXT_meshopt_compression support; None outputs a plain GLB with no geometry compression.
- Self-contained .glb works directly; .gltf needs the complete set dropped together (the .gltf plus every referenced .bin/texture, resolved by filename — missing files are named in the error) and is assembled into a self-contained GLB before compression. Interactive preview handles one set at a time; the batch queue handles up to 10 files per run.
- .gltf referencing KHR_draco/basisu-compressed resources is not supported for assembly (convert to a self-contained .glb first); absolute http(s) texture URLs stay remote and are not hijacked to the dropped set.
- First run fetches the compression engine (self-hosted Draco WASM or the bundled Meshopt encoder, once per browser).
- Very large files are memory-bound in the browser (see the dropzone for the per-file cap).
- Runs locally in your browser — files are never uploaded.
Privacy
Privacy first: this tool runs entirely in your browser — your input and files never leave your device, and everything is cleared when you close the page.