Skip to main content
Vecaria

GLB & glTF Compressor

Local

Compress 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 file

Draco-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.

The model preview appears here after you drop a file — nothing is downloaded until you click the convert button.

Batch queue

Drag files here, or click to browse

Supports GLB

Choose file

Up 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

  1. 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.
  2. Pick the compression codec: Draco (default), Meshopt, or None (plain GLB).
  3. Click Convert & download — the compressed model (name-draco.glb / name-meshopt.glb / name-plain.glb) saves to your downloads.
  4. Check the validation panel: PASS/FAIL, issue list, and export the report as JSON or Markdown.
  5. 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

GLBglTF

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.