— Free tool · no sign-up

Free GLB optimizer. Compress GLB files in your browser.

Drop a GLB, glTF, STL or OBJ file and get an optimized .glb back, with a report on what makes it heavy.

Updated

No 3D file at hand?

Output preset

01— Method

How to reduce a GLB file's size

Most of a GLB's weight is textures and uncompressed vertex data, so those are the first things to cut. Five steps, and what this tool does with each.

  1. 01Compress the geometry

    Meshopt or Draco compression stores vertex data at reduced precision and packs it, often cutting geometry to a fraction of its size.

    This tool: the Web preset applies Meshopt.

  2. 02Index and merge vertices

    Exports from CAD and some DCC tools write every triangle corner separately. Merging identical vertices and duplicate data removes that repetition without changing the shape.

    This tool: done on both presets.

  3. 03Shrink the textures

    Textures are usually most of a model's weight. Size them to what the camera needs, often 2048 px or less, and convert them to WebP or KTX2.

    This tool: flags the heavy ones; resize them in your asset pipeline.

  4. 04Remove what nothing uses

    Unused materials, accessors and buffers survive many exports and still add bytes.

    This tool: removed on both presets.

  5. 05Simplify the mesh last

    Decimation lowers the triangle count but changes the shape, so how far to go depends on how close the camera gets.

    This tool: not done; it is a modeling decision.

02— The report

What it checks

The numbers that decide whether a model loads fast and renders right in a web viewer, a configurator or a 3D printer.

Size and complexity
File size, triangles, vertices, meshes and materials, before and after optimization.
Textures
Every texture's resolution and size, with the ones above 2048 px or 1 MB flagged. Textures are usually most of a model's weight.
Non-manifold edges
Edges shared by three or more faces. They break 3D printing and boolean operations and often shade badly.
Open (boundary) edges
Edges with only one face, so you know whether the mesh is watertight. Split UV and normal seams are welded first, so they do not count as holes.
Normals
Mesh parts without normals, and triangles whose normals point against their winding (inverted).
Degenerate triangles
Zero-area triangles: two corners on the same point, or all three on one line.
03— Under the hood

How it works

Four steps, all of them on your device.

  1. 01Read

    The file is read in a Web Worker on your device with glTF-Transform, an open-source glTF library. STL and OBJ are converted to glTF first.

  2. 02Check

    Vertices are merged by position, then every edge is counted by how many faces share it: one face is an open edge, three or more is non-manifold. Each face is compared with its normals and its area.

  3. 03Optimize

    Duplicate data is merged, missing normals are filled, vertices are indexed and unused data is removed. Names, empty nodes, UVs and textures are kept, since a configurator looks parts up by name. The Web preset then compresses geometry with meshoptimizer; the compatibility preset writes plain glTF 2.0 geometry.

  4. 04Compare and download

    You get the before/after numbers, a 3D preview of both versions with a wireframe view, and the optimized .glb.

Why file size matters for a sales tool: read why load time is a sales metric.

04— FAQ

Questions about the GLB optimizer.

What it does with your file, and what it deliberately leaves alone.

No. The tool runs in your browser, in a Web Worker on your own device. The file is never sent to SBFS or anyone else, so there is nothing to delete afterwards; closing the tab discards it.

GLB, glTF with its buffers and textures embedded in the one .gltf file, STL (binary or ASCII) and OBJ (geometry only; .mtl materials and textures are not read), up to 100 MB. Draco-compressed files are not supported yet. The output is always a .glb.

Web (Meshopt) stores vertex data at reduced precision and compresses it with the EXT_meshopt_compression extension, for the smallest file; three.js with its Meshopt decoder, Babylon.js and model-viewer read it. Max compatibility writes geometry with no Meshopt or quantization extension, for viewers and tools that do not support Meshopt. Both presets keep textures as they are, so KTX2, WebP or AVIF textures still need a viewer that reads them; the report flags them.

Yes. No sign-up, no email, no watermark and no limit on how many files you run. The only cap is 100 MB per file, set by how much memory a browser tab can use.

It depends on where the weight is. Geometry-heavy exports, such as CAD conversions with unindexed or repeated vertices, shrink the most: the sample door model ends up less than half its original size. A file whose weight is mostly textures barely changes, because textures are kept as they are.

No. It removes duplicate and unused data and compresses what is left, but it does not simplify the mesh: decimation changes the shape, and how far to take it depends on how close the camera gets to the product.

It reports them with counts, but does not change them: closing a hole or flipping a face is a modeling decision, and an automatic guess can make the model worse. Missing normals are the exception: the optimized file stores the flat normals a viewer would assume anyway.

Not yet. It lists every texture's resolution and size and flags the ones above 2048 px or 1 MB, which are usually the biggest part of a model's weight. Resize them, or convert them to WebP or KTX2, in your asset pipeline.

More free tools

All free tools

Need this inside a product configurator?

Want your own products configured and priced on your site? Get a free demo of one of them. Models this light are part of the setup. See configurator demos by industry.

Book a 20-min call