Wondering what is an STL file and why every slicer asks for one? It is a 3D model stored as a mesh of small triangles, describing only the surface of your object.
If you are just starting out, the wider guide to 3d printing for beginners shows where this file format fits.
| Item | Value |
|---|---|
| Year the format was developed | 1987 |
| What it stores | Surface geometry only, as triangles |
| Numbers stored per triangle | 12 |
| Binary file header | 80 bytes |
| Binary size of each triangle | 50 bytes |
| Scale information | None (units are arbitrary) |
These figures come from Wikipedia’s STL article and Paul Bourke’s format notes. Figures can change, so check the source before you rely on them.
How an STL file describes a 3D shape
An STL file is a triangulated surface. According to the Fabbers description of the format, the surface is broken down logically into a series of small triangles, called facets.
Each facet is identified by a unit normal, which is a line perpendicular to the triangle, and by three vertices, which are its corners. Because the normal and each vertex take three coordinates, the file stores a total of 12 numbers for each facet.
Curved shapes are approximated. Wikipedia illustrates this with a torus, comparing the CAD representation with an STL approximation composed of triangular planes.

The same Fabbers page explains why the format suits printing: a slicing algorithm uses this triangle data to determine the cross sections of the shape that the machine has to build.
What is inside an ASCII STL file
The text version of the format is readable by a person. Per Wikipedia, an ASCII STL file begins with the line solid name and concludes with endsolid name.
Between those lines, each triangle is written as a short block:
- facet normal, followed by the direction of the normal
- outer loop, which opens the list of corners
- three vertex lines, each holding an x, y and z coordinate
- endloop and endfacet, which close the block
In Paul Bourke’s notes, the normals often need not be provided, because the parsing software can generate them. The ASCII version is also bulky: Fabbers says it is primarily intended for testing new CAD interfaces and that the large size of its files makes it impractical for general use.
How a binary STL file is built
Because ASCII files can be large, a binary version of STL exists. It packs the same information into fixed-size blocks, so a program can read it quickly.
| Block | Size |
|---|---|
| Header (a comment string) | 80 bytes |
| Total number of triangles | 4 bytes |
| Normal, for each triangle | 12 bytes |
| Three vertices, for each triangle | 36 bytes |
| Spacer, for each triangle | 2 bytes |
Paul Bourke’s page adds that each coordinate is a 4-byte floating point number, so each facet takes 50 bytes in all: 12 for the normal, 36 for the vertices and 2 for the spacer (source).
The header should never begin with the word solid, according to Wikipedia, because some software could then confuse the file with an ASCII STL.
Rules that keep an STL mesh valid
A mesh is more than a pile of triangles. The Fabbers page lists the conditions a clean file should respect:
- Vertex-to-vertex rule: each triangle must share two vertices with each of its adjacent triangles, so a vertex of one triangle cannot lie on the side of another.
- Consistent orientation: the normal points outward, and the vertices are listed in counterclockwise order when looking at the object from the outside (the right-hand rule).
- Coordinates: the original specification required positive numbers, but Wikipedia notes this is no longer enforced and negative coordinates are commonly encountered today.
Checking a mesh against rules like these is part of learning how to prepare a 3d model for printing.
What an STL file does not store
The format keeps the shape and nothing else. Wikipedia states that STL files contain no scale information, and the units are arbitrary, so check the size in your software after importing.
They also describe only the surface geometry, without any representation of color, texture or other common CAD model attributes. There are at least two non-standard variations on the binary format for adding color information, and the Materialise Magics software uses the header to represent the overall color of the part.
The separate question of how overhangs are held up while printing is covered in 3d printing supports.
Where the format comes from
Per Wikipedia, STL was developed by the Albert Consulting Group for the first commercial 3D printers of 3D Systems in 1987. Chuck Hull, the inventor of stereolithography and founder of 3D Systems, reports that the extension abbreviates stereolithography, though it is also called standard triangle language or standard tessellation language.
The format then remained relatively unchanged for 22 years. In 2009 an update dubbed STL 2.0 was proposed, which evolved into the additive manufacturing file format.
Today the format is widely used for rapid prototyping, 3D printing and computer-aided manufacturing, as Wikipedia notes.
Frequently asked questions
What does STL stand for?
Show answer
Wikipedia reports that the extension abbreviates stereolithography, although it is also referred to as standard triangle language or standard tessellation language.
Does an STL file contain color?
Show answer
In the standard format, no: it describes only surface geometry without color or texture. Some software uses non-standard variations of the binary format to add color, so those files may not behave the same everywhere.
Does an STL file include units?
Show answer
No. The file contains no scale information and the units are arbitrary, so the software reading it decides what the numbers mean.
Should I choose ASCII or binary?
Show answer
ASCII is readable but its files can be large, which is why a binary version exists. Fabbers describes the ASCII format as impractical for general use because of its size.



