To reduce GLB file size, work in this order: (1) lower the resolution of the textures (the images wrapped around the surface), (2) reduce the number of polygons, and (3) compress the geometry with Draco or meshopt. Draco and similar compression only shrink the geometry, not the images, so on a character GLB that stores its colors and surface detail as images, skipping step 1 can leave the file larger than you expect.
This guide shows how to tell what is actually taking up space inside a GLB, how each of the three techniques works and what it does to the look of the model, a step-by-step route for GLBs made with Figmee, and how far you can safely go for each destination. Tool features were checked against the official documentation as of November 2026 (the Blender 5.2 LTS manual, glTF-Transform, gltfpack and model-viewer).
Note: Figmee currently offers figurine-style images created from your drawings, 3D model data (GLB / 3MF), and turntable videos of your 3D models. Ordering physical 3D prints is Coming Soon. Photos, and images that look like photos, can't be turned into 3D — Figmee works from drawings.
Why are GLB files so heavy?
A GLB's size comes mainly from two things: textures (images) and the mesh (geometry data). On a character model that keeps its colors, surface detail and material properties in images, the textures can make up a large share of the file, so look at the breakdown before choosing what to cut.
A GLB is the binary version of glTF, bundling shape, color and material into a single file (see what is a GLB file for what's inside and how to open one). Three things add to the size, and the first two account for most of it:
- Mesh: vertex positions, normals (which way each face points), UVs (where the image lands on the surface) and so on. More polygons means more data. The link between face count and weight is covered in what is polygon count.
- Textures: images for base color, surface bumps (the normal map), metalness and roughness. Doubling the width and height of an image quadruples its pixel count.
- Material and scene information: material settings and object placement are stored as text and are usually a small share. GLBs that carry animation add that on top.
The quickest way to see the breakdown in numbers is glTF-Transform's inspect command. It prints a table of the scenes, meshes, materials, textures and animations in the file, and its help text says it is meant for understanding how much of a file's size is geometry versus textures (source: glTF-Transform CLI source, inspect help, as of November 2026). On a computer with Node.js installed, run:
npm install --global @gltf-transform/cli
gltf-transform inspect model.glb
The install command is the one given on the glTF-Transform CLI page. If you'd rather not use the command line, turn on Statistics in the Blender viewport to see the triangle count, and open each texture in the Image Editor to see its resolution.
It is also worth thinking about memory, not just file size. glTF-Transform's help text notes that PNG, JPEG and WebP images must be fully decompressed in GPU memory. A 4096 × 4096 image, at 4 bytes per pixel, works out to roughly 67 MB once decompressed, which is why a texture that is only a few megabytes on disk can still make a model sluggish on a phone.
Here is how the three techniques compare:
| Technique | What gets smaller | Effect on the look | Main tools |
|---|---|---|---|
| Lower texture resolution | Images (the file, and memory while displayed) | Fine detail blurs when you zoom in | Blender's Image Editor, glTF-Transform resize |
| Reduce polygons | Geometry | Silhouette gets angular; thin parts break down first | Blender's Decimate, glTF-Transform simplify, gltfpack -si |
| Compress (Draco, meshopt) | Geometry | Barely changes | Blender's exporter, glTF-Transform draco / meshopt, gltfpack -c |
To read a compressed GLB, whatever loads it needs a decoder (the part that undoes the compression); see "When should you use compression (Draco, meshopt)?" below.
Why shrink the textures first?
Draco and meshopt compress the geometry of a GLB, not its images. When images take up most of the file, lowering texture resolution is the single most effective step, and it doesn't touch the shape at all.
glTF-Transform's help text says the same thing about Draco: it affects only geometry, and animation and textures are not compressed (source: glTF-Transform CLI source, draco help, as of November 2026). There are three ways to make textures lighter:
- Lower the resolution: halving the width and height leaves a quarter of the pixels. In Blender, Image > Resize in the Image Editor lets you set a new width and height in pixels (source: Blender 5.2 LTS Manual, "Editing Images", as of November 2026). In glTF-Transform, the
resizecommand fits PNG and JPEG textures within the maximum size you pass with--widthand--height. - Revisit format and quality: the Blender manual explains that glTF requires images to be PNG or JPEG, and that PNG is lossless and generally preferred, while JPEG may suit web use because the files are smaller. Blender's exporter lets you choose the image format (Images) and, for JPEG and WebP, the quality (Image Quality) (source: Blender 5.2 LTS Manual, "glTF 2.0", as of November 2026).
- Use a GPU-friendly format (KTX2): model-viewer's FAQ says KTX2 files are about the same size as JPEG but vastly reduce the GPU memory used (source: model-viewer FAQ, "What is KTX2?", as of November 2026). You can produce them with glTF-Transform's
etc1soruastccommands, or with gltfpack's-tcoption, but whatever loads the file must support theKHR_texture_basisuextension.
Two cautions when working on textures:
- Keep normal maps out of JPEG. JPEG's smudging can break up the shading, which is why Figmee keeps its normal maps as PNG. glTF-Transform's own example for converting textures excludes normal maps (
normalTexture) from the conversion (source: glTF-Transform, "textureCompress", as of November 2026). - Some software can't read WebP. WebP isn't one of glTF's standard image formats; it is used through an extension called
EXT_texture_webp(source: Khronos, "EXT_texture_webp", as of November 2026). Figmee used WebP textures in its GLBs in the past, but because some software can't read WebP, GLBs made on or after October 25, 2026 use JPEG for color and PNG for the normal map. Only choose WebP once you've confirmed that the viewer you're targeting supports it — that way the file won't cause trouble wherever it ends up.
How do you reduce the polygon count?
Use Blender's Decimate modifier, glTF-Transform's simplify command, or gltfpack's -si option. The further you go, the more angular the silhouette becomes, and thin parts such as hair tips and fingers break down first — so lower it gradually while viewing the model at the size it will actually be shown.
Here is the Blender route (about 10–20 minutes):
- Add Decimate (1 minute): select the model and choose Generate > Decimate from the Add Modifier menu.
- Pick a mode (1 minute): there are three. Collapse merges vertices progressively while taking the shape into account, Un-Subdivide is the reverse of subdividing and works best on grid-like topology, and Planar reduces detail on forms made mostly of flat surfaces (source: Blender 5.2 LTS Manual, "Decimate Modifier", as of November 2026). For meshes made of many small triangles, like AI-generated models, Collapse is usually the right fit.
- Lower the Ratio (5–15 minutes): Ratio is the share of faces to keep. At 1.0 nothing changes; at 0.5 roughly half remain. Compare the face count shown in the modifier with how the model looks, and for symmetrical characters try Symmetry, which keeps the mesh symmetrical along one axis.
- Check it with textures on (2 minutes): decimating can shift colors along the UV seams. Switch to Material Preview and zoom in on the face, hair tips and hands.
- Apply (a few seconds): once you're happy, apply the modifier.
From the command line, glTF-Transform's simplify uses meshoptimizer to reduce triangles and vertices: it aims for the target ratio while keeping error low, and stops before reaching the ratio if the error limit would be exceeded. The documentation recommends running weld (which merges identical vertices) first for best results (source: glTF-Transform, "simplify", as of November 2026). With gltfpack, pass something like -si 0.5 to set the share of triangles to keep, between 0 and 1 (source: gltfpack README, as of November 2026).
Remeshing rebuilds the faces from scratch and throws away the UVs, so the colors no longer line up with the surface. If your goal is a lighter file, decimate instead. The difference is explained in Blender remesh and texture editing basics, and how to think about high versus low polygon counts is covered in low poly vs high poly.
When should you use compression (Draco, meshopt)?
Draco and meshopt shrink the geometry of a GLB, and they belong at the very end, once you know where the file is going. If the viewer supports them, they cut the size with barely any visible change; if it doesn't, the file won't open at all.
| Compression | What it shrinks | What the viewer needs | Main tools |
|---|---|---|---|
Draco (KHR_draco_mesh_compression) | Triangle meshes | A Draco decoder. model-viewer loads one from a Google CDN by default | Blender's exporter, glTF-Transform draco |
meshopt (EXT_meshopt_compression) | Meshes, morph targets, animation | A meshopt decoder. Not enabled by default in model-viewer | Blender's exporter, glTF-Transform meshopt, gltfpack -c |
Sources for the table (all as of November 2026): Blender 5.2 LTS's glTF exporter has a Draco group (Data - Draco Compression, with a compression level and quantization settings for position, normals, texture coordinates and more) and a meshopt group (Data - Meshopt Compression) (Blender 5.2 LTS Manual, "glTF 2.0"). model-viewer loads its Draco decoder from a Google CDN by default, while its meshopt decoder is not enabled by default (model-viewer documentation). The gltfpack README says files compressed with -c need loaders that support EXT_meshopt_compression, and that three.js supports it from r122 when you call GLTFLoader.setMeshoptDecoder (gltfpack README).
Choose based on where the file is going:
- Your own site with model-viewer: Draco is the easy choice, since it works without extra setup.
- A page you build yourself with three.js or similar: either works, as long as you can set the decoder on your loader.
- Sending the file to someone, or editing it in other software: it's safer not to compress. You can't assume their software has a decoder.
glTF-Transform also has an all-in-one optimize command. The official example adds --compress draco --texture-compress webp, but the source shows that with no options it simplifies the mesh (--simplify is on), compresses with meshopt, and caps textures at 2048 pixels (source: glTF-Transform CLI source, as of November 2026). Check those defaults before you run it: add --simplify false if the shape must not change, and --compress draco if the file is headed for model-viewer.
How do you slim down a GLB made with Figmee?
A Figmee GLB bundles shape and color into one file, and GLBs made on or after October 25, 2026 store color textures as JPEG and normal maps as PNG. Since the colors are already JPEG, the levers left are lowering resolution, reducing polygons and compressing. Face counts and texture resolutions vary from work to work, so check the numbers in your own file before deciding how much to cut.
- Save the GLB (1 minute): on the work page, select "Save" and choose "3D model (GLB)". Saving doesn't use any extra tokens. Keep the saved file untouched and work on a copy.
- Import it into Blender and check the breakdown (5 minutes): import with File > Import > glTF 2.0, then check the triangle count in Statistics and the resolution of the color and normal-map images in the Image Editor. The import steps are covered in detail in how to bring a Figmee GLB into Blender.
- Shrink the textures (5–10 minutes): resize the color and normal-map images to suit the destination (for example, half the width and height). Keep the normal map as PNG.
- Reduce polygons (10–20 minutes): lower the Decimate Ratio a little at a time and stop while the face, hair tips and hands still hold up at the size they'll be shown.
- Export and compare (5 minutes): export a GLB with File > Export > glTF 2.0, turning on Draco compression if the destination supports it. Check that the new file is actually smaller than the original, and that colors and shape look right in the target viewer.
The same steps from the command line look like this. The numbers are examples; pick values smaller than the original resolution. GLBs made before October 25, 2026 store their color textures as WebP, and resize only shrinks PNG and JPEG textures, so it won't shrink those colors. For those files, use the Blender steps instead.
gltf-transform resize character.glb step1.glb --width 1024 --height 1024
gltf-transform weld step1.glb step2.glb
gltf-transform simplify step2.glb step3.glb --ratio 0.5
gltf-transform draco step3.glb character-small.glb
If you only want to show the model inside Figmee, there's no need to slim it down: the share page lets people rotate the 3D model in Figmee's own viewer (see how to share a 3D model online). The extra work only matters when you take the model to your own site or a game. If you don't have a 3D model yet, Figmee turns a single drawing into a figurine-style image and then a 3D model (a 3D model costs 5 tokens, and your first one per account is free). For which drawings work well in 3D, see the complete guide to turning an illustration into 3D.
How far can you go?
Decide by eye, not by numbers. Show the model at the same size it will appear on the real page or screen, and when the face, hair tips or hands start to break down, go back one step. Here's how to think about each destination:
| Destination | What matters | How to approach it |
|---|---|---|
| Your own website (model-viewer, etc.) | Loading time, memory on phones | Shrink textures first, then finish with Draco |
| Game engine | How many models are on screen at once, frame cost | Depends on whether one model fills the screen or many stand side by side. Keep the original GLB too |
| Sending to someone or via messaging | The service's file size limit, the recipient's software | Limits vary by service, so check the destination's guidelines. Safer not to compress |
| 3D printing | Fine detail in the shape | Don't slim it down. Use 3MF rather than GLB (physical 3D print ordering through Figmee is Coming Soon) |
For AR on phones, Google publishes recommendations for Android's Scene Viewer: files up to 10 MB, up to 100,000 triangles (30,000 to 50,000 is ideal), and textures up to 2048 × 2048 (source: Google ARCore, "Scene Viewer", as of November 2026). These figures target one specific viewer, so they aren't the right answer everywhere, but they make a useful yardstick for the web. The same page lists only a few supported extensions, and neither Draco nor KTX2 is among them, so test a GLB meant for AR in its uncompressed form.
There are also cases where you shouldn't cut too much. For a portfolio piece where you want visitors to zoom right into the face, or a character whose fine accessories are the point, it is probably better to trim textures and polygons only lightly and cover the loading time with a poster image (an image shown until the model loads), so the first impression doesn't suffer.
FAQ
Does reducing GLB size lower the quality?
Lowering texture resolution and polygon count does lose fine detail when viewed up close. Draco and meshopt change how the geometry is stored, and the visible change is usually small, but the viewer needs a decoder. As a rule of thumb, cut until you can no longer see a difference at the size the model will be shown.
My Draco-compressed GLB won't open in other software.
To read a Draco-compressed GLB, the software or viewer needs a Draco decoder. model-viewer loads one by default, but software without support can't open the file. Keep the uncompressed GLB and give that version to software that can't read Draco.
Can I put a Figmee GLB on a website as it is?
Yes. GLBs made on or after October 25, 2026 use standard formats for their textures (JPEG for color, PNG for the normal map), so glTF-compatible viewers can read them. If loading feels slow, slim the file down in the order described here: textures, polygons, then compression. How to place it on a page is covered in how to embed a GLB on your website.
Summary
To reduce GLB file size, start by checking with inspect or Blender whether geometry or images are taking up the space. Then lower texture resolution, reduce polygons, and compress with Draco or meshopt to suit the destination. Keep normal maps out of JPEG, use WebP only when the destination supports it, and always keep the GLB from before compression. How far to go comes down to cutting until just before the model starts to break down at the size it will actually be shown.
If you'd like to try this on a 3D version of your own character, make a 3D model from your drawing in Figmee, save the GLB, and slim it down with the steps above.




