Triangle Count, Resolution and File Size: How Fine Should Your Mesh Be?

A binary STL is exactly 84 + 50 × N bytes, so triangle count and file size are the same number. Here is how export tolerance drives that count and where extra triangles stop buying you anything.

3 min read

Mesh density is the one STL setting people change without knowing what it controls. The relationship is unusually direct, which makes it easy to reason about once you have seen the arithmetic.

File size is triangle count

A binary STL is exactly:

84 + 50 × N bytes

80 bytes of header, 4 for the triangle count, and 50 per triangle. There is no compression and no shared vertex table, so the relationship is exact rather than approximate. A 50 MB file has about a million triangles; a 5 MB file has about a hundred thousand.

That also means STL is remarkably inefficient. Every vertex is written once per triangle that touches it — typically six times over. Formats with an indexed vertex list, or 3MF with its zip compression, routinely land at a fraction of the size for identical geometry.

What the export tolerance actually controls

CAD models are exact surfaces. Exporting to STL approximates them with flat triangles, and the export dialog's tolerance — variously called chord height, deviation or sag — sets how far a triangle is allowed to stray from the true surface.

For a cylinder of radius R approximated by segments of angle θ, the maximum deviation is:

h = R × (1 − cos(θ / 2))

Turn that around to find the segments needed for a given tolerance. A 10 mm radius hole with a 0.01 mm tolerance needs a segment angle of about 5.1 degrees, so roughly 70 segments around the circle. Loosen the tolerance to 0.05 mm and about 32 segments suffice.

Two consequences follow. Halving the tolerance roughly doubles the triangles on curved surfaces, so the count climbs fast. And flat faces cost nothing: a cube is 12 triangles at any tolerance. A model that explodes in size is a model full of curves.

Where extra triangles stop helping

The print cannot be finer than the printer. On FDM, the nozzle diameter (0.4 mm typically) sets the horizontal resolution and the layer height (0.1–0.3 mm) the vertical. Facets smaller than those dimensions are averaged away by the extrusion itself — the sliced toolpath is literally identical.

Resin printing resolves finer, with pixel sizes in the 20–50 µm range, so it justifies tighter tolerances. Even there, 0.01 mm is generally the point of diminishing returns.

What excess triangles do cost:

  • Slicing time, which grows with triangle count and can turn seconds into minutes.
  • Memory, in the slicer and especially in browser-based viewers, where a ten-million-triangle scan can exhaust the tab.
  • Handling, since a 200 MB file is awkward to send and slow to open.

Where too few triangles show

The failure in the other direction is visible faceting: a cylinder that looks like a polygon, or banding across a gentle curve. Sculpted and organic models are the sensitive case, because the eye is good at spotting flat spots on surfaces it expects to be smooth.

The tell is that facets appear on the printed part, not just on screen. If the model looks faceted in the viewer but the facets are well under 0.1 mm deep, the print will be smooth.

Reducing a mesh you did not make

Re-exporting from CAD with a coarser tolerance is always better, because it regenerates triangles from the true surface. When all you have is the mesh:

  1. MeshLab, Filters → Remeshing → Quadric Edge Collapse Decimation. Set a target face count and enable the option to preserve boundaries.
  2. Blender, the Decimate modifier in Collapse mode. Fast, interactive, and easy to compare against the original.

After decimating, re-check the dimensions and the watertightness — aggressive decimation can close small holes, or open new ones.

Reading the count

Mes3D shows the triangle count next to the bounding-box dimensions as soon as a model loads, which is enough to tell whether a file is unnecessarily heavy before you send it or slice it.

Frequently asked questions

How many triangles should an STL file have?

Enough that the faceting is finer than your printer can resolve, and no more. For FDM a chord tolerance of 0.01 to 0.05 mm is generally plenty, which usually lands a mechanical part somewhere between a few thousand and a few hundred thousand triangles. Beyond that you are paying in file size and slicing time for detail the nozzle cannot print.

Why is my STL file so large?

Because a binary STL is exactly 84 + 50 times the triangle count in bytes, and the export tolerance was set very fine. Halving the chord tolerance roughly doubles the triangles on curved surfaces. A 50 MB STL has about a million triangles.

Does a higher resolution STL print better?

Only up to the point where facets become smaller than the printer's resolution. Past that the sliced result is identical while slicing gets slower and the file gets harder to handle. Layer height and nozzle diameter set the real limit, not the mesh.

How do I reduce the triangle count of a mesh?

Best is to re-export from CAD with a coarser tolerance, since that regenerates the mesh from the true surface. If you only have the mesh, use quadric edge collapse decimation in MeshLab or the Decimate modifier in Blender, then check that dimensions and holes survived.

Open the 3D viewer

More guides

All articles