Bring your GLB
One self-contained model, with its textures embedded. Inspect it from every angle.
THE GLB OPTIMIZATION TOOL
Give your 3D models a lighter footprint.
Optimize with gltfpack. Inspect the difference. Ship it.
A familiar engine.
A simpler workflow.
Prioritizes the target triangle count over quality and ignores the error limit. May visibly change silhouettes and details. Off by default.
Applies only below 100% triangle retention. Lower error limits and locked borders may prevent reaching the target triangle count.
Disabling quantization usually increases file size. Other optimization still applies; this is not a lossless mode.
Lower values trade precision for size and can visibly distort the model. Defaults: position 14, UV 12, normal 8, color 8 bits. Tangents use at most 8 bits.
The sampling rate affects animations only. Lower rates may reduce file size but make motion less smooth. Select Do not resample to preserve source timing. Other animation optimization still applies.
Scales texture dimensions when converting to KTX2 or WebP. The maximum texture size also applies. Smaller textures can lose detail.
Only applies to KTX2. UASTC offers higher quality but usually much larger files.
Applies when converting textures. Quality scales differ by codec.
REPRODUCIBLE BY DESIGN
SMALLER ASSETS. FEWER STEPS.
Real gltfpack optimization, with room to see what changes.
One self-contained model, with its textures embedded. Inspect it from every angle.
Keep geometry, target fewer triangles, or choose a texture codec. You control the trade-offs.
Compare the result and its loading requirements. Download when it works for your project.
01 / FILE SIZE
If the mesh has many triangles, try lowering the triangle retention slightly. Check curved edges, thin parts and holes for changes. If the file is still large, reducing more triangles may not help much; compare texture settings next.
Try a smaller texture size and compare the result up close. Check text, patterns and surface detail. Keep more resolution for models users can zoom into; smaller textures may be enough for models shown at a fixed distance.
After lowering the sampling rate, play the whole animation. Look for jumps during fast movement, sliding feet and a pause at the loop boundary. If these appear, raise the sampling rate and compare again.
02 / SETTINGS
If your viewer supports Meshopt, try the Smaller file preset. Then test on a phone over a typical mobile connection. Check how long the model takes to appear and whether it rotates smoothly; a smaller download alone does not tell you how it will perform.
Start with the Conservative preset and use the lighting from your product page. Check small lettering, edge shapes, transparent parts and reflections. Change one setting at a time so you can trace any visible difference.
Test animation playback, object selection and material switching in your application. If your code uses node names or extras, leave their preservation options enabled and check those lookups after optimization.
03 / CHECKS
Compare the original and optimized model from the same angle and distance, then inspect a few close-ups. Keep the original file and use it for each new attempt so changes do not accumulate across repeated optimizations.
The final triangle count may be above your target because of the error limit or mesh constraints. Read the result note before raising the error limit or enabling aggressive simplification, and check the shape again after either change.
Check the output extensions listed below the command. Your viewer needs the corresponding support for Meshopt, KTX2 or WebP. Test loading, materials and animations there before replacing the original file.
A LITTLE CONTEXT GOES A LONG WAY
A practical walkthrough, from your first upload to a reproducible command.
02 / CHECK COMPATIBILITYMeshopt, KTX2, WebP and the details your destination viewer needs.
03 / SOLVE A PROBLEMRejected inputs, larger files, missing textures and expired results.
Find out whether geometry or textures are making your GLB large, compare measured results, and choose which setting to change first.
Reduce GLB triangle counts with retention targets, error limits and border locking. Compare ordinary and aggressive simplification on a measured sample.
Choose KTX2 or WebP for GLB textures, adjust dimensions and quality, and compare ETC1S, UASTC and WebP on the same generated texture.
Load Meshopt-compressed GLB and KTX2 textures in Three.js with GLTFLoader, MeshoptDecoder and KTX2Loader. Includes an npm example and loading checks.
Measured CesiumMan results: compare Meshopt compression, 15 FPS animation and 50% triangle retention, with commands and matching renders.
Diagnose a GLB that grew after optimization: removed compression, UASTC textures, precision settings and small-file overhead.
* Triangle counts sum each mesh primitive once, excluding repeated scene instances. Mesh merging can change this count without simplification.
Results may be larger. Nodes, animation sampling and precision can change; custom extensions and attributes may be discarded. Draco input is unsupported. Preview success does not guarantee compatibility with every application. Processing limit: 120 seconds.