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³.
Frequently asked questions
Where do the grams, the hours and the quote come from?
Grams are the parsed volume times the share of that volume a slicer actually extrudes — 35% for parts under 30 cm³, 25% above, because walls dominate small parts — times the material density, plus 15% when supports are on. Hours are that extruded volume divided by layer height x extrusion width x speed, plus 15% for travel. The quote is material + electricity + machine time, a failure allowance on top, then your margin, shown as a range from a plain part to sanded edges. All of it is an estimate with a stated tolerance: the time band is ±30%, and the slicer's own numbers beat ours every time. It is built for a fast answer to a customer, not for an invoice.
Is my STL uploaded anywhere?
No. The file is read with the browser's File API and parsed by a Web Worker running on the same page. There is no server-side component, no request is made when you drop a file, and nothing is stored. You can verify it in your browser's network panel with the file loaded.
Can it fix my STL?
No, and this version makes no attempt to. It reports triangle count, dimensions, volume, surface area, watertight state, boundary edges and non-manifold edges. Repair needs a different class of tool; claiming otherwise would be the dishonest version of this page.
What does watertight actually mean?
Every edge of every triangle is shared with exactly one other triangle, so the surface divides space into a clear inside and a clear outside. Slicers rely on that to fill the part. A mesh with holes is not watertight; a mesh with three triangles on one edge is not either.
Why is the volume wrong for an open mesh?
Because the calculation sums tetrahedra fanning out from the origin. That only cancels out correctly when the surface closes. With a hole, part of the shape is never enclosed and the result drifts — on our test cube, 833.3 mm³ instead of 1000 mm³.
How large a file can it handle?
Up to 30 MB, which is roughly 600 000 triangles. Small parts are a few hundred kilobytes. If your file is bigger, decimate it in your slicer and check the decimated copy — the topology verdict will hold.
Does it support ASCII STL?
Yes, both encodings. Detection does not trust the “solid” prefix, because a binary file can start with those bytes too; the parser checks whether the declared triangle count matches the file length.