About STLBench
STLBench opens 3D files in a browser tab and tells you what is inside them. This page covers how the numbers are arrived at, which of them are exact and which are assumptions, and why the viewers share one domain instead of scattering across seven.
What is here
Every page runs the same engine: a WebGL viewport, a parser chosen by file extension, and one pass over the triangles that produces the panel of measurements. What differs between pages is which format each one leads with and what it explains, because the formats are genuinely different — one of them stores per-vertex colour, one stores a build plate, and one stores nothing but coordinates.
Viewers
Mesh conversion
CAD conversion
The catalogue is deliberately short for now. Mesh conversion, STL repair and the CAD side — including STEP, DXF and G-code — are being built, and a page appears here when it works, not when it is planned.
How the measurements are computed
Volume comes from the divergence theorem. Each triangle forms a tetrahedron with the origin, that tetrahedron's signed volume is summed, and on a closed surface every contribution from outside the solid cancels against another — what is left is what the surface encloses. This is exact arithmetic, not sampling, and it agrees with a slicer to within rounding. It also has a hard precondition: the cancellation only works when the surface is closed, which is why the volume row refuses to print a number when it is not.
Watertightness is a count, not a heuristic. Every edge of every triangle is put in a table keyed by its two endpoints, ignoring direction; a closed surface uses each edge exactly twice, once from each side. Edges used once are holes, edges used three or more times are surfaces meeting where they should not, and both are reported separately because they have different causes and different fixes.
Welding has to happen before either check, because STL stores every triangle independently — a cube leaves CAD as 36 unrelated corners, and without welding, every mesh in the world would look full of holes. Positions are snapped to a grid one millionth of the model's diagonal before edges are counted. That step is relative to the model on purpose: a 200 mm bracket and a 2 mm thread cannot share one absolute tolerance.
Where the numbers are assumptions
Millimetres. STL, OBJ and PLY store bare floating-point coordinates with no unit anywhere in the file. The panel labels them mm because that is what every slicer assumes, but the file does not say so. A part reading 25.4 times too small was exported in inches; one reading 1000 times too small arrived from a metres-based pipeline, glTF being the usual culprit. 3MF is the only format here that states its unit outright.
The volume is the tessellation's, not the part's. A cylinder approximated by 32 flat strips encloses slightly less than the true cylinder it stands for, because a polygon inscribed in a circle is smaller than the circle. On a typical printed part the difference is under a tenth of a percent, but it is a property of the format rather than of the arithmetic, and it does not go away by measuring more carefully.
A closed mesh is not a good mesh. Watertight means the surface has no gaps. It says nothing about self-intersections, inverted normals or wall thicknesses below what a nozzle can print — a model can pass every check on this page and still fail on the plate.
How it is built
A static site: no accounts, no backend, no database. Pages are pre-rendered HTML, and everything interactive is JavaScript running in your tab. The renderer and each file parser are fetched only when you actually open a model, so reading a page costs a fraction of what using it does — and the FBX and 3MF readers, which drag in a decompressor and an XML parser, are never downloaded by someone who came for STL.
What the site does not collect
Your models never leave the machine. There is no upload endpoint to send them to: the file is read from disk by the browser, parsed in the tab, and discarded when you close it. You can disconnect from the network after the page loads and every tool still works, which is the practical test of the claim — and the network panel of your own browser is the proof.
What the site does load is analytics and, on some pages, advertising, both from third parties that see a page view rather than a file. Nothing about the contents of a model — its name, its size, its geometry — is measured, stored or transmitted.
Start with a file you already have
The STL viewer opens the other six formats too, and the panel underneath reports the same measurements whichever one you drop.