What is an STL file?
A list of triangles. That really is the whole format, and it is why every 3D printer reads one.
STL came out of stereolithography in the 1980s and stayed because it is impossible to get wrong. There are two encodings. The ASCII form spells out facet normal, outer loop and three vertex lines per triangle. The binary form is an 80-byte free-text header, a 4-byte triangle count, and then 50 bytes per triangle: a normal, three corners, and two spare bytes.
What it does not have
- No index. Every triangle repeats its corners in full, so files are large and a "vertex count" from an STL is really a corner count.
- No colour and no texture coordinates. Some tools stuff colour into the two spare bytes per triangle, but no two agree on how.
- No units. A cube of size 10 might be 10 mm or 10 inches; only the person who exported it knows.
- No guarantee of a closed surface. Nothing stops an STL from having holes or flipped triangles, which is why slicers ship repair tools.
The "solid" trap
The binary form has no signature, and its 80-byte header is arbitrary text — so plenty of exporters begin it with the word solid, which is exactly how an ASCII STL starts. A reader that decides based on that word alone will try to parse binary data as text. The right test is arithmetic: read the triangle count at byte 80 and see whether 84 + count × 50 matches the file length. Our converter does that.
What to convert it to
PLY or OBJ, if you want something smaller and indexable, or GLB for the web. The mesh converter does all of those in the browser. Read STL to OBJ first if the vertex count surprises you.