Note / Real-time 3D

How big should a GLB file be for a website?

Most answers to this stop at "it depends" without saying what it depends on. Here are four models running live in a browser, measured, and the thing that actually predicts their size.

By Mitchell Wierenga / Masterwork Studio
Measurements: 4 August 2026 / Guidance updated: 29 September 2026
Short answer

Under 2 MB is a useful starting budget for one marketing-page model, with smaller budgets when several load together. These are studio planning targets, not standards or speed guarantees. Measure geometry, texture bytes and loading behavior against the devices and connections your audience uses.

The four models

These four models were measured from the deployed site on 4 August 2026. The table preserves that dated snapshot; it is not a fresh benchmark of today's loading speed. Counts came from the files' glTF accessors and image arrays.

Measured 4 August 2026 from the deployed files on masterworkstudio.com.
ModelTrianglesTexturesShipped sizeDraco
DNA strand179,2140461 KByes
Turbofan engine86,55424 WebP1,253 KByes
Rover48,2621 PNG312 KByes
Logo1,048060 KBno

Read those numbers again

The relationship is the opposite of what most people expect:

In this sample, triangle count alone does not predict the download. The engine has fewer triangles than the DNA strand but more texture images and a larger file.

Inspect texture bytes as well as geometry. Image dimensions, format and content affect their size; texture count alone is not a universal predictor. These four examples show why reducing triangles first can miss a substantial part of the download.

For scale: a single PNG on this site's atlas is 878 KB — larger than the whole rover model, geometry and texture together.

So what should you budget?

These are working numbers, not standards. They are where we set the line for our own work, and the reasoning is stated so you can move it for your case.

SituationTargetWhy
One hero model, desktop and mobile< 2 MBA starting transfer budget; verify loading on target connections
Several models on one page< 500 KB eachThey compete for the same connection
Newly fetched configurator component< 300 KB eachBudget incremental downloads; cached parts or material changes may need no fetch
Character with morph targetsbudget separatelySee below — the usual rules do not hold

Triangle count affects geometry size and rendering workload. Materials, draw calls, texture memory, decoding and device capability also matter. A file-size target cannot guarantee a frame rate or a particular loading time.

The loading plan changes the budget

A catalog with 500 products should not download 500 models when it opens. Show the catalog first and load the selected product's 3D view when needed. If many products share a base and accessories, reuse those assets and fetch only missing parts when options change.

That can reduce duplicate downloads and maintenance, but it is not automatically faster than loading one optimized GLB. More requests, assembly work and separate materials can add costs. Compare first load, option switching and memory use under the same conditions.

Read the architecture guide: Does a 500-product catalog need 500 separate 3D models?

Morph targets need their own checks

A character with facial blend shapes has a different data budget from a static prop. Check the base mesh, textures, animation and morph data separately rather than applying a prop's file-size target to the whole character.

Our Character Creator size breakdown records earlier pipeline observations. Its compression observations should be read as specific to those tested exports, not a blanket limitation of Meshopt or quantization.

What to do, in order

  1. Measure before you optimize. Look at the split between geometry and textures first. Most people start by decimating a mesh that was never the problem.
  2. Delete textures that are not textures. A metallic or roughness map that is one flat value is a scalar factor wearing a costume. On one job that removed ten image files with no visual change at all.
  3. Choose textures for the target viewer. Compare resolution and visual quality, then choose supported formats. WebP can reduce transfer size; KTX2/Basis can also reduce GPU texture memory on supported hardware. They address different parts of the workload.
  4. Test geometry compression. Compare Draco or Meshopt with the required loader support, decoding cost and animation behavior. Preserve a working source export.
  5. Re-measure. Optimization without a before and after number is guessing.

How these were measured

Worth stating, because "3D file size" numbers on the web are usually quoted from memory or from a modelling package, and both mislead.

Byte sizes are what the server actually sends, taken from the HTTP response, not what the file looks like on a local disk before compression. Triangle counts were read directly out of each GLB's JSON chunk by summing the index accessor counts across every mesh primitive and dividing by three.

One trap that caught us while writing this. Blender reports faces; the web cares about triangles. Our own build notes recorded the turbofan at 46,073 faces, but it ships 86,554 triangles, because quads become two triangles on export. Quoting the face count would have understated the model by nearly half. If you are comparing a number from your modelling package against a web budget, check which unit you are holding.

Textures were counted from the glTF images array, so they are the images actually packed into the file rather than what exists in the source project.

Your models / Your website

Need a model prepared for the browser?

Share a reference link, the model format, your target devices and what the viewer needs to do. Masterwork Studio can discuss asset preparation, loading strategy and integration as part of a scoped 3D web project.

Discuss your model or catalog

Explore 3D web development services

See the engine from the measurements in action: open the interactive turbofan demo, or read its project breakdown.

Next in the series: shared bases, modular parts and a 500-product catalog.