3D Printing 6 min read

How to Reduce STL File Size

A 400 MB STL is almost never necessary. The size usually comes from one of three causes, and each has a straightforward fix.

Vextrude Team

Updated Aug 21, 2026

Reducing STL file size — Vextrude

A 400 MB STL is almost never necessary. The size usually comes from one of three causes, and each has a straightforward fix.

Where the Size Comes From

STL stores a flat list of triangles, and each triangle carries three vertices plus a normal. In binary form that is exactly 50 bytes per triangle, every time, with no compression and no structure.

Two consequences follow. First, file size is purely a function of triangle count — a million triangles is 50 MB regardless of what the model depicts. Second, vertices are never shared: a vertex where six triangles meet is written out six times, so the format carries roughly six times more vertex data than the geometry actually contains.

So there is only one question worth asking of a large STL: why does it have that many triangles? Usually the answer is a scan, an over-tessellated CAD export, or a mesh that was subdivided for rendering and never simplified.

Switch to Binary First

Before touching the mesh, check whether the file is ASCII. Open it in a text editor — if the first line reads solid followed by readable numbers, it is.

ASCII STL writes every coordinate as text. A triangle that occupies 50 bytes in binary takes 250 or more as text, and parsing is far slower because every number has to be converted from a string.

Re-exporting as binary typically cuts the file to around a fifth of its size with zero loss — the geometry is byte-for-byte identical. This is the only optimisation on this page with no trade-off at all, and it is worth checking before anything else.

Fast check:

Divide the file size in bytes by 50. If the answer is close to the triangle count your slicer reports, the file is binary. If it is five or more times higher, it is ASCII and you are carrying dead weight.

Decimation, Done Safely

Decimation reduces triangle count by merging ones that contribute little to the shape. Done well it is invisible; done carelessly it flattens the detail you cared about.

For printed parts, the practical resolution limit is your nozzle. A 0.4 mm nozzle cannot reproduce a feature smaller than about 0.4 mm, so triangles finer than that carry no printable information. Scanned meshes routinely have ten times more detail than can ever be printed.

Reduce in stages and look at the model between them. Going from 2 million to 200,000 triangles is usually imperceptible on a printed part. Going to 20,000 starts faceting curved surfaces visibly.

Watch flat areas and gentle curves — those decimate well. Watch edges and small raised details more carefully, since those are where an aggressive reduction shows first. Most tools offer a "preserve boundaries" or "preserve sharp edges" option; keeping it enabled costs a few triangles and saves the silhouette.

Fix It at Export Instead

If the model comes from CAD, the best fix is upstream. Solid modellers store true mathematical surfaces and only convert to triangles when you export, using a tolerance setting — often called chord height, deviation or facet tolerance.

That setting is frequently left at a default far tighter than printing needs. Loosening it from, say, 0.001 mm to 0.02 mm can cut triangle count by an order of magnitude with no visible difference in the printed part, because both values are well below what the nozzle can resolve.

This is strictly better than decimating afterwards: the tessellation is generated correctly from the true surface rather than approximated from an already-approximated mesh.

When to Change Format Instead

Sometimes the mesh is fine and STL is simply the wrong container.

3MF stores indexed vertices rather than repeating them per triangle, so the same geometry is typically substantially smaller than the equivalent STL — and it adds explicit units, colour and multi-object support. For anything going to a modern slicer, it is the better choice.

GLB with Draco compression is the option when the destination is a web viewer rather than a printer. Compression ratios are dramatic on dense meshes, at the cost of a decoder on the client side.

And for archiving, plain ZIP deserves a mention. STL's repetitive structure compresses extremely well — often to a fifth of its size — with no change to the file itself. Not useful for a slicer, ideal for storage and email.


Convert between formats

STL, OBJ, GLB, GLTF, FBX, PLY, DAE and USDZ — converted in your browser, nothing uploaded.

Open 3D Converter