Tutorial
How to Reduce GLB File Size in Blender (Export Settings, Decimate & Draco)
· 8 min read

To reduce GLB file size in Blender, lower the polygon count with a Decimate modifier, shrink oversized textures, and export with File > Export > glTF 2.0 using glTF Binary, JPEG or WebP images and Draco compression. Those three changes cover the things that make a GLB big: geometry, textures and animation.
This tutorial covers each step and every export setting that affects size, for Blender 4.2 through 5.2 LTS (where a name changed between versions, both are given).
Before you start: see what you're exporting
Turn on Statistics in the Viewport Overlays dropdown (top right of the 3D Viewport). It shows object, vertex and face counts, which depend on what is selected. A model with millions of faces, or a single prop with hundreds of thousands, is where Decimate will help most.
Expect the exported file to have more vertices than Blender reports. The Blender manual notes that discontinuous UVs and flat-shaded edges are split into separate vertices on export, so UV seams and sharp edges add to the count. After exporting, drop the GLB into our free glTF validator to see the real vertex and triangle counts, draw calls and extensions used.
Also note your texture resolutions: on most textured models the images, not the mesh, make up the bulk of the file (here's how to check what makes a GLB big).
Step 1: reduce polygon count with the Decimate modifier
Select the mesh, open the Modifier properties (the wrench tab), and choose Add Modifier > Generate > Decimate. The modifier shows the resulting face count as you adjust it. It has three modes:
- Collapse (the default) merges vertices progressively while trying to keep the shape. Ratio is the fraction of faces to keep: 0.5 keeps about half, 0.1 about a tenth. Use a Vertex Group to protect areas such as a face or logo, and Symmetry to keep both sides matching.
- Un-Subdivide reverses subdivision on grid-like topology. Two iterations undo one level of subdivision, so use even numbers.
- Planar dissolves faces on flat areas below an Angle Limit. It suits hard-surface, architectural and CAD models. Delimit options (Material, Seam, Sharp, UVs) stop it from dissolving edges you need.
Decimate works best on meshes that are denser than they need to be: sculpts, 3D scans, photogrammetry, CAD imports and anything with an applied Subdivision Surface. It does little good on a carefully modeled low-poly mesh, where every vertex defines the shape.
Lower the ratio until the silhouette or shading starts to break, then back off a little. Check in wireframe and with textures on, looking for stretching along UV seams. When you're happy, apply it from the dropdown arrow in the modifier header (Apply), or leave it live and let the exporter apply it (see Apply Modifiers below).
Step 2: shrink your textures
A 4096×4096 texture has four times the pixels of a 2048×2048 one and 16 times those of a 1024×1024. For most web and AR viewers, 2K is plenty for hero objects and 1K or less for small parts.
To resize inside Blender:
- Open the texture in the Image Editor.
- Choose Image > Resize and set Size X and Y (for example, from 4096 to 2048).
- Save it with Image > Save As under a new name, so you keep the full-resolution original.
Or resize the files in any image editor and relink them. The glTF exporter can't resize textures itself, so do it beforehand, or afterwards with a GLB compressor.
Step 3: clean up the scene
- Delete what you don't ship: hidden reference meshes, high-poly bake sources, cameras, lights and helper objects. By default the exporter includes every object in the scene.
- Or limit the export: in the export dialog's Include panel, tick Selected Objects or Visible Objects under Limit to.
- Purge unused data: in Blender 4.2 and later, File > Clean Up > Purge Unused Data opens a dialog that removes unused data-blocks. This mostly tidies the .blend file; the exporter already skips unused images and textures unless you enable Unused images or Unused textures.
Step 4: choose the right glTF export settings
Open File > Export > glTF 2.0 (.glb/.gltf). These are the settings that affect file size:
| Panel | Setting | Recommended |
|---|---|---|
| Top of the dialog | Format | glTF Binary (.glb) |
| Include | Limit to | Selected Objects or Visible Objects |
| Data > Mesh | Apply Modifiers | On, unless you need shape keys |
| Data > Mesh | UVs / Normals / Tangents | UVs on if textured, Normals on, Tangents off unless needed |
| Data > Material | Images | JPEG or WebP |
| Data > Material | Image Quality | 75 (default) to 90 |
| Data > Shape Keys | Shape Keys | Off if you don't use morph targets |
| Data > Armature | Export Deformation Bones Only | On, unless your app needs the control bones |
| Data > Compression (Draco Compression in 5.2) | Draco | On, level 6, default quantization |
| Animation | Animation | Off if the model isn't animated |
If you export often, tick Remember Export Settings so they are stored in the .blend file.
Apply Modifiers and shape keys
Apply Modifiers exports the mesh after modifiers such as Decimate and Mirror. Blender warns that it prevents exporting shape keys, so leave it off on models that rely on them. If you don't need shape keys at all, untick Data > Shape Keys; each one stores its own vertex offsets, plus normals by default.
Images: Automatic, JPEG, WebP or None
- Automatic (default) keeps PNGs as PNG and JPEGs as JPEG, so large PNG textures stay large.
- JPEG saves textures as JPEG, except images that need alpha, which stay PNG.
- WebP (Blender 4.0 and later) saves every texture as WebP without a PNG or JPEG fallback, usually the smallest option. The viewer must support
EXT_texture_webp; three.js does. - None exports materials without textures.
Image Quality (default 75) sets the JPEG or WebP quality. Avoid Create WebP unless you need a fallback: it adds WebP copies alongside the original textures, so the GLB gets bigger, not smaller.
Draco compression settings
Tick the checkbox on the Compression panel (called Draco Compression in Blender 5.2) under Data. The settings:
- Compression Level: 0 is fastest, 6 is the most compression and the default. Higher values aren't supported.
- Quantization: bits per value for Position (default 14), Normal (10), Tex Coord (12), Color (10) and Generic (12). Fewer bits give a smaller file but less precision; 0 turns quantization off. If surfaces look stepped or parts no longer meet cleanly, raise Position to 16.
Draco compresses the base mesh only. Shape key data and animation are written uncompressed. Your viewer also needs a Draco decoder; in three.js that means adding a DRACOLoader (see how to load a GLB in three.js). Our Draco compression guide covers how much it saves.
Blender 5.2 LTS also adds a Meshopt Compression panel, with a choice between the EXT_meshopt_compression and KHR_meshopt_compression extensions. The EXT version is the more widely supported of the two. Enable Draco or Meshopt, not both; our Draco vs Meshopt comparison helps you choose.
Animation settings that affect size
- Animation (panel checkbox): untick it if the model doesn't need to move.
- Sampling Animations > Sampling Rate: how often, in frames, animated values are evaluated. The default of 1 writes a key every frame; 2 halves the keyframes. Check fast motions for jitter.
- Optimize Animations > Optimize Animation Size: on by default; removes duplicate keyframes. Leave it on.
- Export Deformation Bones Only (Data > Armature): drops control and IK bones and bakes their effect into the deforming bones. It requires sampling to be on.
- Limit to Playback Range (Animation > Rest & Ranges): clips animations to the timeline's playback range.
Remove actions you don't need, too. In the default Actions mode, the exporter includes each object's active action plus every action stashed on its NLA tracks.
Step 5: check the exported file
Load the GLB in the glTF validator. It should show no errors, the vertex and triangle counts you expect, and KHR_draco_mesh_compression among the extensions if you enabled Draco. Then test it in your target viewer, where missing decoder support shows up.
For repeated exports, the same settings can be scripted with Blender's Python API:
import bpy
bpy.ops.export_scene.gltf(
filepath="/path/to/model.glb",
export_format='GLB',
use_selection=True,
export_apply=True,
export_image_format='WEBP',
export_image_quality=80,
export_draco_mesh_compression_enable=True,
export_draco_mesh_compression_level=6,
)When Blender's export isn't enough
Blender's exporter can't resize textures, write AVIF or KTX2 textures, or simplify meshes at export time. For that, post-process the GLB. Our GLB compressor resizes textures, converts them to WebP or AVIF, applies Draco, and runs weld, duplicate-vertex removal and simplification passes in one upload, with batch uploads for many files. gltf-transform and gltfpack do the same on the command line. Our complete guide to reducing GLB file size compares the options.
If you plan to post-process, export from Blender without Draco and let the last tool apply it. Compressing geometry twice quantizes it twice, and some tools decode Draco and write the file back uncompressed if you don't compress it again.
FAQ
How do I reduce polygon count in Blender?
Add a Decimate modifier (Add Modifier > Generate > Decimate), keep it in Collapse mode and lower the Ratio until just before the shape starts to break. Apply it, or let the glTF exporter apply it with Apply Modifiers.
Does Blender's glTF exporter support Draco compression?
Yes, under Data > Compression in the glTF 2.0 export dialog (Data > Draco Compression in Blender 5.2). The default level and quantization bits are a good starting point.
Should I export textures as JPEG or WebP?
WebP is usually smaller, and JPEG works in more places. Use WebP if your viewer supports EXT_texture_webp (three.js does); otherwise pick JPEG, which keeps textures with alpha as PNG.
Why is my GLB bigger than expected?
The usual causes are 4K PNG textures exported as-is (Images set to Automatic), a Subdivision Surface modifier baked in by Apply Modifiers, hidden objects included in the export, and animation sampled on every frame.
What Decimate ratio should I use?
There's no universal value. Start at 0.5, check the model up close, then go lower. Dense scans and sculpts often survive much lower ratios than hand-modeled meshes.


