STL checker
Check an STL before you slice it
Drop a file and get what it weighs in filament, roughly how long it prints, and what to quote for it — plus triangle count, real dimensions, volume and whether it is watertight. Measured in your browser, not on a server.
Drop an STL here
or choose a file. Binary and ASCII STL are both supported. Up to 30 MB.
What each number means
| Metric | What it is | What to do with it |
|---|---|---|
| Triangles | Every triangle in the file, degenerate ones included. | Under ~50k slices quickly. Millions will slow any slicer down. |
| Unique vertices | Distinct corner points after welding coincident vertices to 0.001 mm. | Rough sanity check on how the mesh was built. |
| Bounding box | The X, Y, Z extents in millimetres. | Check it fits the bed before slicing. STL carries no units — millimetres are assumed. |
| Volume | Sum of the signed tetrahedron volumes from the origin. | Weight = volume × density. Only trustworthy on a closed mesh. |
| Surface area | Sum of triangle areas. | Estimate paint, coating, or the cost of a smoothing pass. |
| Watertight | Every edge is shared by exactly two triangles. | The single most useful check: slicers need this to decide what is inside. |
| Boundary edges | Edges belonging to only one triangle — holes. | A non-zero count is why a slicer fills the part solid or refuses it. |
| Non-manifold edges | Edges shared by three or more triangles. | A “T” junction or duplicated face; confuses inside/outside tests. |
| Degenerate triangles | Zero-area triangles. | Junk from a bad boolean or export. Usually harmless, occasionally fatal. |
What this checker does not do
- It does not repair anything. V1 detects problems and stops there. No hole filling, no normal flipping, no re-meshing. If a mesh is broken, this tells you; fixing it is a job for your CAD tool or a dedicated repair tool.
- It does not read OBJ, 3MF, STEP or STP. STL only.
- It does not tell you if the model is printable. Watertight is necessary, not sufficient — overhangs, wall thickness and tolerances are not checked.
- It does not check normals as such. Volume is reported as an absolute value, so an inside-out mesh still gives a plausible number. Mixed winding on an open mesh can distort it.
Limits
Files over 30 MB are rejected before parsing, so a runaway file cannot exhaust memory. Above roughly 250 000 triangles the edge analysis is skipped — the map of every edge is what costs memory — and the result says so rather than guessing. Everything else is still measured. Parsing happens in chunks with a progress bar, so the tab stays responsive.
How the volume is calculated
For every triangle, take the tetrahedron formed by its three corners and the origin, and add its signed volume: V = (a · (b × c)) / 6. On a closed, consistently-wound mesh the outside contributions cancel and the sum is the enclosed volume, to the last digit. On an open mesh the surface does not close, so the number is an approximation — which is exactly why the watertight verdict is printed above it. On our 10 mm test cube with one triangle removed, the true volume is 1000 mm³ and this method reports 833.3 mm³.