BaseToolbox LogoBaseToolbox
Blog

© 2025 BaseToolbox. All rights reserved.

Privacy PolicyAboutContact Us

Draco vs meshopt Compression: Which One Should You Use for glTF?

Published on June 25, 2026

If you are compressing a glTF or GLB model, you will quickly meet two names: Draco and meshopt. Both can reduce download size, both require loader support, and both are useful. They are just optimized for different trade-offs.

Use this practical rule:

  • Choose Draco when geometry size is the main problem and your viewer already supports Draco decoding.
  • Choose meshopt when you want a web-friendly balance of compression, fast decoding, and support for more buffer data such as animation.
  • Choose no extension compression for small models when decoder setup would add more complexity than the file-size savings justify.

What Draco Does

Draco is an open-source library from Google for compressing and decompressing 3D geometric meshes and point clouds. In glTF, Draco compression is represented by the KHR_draco_mesh_compression extension. The Khronos extension describes using Draco to support streaming compressed geometry data instead of raw data.

Draco is often a good fit for:

  • Mesh-heavy models
  • Scanned objects
  • Dense geometry
  • Product models where textures are already optimized
  • Viewers where Draco loader setup is already handled

The trade-off is decode setup and runtime cost. You need a Draco decoder in the viewer, and decoding takes work before the model can render.

What meshopt Does

meshopt compression is represented in glTF with EXT_meshopt_compression. The Khronos extension describes it as a generic option for compressing binary data tailored to common glTF buffer data. That can include geometry, animation data, morph targets, and other numeric data stored in buffer views.

meshopt is often a good fit for:

  • Web viewers
  • Animated models
  • Models that need fast runtime decoding
  • General glTF optimization pipelines
  • Cases where you also care about GPU-friendly mesh layout

Tools such as gltfpack use meshoptimizer techniques to reduce download size and improve loading and rendering behavior.

Comparison Table

| Question | Draco | meshopt | |---|---|---| | Best at | Geometry compression | Web-friendly buffer compression and optimization | | glTF extension | KHR_draco_mesh_compression | EXT_meshopt_compression | | Common use | Mesh-heavy GLB files | General web GLB optimization | | Decoder required | Yes | Yes | | Animation data | Not the main focus | Can apply to buffer data such as animation | | Practical default | Good when geometry dominates | Good general web default |

Do You Still Need Texture Optimization?

Yes. Draco and meshopt do not magically fix oversized textures. If a GLB is large because it contains several 4K images, resize or recompress textures first.

This is the most common reason compression "does not work": the model was not geometry-heavy in the first place.

Viewer Compatibility Matters More Than Theory

The best compression method is the one your target runtime loads reliably.

Before choosing, check:

  • Does your viewer support the extension?
  • Do you need to configure a decoder manually?
  • Does the platform strip or reject compressed extensions?
  • Are you targeting older mobile devices?
  • Can your CDN cache the decoder files?

If the model is for a third-party platform, test an upload before converting your entire asset library.

Quick Recommendation

Start with meshopt for general web GLB optimization when your viewer supports it. Use Draco when dense geometry is the main source of file size and your loading stack is ready for Draco decoding. In both cases, optimize textures and unused data first, then verify visual quality and runtime loading.

Practical Workflow

Measure the model before optimizing it. Record file size, texture sizes, triangle count, animation needs, and the target viewer. Then reduce the largest cost first: oversized textures, unused data, and duplicate geometry often matter more than the final compression switch.

After export, test the GLB or glTF in the same viewer, browser, or engine where it will ship. A compression setting that looks excellent in one viewer can fail if the runtime does not load the required decoder.

What to Double-Check

| Check | Why it matters | |---|---| | Decoder support | Draco and meshopt require compatible loaders. | | Texture budget | Textures often dominate web 3D payload size. | | Animation | Some simplification workflows can damage skinned or animated models. | | Visual diff | Compare silhouette, normals, UVs, and materials after compression. |

FAQ

Should I optimize geometry or textures first?

Check the size breakdown first. Many web GLB files are texture-heavy, so resizing or recompressing textures may produce a bigger win than mesh compression alone.

Ready to try it yourself?

Put what you have learned into practice with our free online tool.

Try 3D Compression