GLB Compressor

Shrink GLB and glTF files for the web. Compress the geometry with meshopt or Draco, simplify the mesh and resize textures, then compare before and after.

Loading 3D preview
Drag to rotate
Geometry compression
Texture format
Max texture size

Compressing

Compressed in your browser. Files are never uploaded.

Next steps

After you compress

Check the result, or make a GLB from another format first.

How it works

How to compress a GLB file

  1. 1

    Open a GLB

    Drop a .glb, or a .gltf with embedded data. The original file is never changed.

  2. 2

    Choose the savings

    Pick meshopt or Draco for the geometry, then optionally simplify the mesh and shrink the textures.

  3. 3

    Compare and download

    Check size, triangles and textures before and after, flip the preview, then download the new GLB.

Example

Same model, a fraction of the size

The sample globe with the default settings: Draco geometry and WebP textures. Sizes are measured by this tool in the browser.

3D preview of the original textured globe sample
Original GLB, 2.71 MB41,536 triangles and three PNG textures (1.54 MB), 3D preview on this site
3D preview of the textured globe after compression
Compressed GLB, 252 KB91% smaller: same triangles, Draco geometry, WebP textures (170 KB), 3D preview
Features

What this GLB compressor does

The standard glTF compression methods, run in your browser with open source code.

Meshopt or Draco

Geometry is packed with EXT_meshopt_compression or KHR_draco_mesh_compression, the two standard glTF compression extensions. Draco also quantizes positions; meshopt keeps them at full precision.

Mesh simplification

Aims for 75, 50 or 25 percent of the triangles with the meshoptimizer simplifier, and stops early rather than distort the shape.

Smaller textures

Textures are resized to 2048, 1024 or 512 pixels and re-encoded as WebP or JPEG. Transparent textures stay PNG when you pick JPEG.

Before and after

File size, triangles and texture data side by side, with a preview you can flip between the original and the result.

Private by design

Compression runs in your browser with WebAssembly. The model is never uploaded, so client and unreleased work stays with you.

Clear requirements

The result lists the extensions a viewer must support, such as EXT_meshopt_compression or EXT_texture_webp, so you know where it will open.

What changes

What compression changes

The model keeps its structure and size. It trades a little precision, and optionally detail, for a smaller file.

Kept

  • Scene hierarchy, node names and transforms
  • Materials, colors and PBR settings
  • UV maps, so textures line up as before
  • Animation, skins and morph targets
  • Real size: the model opens at the same dimensions

Changed

  • Normals and UVs stored with fewer bits, plus positions with Draco, a loss you rarely see
  • Textures resized and re-encoded with lossy WebP or JPEG when you choose
  • Fewer triangles when you simplify, so fine detail softens
  • Unused data, duplicate textures and repeated vertices removed
  • Viewers must support the compression extensions to open it
Guide

GLB compression guide

Which method to pick, where the result opens, and when to simplify or shrink textures.

Meshopt or Draco?

Both shrink geometry only. Draco, from Google, usually gives the smallest meshes. Meshopt, from the meshoptimizer project, decodes faster, also packs animation and morph targets, and its output squeezes further when a server gzips it.

These are the sizes this tool produced for our two samples. Textures are kept as they are in every row except the last.

  • Original

    Rubber duck (no textures)
    854 KB
    Textured globe
    2.71 MB
  • Meshopt

    Rubber duck (no textures)
    212 KB, 75% less
    Textured globe
    1.79 MB, 34% less
  • Draco

    Rubber duck (no textures)
    90 KB, 90% less
    Textured globe
    1.62 MB, 40% less
  • Draco, WebP 1024 px

    Rubber duck (no textures)
    90 KB, 90% less
    Textured globe
    194 KB, 93% less
Which viewers and engines open the result

A compressed GLB marks its extensions as required, so an app without support refuses the file instead of showing it broken. The web viewers below decode all three; game engines and desktop apps vary, so check their documentation.

If an app cannot open the result, set geometry to None and textures to Keep. You still get the cleanup (duplicates and unused data removed) with a GLB any glTF app reads.

  • three.js

    Draco
    Yes, with DRACOLoader
    Meshopt
    Yes, with the meshopt decoder
    WebP textures
    Yes
  • Babylon.js

    Draco
    Yes
    Meshopt
    Yes
    WebP textures
    Yes
  • <model-viewer>

    Draco
    Yes
    Meshopt
    Yes
    WebP textures
    Yes
  • ImgToSTL viewers

    Draco
    Yes
    Meshopt
    Yes
    WebP textures
    Yes
  • Blender glTF importer

    Draco
    Yes
    Meshopt
    No
    WebP textures
    Recent versions
When to simplify the mesh

Scans, photogrammetry and AI generated models often carry far more triangles than a web page or AR view can show. Simplifying them is the biggest saving after textures, and phones render the result faster.

Skip it for low poly models, CAD parts with crisp edges and anything you plan to 3D print in fine detail. Turn on wireframe and flip between Original and Compressed to see what changed. The simplifier stops early when going further would bend the shape by more than about one percent of the model's size.

Texture size and format

In most textured GLBs the images, not the triangles, take most of the space. 2048 pixels suits close-up product views; 1024 is usually plenty on a phone, and halving the size cuts the pixel count by four.

WebP is usually the smallest and keeps transparency, but needs EXT_texture_webp support. JPEG opens everywhere and has no alpha, so transparent textures stay PNG. Both are lossy, which can add faint banding to normal maps. GPU formats such as KTX2 are left as they are.

Compression and 3D printing

Slicers do not read GLB, and printing gains nothing from a smaller file. Compress for the web and AR, and convert the original model to STL or 3MF for printing.

FAQ

GLB compressor questions

Answers about methods, compatibility, privacy and results.

How do I compress a GLB file?
Drop it on this page, choose meshopt or Draco and a texture size, then download. The compressed GLB is built in your browser, usually in a few seconds.
Will the compressed GLB open everywhere?
Only in apps that support the extensions it uses. three.js, Babylon.js and model-viewer read meshopt, Draco and WebP. If an app refuses the file, set geometry to None and textures to Keep.
Is meshopt or Draco smaller?
Draco usually makes smaller geometry, while meshopt decodes faster and also compresses animation. Try both; the tool shows the size of each result.
Is my model uploaded?
No. Compression runs in your browser and the file never leaves your device.
Why did my file barely shrink?
Most of its size is probably textures, so pick WebP and a smaller max texture size. A file that already uses Draco or meshopt has little geometry left to gain.
Can I compress a .gltf with separate files?
Not directly. Export it as a .glb or as a .gltf with embedded data first, then compress that.