# 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.

Source: https://freestlviewer.com/blog/triangle-count-and-file-size/  
Published: August 5, 2026 · Updated: August 5, 2026

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](https://freestlviewer.com/blog/stl-vs-obj-vs-ply-vs-gltf-vs-3mf/),
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](https://freestlviewer.com/blog/watertight-and-manifold-stl-files/) — aggressive
decimation can close small holes, or open new ones.

## Reading the count

[Mes3D](https://freestlviewer.com/) 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.
