What is a .stl file?
An STL file is a list of triangles describing the surface of a 3D model. It is the oldest and most widely supported 3D printing format, and it stores no units, no colour and no assembly structure, only the shape.
Open your .stl file here
Dimensions
Capabilities
Each row carries its source and the date it was checked.
| Property | Value | Source · retrieved |
|---|---|---|
| Stores units | noRead as mm by convention. Nothing in the file says so. | Wohlers Associates · 2026-09-04 |
| Stores colour | no | Wohlers Associates · 2026-09-04 |
| Stores assembly structure | no | Wohlers Associates · 2026-09-04 |
| Geometry kind | triangle mesh | Wohlers Associates · 2026-09-04 |
| Binary or text | binary | Wohlers Associates · 2026-09-04 |
| Extensions | .stl | Wohlers Associates · 2026-09-04 |
| MIME type | model/stl | Wohlers Associates · 2026-09-04 |
| Standard | no formal standard | Wohlers Associates · 2026-09-04 |
| Vendor | neutral, no single vendor | Wohlers Associates · 2026-09-04 |
What an STL file contains, and nothing else
An STL file is a bag of triangles. Each triangle is three corner points and a normal vector saying which way is outward. There is no other information in the file. No units, no colour, no material, no part names, no assembly structure, no curves, no history.
That simplicity is why STL has outlived every attempt to replace it, and why it causes the same three problems over and over.
Problem one: STL has no units
A cube 20 units on a side is stored as the number 20. Whether that means 20 millimetres, 20 inches or 20 metres is not in the file.
In practice, almost everything treats STL as millimetres, and this site does too. But a part exported from a CAD package that was set to inches produces an STL whose numbers are inches, and it will arrive 25.4 times too small in your slicer. The fix is to scale by 25.4, and the tell is a part that should be 50 mm arriving as 2 mm.
Always check the overall dimensions after importing an STL. Every slicer shows them.
Problem two: STL describes curves as flat facets
A cylinder in STL is a many-sided prism. How many sides depends on what tolerance the exporting CAD package used, and once the file is written that choice is permanent. Export too coarsely and a printed hole is visibly polygonal. Export too finely and you have a 400 MB file that crashes your slicer.
For most printed parts, a chord tolerance of around 0.01 to 0.05 mm is a reasonable middle. If you are exporting from CAD, look for "deviation", "tolerance" or "chord height" in the STL export dialog instead of accepting the default.
Problem three: STL files are frequently not watertight
Nothing in the format requires the triangles to form a closed surface. Bad exports produce holes, duplicated faces, flipped normals and edges that do not quite meet. A slicer cannot decide what is inside a shape that is not closed, so it either refuses the file or silently produces something wrong.
This site tells you whether a file is closed, how many open edges it has, and whether its triangles are consistently wound. A mesh can be closed by edge count and still be inconsistently wound, which produces a wrong volume and a confused slicer.
Binary and ASCII
Two encodings exist. Binary is 50 bytes per triangle and is what you should use. ASCII spells every number out as text and is roughly six times larger for identical geometry.
One trap: plenty of binary STL files begin with the word solid, which is also how ASCII files start. Software that decides by reading the first word gets these wrong and shows nothing. This site decides by checking whether the file length matches 84 + 50 × the triangle count, which is the only reliable test.
When to use something else
- 3MF if you are 3D printing and your slicer supports it. It stores units,
colour and multiple parts, and it is a fraction of the size.
- STEP if you are sending the part to a machine shop. A shop can machine
from an STL, but it is a worse starting point than an exact solid.
- OBJ or GLB if colour matters and printing does not.
STL is still the right answer when you do not know what the other end supports, because everything reads it.
What opens a .stl file
Free tools are listed first. Paid rows are marked, and paying never moves a row up the table.
| Application | Opens | Saves | Platforms | Free | Source |
|---|---|---|---|---|---|
| This site's viewerin-browser, nothing uploaded | ✓ | — | any browser | yes | viewer → |
| Bambu Studio | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| Blender | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| FreeCAD | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| MeshLabAlso repairs non-watertight meshes. | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| Microsoft 3D BuilderIncludes a simple automatic repair. | ✓ | ✓ | windows | yes | docs · 2026-09-04 |
| OpenSCADSTL is OpenSCAD's primary output. | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| OrcaSlicer | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| PrusaSlicer | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| UltiMaker Cura | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| Autodesk Fusion | ✓ | ✓ | windows · macos | paid | docs · 2026-09-04 |
| RhinoMesh settings on export control the facet count. | ✓ | ✓ | windows · macos | paid | docs · 2026-09-04 |
| SolidWorksThe export dialog exposes the chord tolerance. Set it instead of taking the default. | ✓ | ✓ | windows | paid | docs · 2026-09-04 |