100% local processing — your files never leave your computer

STL Checker

Analyze an STL file for watertightness, holes, non-manifold edges, inconsistent winding, self-intersections and more — locally in your browser, before you send it to a slicer.

Your STL stays on this device. MeshWrench analyzes it locally in your browser.

Binary or ASCII STL, up to 150 MB. This limit protects your browser from freezing — it isn't a Pro restriction.

Waiting for a file

Interactive 3D preview with issue overlays. Drag to rotate, scroll to zoom.

Show/hide
Boundary edges
Non-manifold edges
Winding conflicts
Degenerate triangles
Duplicate faces
Self-intersections

How to check an STL file

  1. Select an STL file using the picker above (or drag one in once you're on the page).
  2. MeshWrench reads and analyzes the file locally in a background worker — nothing leaves your device.
  3. Review the watertightness verdict, the individual check results, and the 3D preview with issue overlays.
  4. Download a JSON report, or continue to STL Repair once it's available.

What each check means

Degenerate triangles
A triangle with a repeated vertex, or with zero/near-zero area. These are excluded from every other check below, and reported separately.
Duplicate faces
Two or more triangles that share the exact same three vertices, either with the same winding (an exact stacked copy) or reversed winding.
Boundary / open edges & holes
An edge used by only one triangle is a boundary edge. Boundary edges are grouped into connected components and classified as a closed loop (a likely hole), an open chain, a branched junction, or a non-simple shape.
Non-manifold edges
An edge shared by more than two triangles — ambiguous "inside vs. outside" geometry at that edge.
Inconsistent winding
Two triangles sharing an edge that traverse it in the same direction, rather than opposite directions — a sign the surface isn't consistently oriented there.
Inward-oriented shells
A closed, consistently-wound shell whose normals point inward rather than outward, determined from its own signed volume. Still watertight, but likely inverted.
Disconnected shells
The model is made of more than one separate, unconnected piece of geometry — sometimes intentional (multi-part models), sometimes a sign of a fragmented file.
Self-intersections
Triangles that geometrically cross through each other. Checked with a broad-phase spatial index plus a robust triangle-triangle test — ordinary shared-edge adjacency is never flagged.

What "watertight" means here

This checker's watertight verdict is a strict, disclosed policy: zero boundary edges, zero non-manifold edges, zero winding conflicts, zero duplicate faces, and a completed self-intersection check with none found. A model that fails one of these criteria is reported "not watertight," with the specific reason. A model whose self-intersection check couldn't complete within this checker's safety limits is reported "some checks incomplete" — never silently reported as passing.

Common slicer symptoms this checker can explain

How the analysis works

Every check starts from an exact-identity topology layer: source STL vertices (which commonly repeat for every triangle) are collapsed to unique positions using the same bit-exact float32 matching every MeshWrench converter already uses — never a distance tolerance, since welding nearby-but-different vertices would change the model's real topology. From there, an edge-incidence map classifies every edge as boundary, manifold or non-manifold and detects winding conflicts; boundary edges are grouped into components; triangles are grouped into connected shells; each shell's orientation is propagated and, for closed shells, its signed volume decides inward vs. outward; duplicate faces are grouped by canonical identity; and self-intersections are found via a spatial-grid broad phase followed by a robust triangle-triangle test, always excluding ordinary shared-edge adjacency.

Limitations

What's next: STL Repair

Problems found? STL Repair — a separate MeshWrench tool — will fix holes, flip inverted normals, weld gaps and resolve non-manifold geometry, locally in your browser. It isn't built yet; this checker never claims to repair anything, and never links to a route that doesn't exist.

Frequently asked questions

Is my STL file uploaded when I use this checker?

No. Your file is read and analyzed entirely in your browser, inside a background Web Worker. It is never sent to a server — you can confirm this yourself by watching your browser's network tab while a file loads.

Does a "watertight" result guarantee my model will print successfully?

No. Watertight means the surface is closed, manifold, consistently wound and free of duplicate/self-intersecting triangles — a strict topology check. It says nothing about wall thickness, physical scale, your printer's limits, support requirements or manufacturing tolerances.

My model failed a check — can it still be sliced?

Often, yes. Many slicers auto-repair minor issues like small gaps or duplicate faces. A failing result here is a precise, honest report of what this checker found, not a claim that your file is unusable.

Does this tool fix the problems it finds?

Not yet. This is a diagnostic tool only — it never modifies, repairs, welds, reorients or exports a changed mesh. STL Repair, a separate tool, will handle fixing what this checker finds.

Why does vertex matching use exact positions instead of a tolerance?

Welding "close enough" vertices would change the model's topology and could hide a real gap between two surfaces. This checker reports vertices as identical only when their coordinates match exactly, consistent with how every MeshWrench converter already treats vertex identity.

What happens with a very large or complex model?

Every check has an explicit safety limit. If a check can't be completed safely within those limits — most commonly self-intersection testing on a very complex mesh — it's honestly reported as "not checked," never silently reported as passing.