The guide
An STL File Is Only Triangles: No Units, No Color, and No Promise That It Holds Water
The file every slicer opens records a surface and nothing more, so size, volume, weight and printability all have to be worked out from the triangles, with a few honest guesses.
- 50 bytes what each triangle costs in a binary STL file
- 45 degrees lean from vertical that filament printers usually manage unsupported
- 65 to 72 percent tensile strength of printed ABS bars against the molded plastic
- 10 to 30 percent the common range of infill density, by the Slic3r manual
- 8.3 to 0 percent overhang of one sample bracket, upright and then on its side
Read the full guide Fold the guide
A part comes off a download site, goes into the slicer, and appears the size of a lentil. Or it will not fit on the bed at all. Nothing in the file is broken. Whoever drew it worked in inches, the slicer assumed millimeters, and the file had no way to say which. An STL file says far less than most people expect, and every number a printer needs has to be worked out from the little it does say.
Triangles and nothing else
The Library of Congress records that the format was first documented by 3D Systems in 1988, in a specification written for stereolithography machines, and that a second edition followed in 1989. Its own compilers could not find a copy of either. What survives is a set of later descriptions, and they agree on how little there is. An STL file describes the surface of an object as triangles: for each one, three corners and a normal that points out of the solid.
The binary form is easy to hold in the head. It opens with an 80 character header that can serve as a comment, then a 32-bit count of the triangles. After that every triangle costs 50 bytes: twelve 32-bit numbers for the normal and the three corners, and two bytes left over. A cube needs twelve triangles, so a cube is 684 bytes. The text form spells the same facts out in words such as facet, outer loop and vertex. Marshall Burns, in his book Automated Fabrication, wrote that the text form was meant for testing new CAD interfaces and that its size made it impractical for general use.
Now the absences. There are no units: in Burns’s words the file contains no scale information and its coordinates are in arbitrary units. There is no color. The Library of Congress notes two incompatible conventions that borrow the two spare bytes for it, and no way to tell from a file which one was used. There are no curves either. A round hole is a ring of flat faces, and nothing records that it was meant to be round. The 3MF format, first published in 2015, shows what was missing: its specification gives every file a unit, which is the millimeter unless the file says otherwise.
Nor does the file know its own corners. A cube has eight, yet its STL lists thirty-six, three for each triangle, and never says that any two of them are the same point.
Why the surface has to hold water
Two rules turn that heap of triangles into a solid. The corners of each one are listed counterclockwise as seen from outside, so the file agrees with itself about which side is plastic. And each triangle must share two corners with each of its neighbors, which the descriptions call the vertex-to-vertex rule. Together they mean that every edge belongs to exactly two triangles, which cross it in opposite directions. The manual for ADMesh, an STL repair program, says the same from the other side: every facet should have exactly three neighbors, and a mesh that defines a solid has no unconnected edges.
A slicer depends on this far more than a viewer does. A printer builds in layers, and each layer begins as closed outlines that are then filled with material. To find them the slicer cuts the surface at one height after another. Where the surface is closed, every cut comes back as closed loops. Where a triangle is missing, a loop comes back with a gap in it, and the program must guess which side is inside. The Slic3r manual puts it mildly: given holes or misaligned edges, the program may have problems working on the mesh.
Checking is a matter of counting. Match up the corners that have the same coordinates, then count the triangles on each edge. A cube with one face deleted has four edges that belong to a single triangle, and those four edges are the rim of the hole. One caution applies. The first pass of ADMesh demands zero difference between coordinates, and its manual admits that neighbors often differ in the eighth decimal place, so a second pass joins near misses within a tolerance. An exact count is therefore stricter than a slicer. A file reported with open edges may still slice cleanly.
A volume from nothing but a surface
It seems odd that a hollow skin of triangles can have a volume at all. The method, presented in 2001 by Cha Zhang and Tsuhan Chen of Carnegie Mellon University, is to join each triangle to the origin, which makes a tetrahedron. Its volume is one sixth of a short sum of products of the nine coordinates, and its sign depends on whether the origin lies behind the triangle or in front of it. Add them all up. The pieces that fall outside the object are counted once as positive and once as negative, and they vanish. What remains is the volume inside.
The sum is honest only for a closed surface whose triangles all face the same way. Open a hole and the positive and negative pieces no longer cancel, so the total drifts with wherever the origin happens to be. If the total comes out negative, the whole surface is inside out.
The same bookkeeping gives the center of mass. David Eberly’s notes on polyhedral mass properties use the divergence theorem to turn the integrals for mass, center of mass and inertia into sums over the triangles of a solid with constant density. The words constant density matter. A printed part with sparse infill is a shell around a lattice, so its balance point is only roughly the one the surface predicts.
And the answer is the volume of the facets, not of the curve the designer drew. A ball exported as a few hundred flat faces encloses a little less than the ball it stands for.
Where 45 degrees comes from
A filament printer cannot print on air. Every new layer needs something beneath it. On a wall that leans outward, each layer lands partly on the last one and partly on nothing. An encyclopedia entry on the process says it copes with small overhangs through the support of the layers below, but is limited in the slope it can manage. The geometry shows where the usual limit comes from. At 45 degrees every layer steps sideways by exactly its own height. If the line is twice as wide as the layer is tall, half of each line still rests on the line below. Lean further and less than half does.
It is a rule of thumb, not a law. The Slic3r manual says the angle a model will print to depends on several factors, most of all layer height and extrusion width, and is usually around 45 degrees. A study published in 2022 printed PLA bars with undersides sloped 20, 30 and 40 degrees above horizontal and nothing beneath them. All of them printed. What changed was the finish. At 0.1 mm layers and a slow 10 mm/s the underside measured 17.5 micrometers of roughness on the 40 degree slope and 32.3 on the 20 degree one. At 50 mm/s the shallow slope came out at 102.
Bridges are an exception of another kind. A span between two anchors can be stretched across open air. How far depends, in the Slic3r manual’s words, on the material and cooling, and slicers treat bridges as a case of their own: Cura has a setting that detects them and changes speed, flow and fan while they are printed.
Even the angle is measured two ways. Cura’s definition file describes its setting as the minimum overhang angle for which support is added, where 0 supports every overhang and 90 supports none, and sets it to 50 by default: an angle taken from the vertical. Slic3r’s overhang threshold is the most horizontal slope that prints without support, measured from the horizontal plane, with 90 meaning vertical. Type 30 into both, and one program supports every wall that leans more than 30 degrees while the other supports only those past 60. Only at 45 do the two agree.
Supports are worth avoiding. The Slic3r manual counts the cost as more material, longer print times and clean-up after printing, and it offers a tip: it is sometimes worth altering the orientation of the model to reduce the overhangs.
Which way up, and how heavy
Turning the part is the cheapest fix there is, and it changes more than the overhangs. A filament print has a grain. In 2002 Sung-Hoon Ahn and four co-authors measured ABS bars printed with their lines laid in different directions and called the properties anisotropic. Typical tensile strength was 65 to 72 percent of the same plastic injection molded, and compressive strength 80 to 90 percent. Height matters too. A cylinder 30 mm long and 10 mm across, printed in 0.1 mm layers, takes 300 layers standing up and 100 lying down. So orientation is a three-way trade between support, strength and time, and no single number settles it.
Take the sample part that the viewer on this page opens with: a shelf bracket with a back plate, an arm, and a brace at 45 degrees between them. Standing as it would hang on a wall it measures 45 by 12 by 55 mm, a closed surface of 248 triangles in 12,484 bytes. With the limit at 45 degrees, 8.3 percent of the surface overhangs, chiefly the underside of the arm. Lower the limit to 30 and the brace joins in, at 22.1 percent. Now lay the bracket on its side. Overhang goes from 8.3 to 0 percent, and the layers run along the arm instead of across it.
One detail of that example is easy to miss. Standing upright, the bracket’s rounded bottom edges are marked as overhang, a thin stripe along the bed. That is correct. A rounded edge leaves the bed almost level, so its first layers lean out at close to 90 degrees before the curve stands up. A chamfer cut at 45 degrees keeps the whole edge at the limit instead.
Volume times density gives mass, and the density comes from a data sheet. One maker, Spectrum Filaments, lists 1.24 grams per cubic centimeter for a PLA, 1.27 for a PETG and 1.04 for an ABS. The bracket encloses 8.45 cubic centimeters, so printed solid it would weigh about 10.5 g in that PLA and about 8.8 g in that ABS. But almost nothing is printed solid. Cura’s defaults are two wall lines and 20 percent infill. The Slic3r manual gives 10 to 30 percent as the common range, and says 40 percent is enough to give almost all models good mechanical strength.
How much plastic that leaves depends on the shape. A thin-walled part is nearly all perimeter and prints close to solid. A fist-sized block is mostly infill and weighs far less than its solid figure. Only a slicer knows, because only a slicer lays out the lines. An honest estimate from the surface alone states the solid mass as a ceiling and lets the user scale it by a guessed fraction. At 40 percent, the PLA bracket comes to about 4.2 g.
What a surface cannot tell you is the rest of the job. A viewer of this kind is not a slicer. It draws no toolpaths, places no supports and has no idea how long the print will take. Its overhang check goes by angle alone, so it marks a short bridge as readily as a long ceiling. It relies on the user to know whether the numbers are millimeters or inches. Its center of mass assumes a solid part. And its densities are typical figures for one maker’s filament, not a measurement of the spool on the shelf.
That still leaves a good deal that can be settled before any plastic is melted: whether the file is the right size, whether it is closed, how it should lie, and roughly what it will weigh. The triangles hold all of that. They just do not say it out loud.
Sources
Every source consulted for this guide. Links checked October 3, 2026.
- STL (STereoLithography) File Format Family Library of Congress, Sustainability of Digital Formats
- STL (STereoLithography) File Format, Binary Library of Congress, Sustainability of Digital Formats
- STL (STereoLithography) File Format, ASCII Library of Congress, Sustainability of Digital Formats
- The StL Format | fabbers.com Ennex Research, reprinted from Automated Fabrication by Marshall Burns
- STL (file format) Wikipedia
- 3D Manufacturing Format - Core Specification & Reference Guide 3MF Consortium
- ADMesh command line tool ADMesh 0.98.1 documentation
- Repairing Models Slic3r Manual
- Efficient feature extraction for 2D/3D objects in mesh representation Cha Zhang and Tsuhan Chen, Carnegie Mellon University, copy held by the Internet Archive
- Polyhedral Mass Properties (Revisited) David Eberly, Geometric Tools
- Fused filament fabrication - Wikipedia Wikipedia
- Knowledge-Based Design Algorithm for Support Reduction in Material Extrusion Additive Manufacturing Jaeseung Ahn, Jaehyeok Doh, Samyeon Kim and Sang-in Park, Micromachines (Basel), 2022, via PubMed Central
- Anisotropic material properties of fused deposition modeling ABS Ahn, Montero, Odell, Roundy and Wright, Rapid Prototyping Journal, vol. 8, no. 4 (2002), pages 248 to 257, record and abstract at OpenAlex
- Support Material Slic3r Manual
- Print Settings Slic3r Manual
- PrintConfig.cpp (libslic3r print settings, Overhang threshold) Slic3r repository on GitHub
- FDM Printer Base Description (fdmprinter.def.json) UltiMaker, Cura repository on GitHub
- Technical Data Sheet: The Filament PLA Spectrum Filaments
- Technical Data Sheet: The Filament PETG Spectrum Filaments
- Technical Data Sheet: ABS GP450 Spectrum Filaments