Inspect & measure/Viewer
Local STL viewer and geometry inspector
Open an STL directly in your browser and inspect its geometry before printing. A Web Worker streams the file in 4 MiB slices, welds duplicate vertices, and reports triangle count, bounds, surface area, and volume without uploading the model. Meshes above 250,000 triangles open with a decimated viewer preview and can load the full mesh on demand.
Drop an STL here
Binary STL streams in 4 MiB slices; ASCII STL streams line by line.
Choose a fileMax file size: 500 MB · No upload
No upload · File.slice() → dedicated Worker → transferable geometry.
How it works
- 1
Drop a binary or ASCII STL. Binary STL uses triangle-aligned slices; ASCII STL is parsed line by line.
- 2
The Worker reads the header, validates the triangle count, then streams triangle-aligned blocks.
- 3
Vertices are welded with a spatial hash; the viewport is fitted to the mesh bounds. For large meshes the viewer builds a decimated preview while keeping full statistics.
- 4
Rotate, zoom, or read the statistics. Nothing is uploaded and no file is written to a server.
- 5
Use “Load full mesh” to replace the preview with every triangle. The file is re-read locally by the Worker.
What the numbers mean
Triangle count is the fastest signal for whether a slicer will accept the model. A 100 MB binary STL is roughly two million triangles.
Welded vertex count is typically about half the triangle count for a closed surface. A much larger number suggests duplicated or unwelded seams.
Bounds are reported in the source units (STL is unitless; the site treats it as millimetres by default). Check each axis against your printer build volume.
Surface area is useful for resin estimates and for spotting suspiciously flat or missing regions.
Signed volume is estimated from the triangle soup. It is meaningful for a closed, consistently oriented mesh; open meshes will under- or over-report.
Meshes above 250,000 triangles open with a vertex-clustering preview near 100,000 triangles. The preview only changes what is drawn: triangle, vertex, bounds, area and volume values still describe the full mesh. Loading the full mesh streams the geometry in independently indexed chunks from the resident Worker mesh or from the full cache, and the viewport appends each chunk without re-parsing when a resident copy is available. Chunks are ordered by distance to the current orbit target, and each chunk keeps its own bounds so off-screen chunks can be frustum-culled.
The decimated preview and, when it fits the cache budget, the full welded geometry are cached in the browser's origin-private file system (OPFS), keyed by a hash of sampled file bytes, the file size and its modification time. Full geometry up to 24 MB is stored as one pair of files; larger full meshes up to 256 MB are written as independently indexed chunks. Binary STL chunks are streamed straight from aligned file slices, so the detail cache does not need the whole welded mesh in memory. Reopening the same file restores the preview and streams cached chunks without parsing again. Beyond the chunk budget, the full mesh is re-parsed on demand. The cache stays on this device and clearing site data removes it.
Near-view detail is an optional mode for large meshes. The Worker prepares a local chunk cache, then the viewer keeps up to eight full-resolution chunks nearest the current orbit target, inside a radius that follows the camera distance over the decimated preview. Panning the target loads new nearby chunks and unloads far ones. The preview remains visible outside the detailed region; the mode requires OPFS and a 256 MB detail-cache budget per model.
Printing notes
- Rotate the model so the largest flat face sits on the bed; supports get cheaper and the first layer is more reliable.
- A watertight mesh is not yet checked by this preview. Run the manifold check before sending the model to a slicer.
- If the bounds exceed the bed, scale uniformly in the transform tools rather than stretching one axis.
Questions
References
- · ISO/ASTM 52900 additive manufacturing terminology
- · Binary STL layout: 80-byte header, uint32 triangle count, 50 bytes per facet