Mesh repair/Topology
Mesh topology and manifold check (local)
Check manifold and watertight topology locally with half-edge traversal, vertex-fan and self-intersection analysis. The Worker parses STL, OBJ, PLY, 3MF, GLB, or a self-contained glTF and reports shells, boundary loops, Euler characteristic, genus, non-manifold edges, bow-tie vertices and intersecting triangle pairs without uploading the file.
Topology report
No uploadTopology report
Half-edge traversal, edge incidence, a vertex-fan check, and a triangle-pair self-intersection test up to 200,000 triangles. Boundary, hole filling and signed volume are separate checks.
Drop a mesh to inspect
STL, OBJ, PLY, 3MF, GLB, or a self-contained glTF. The Worker checks half-edge shells, winding, vertex fans and triangle self-intersections.
Drop a mesh to inspect
STL, OBJ, PLY, 3MF, GLB, or a self-contained glTF. The Worker checks half-edge shells, winding, vertex fans and triangle self-intersections.
Choose a fileMax file size: 500 MB · No upload
No upload · File.slice() / ArrayBuffer → Worker → edge topology report.
How it works
- 1
Drop a mesh file in any supported format.
- 2
The Worker parses the file and builds a half-edge incidence graph with twins for shared edges.
- 3
Boundary edges are counted once, non-manifold edges more than twice, and winding consistency is checked.
- 4
Half-edge traversal groups the surface into edge-connected shells, counts boundary loops and vertex fans, and computes the Euler characteristic and genus.
- 5
If the mesh is under the self-intersection cap, a triangle BVH tests non-adjacent pairs, including coplanar overlaps.
- 6
Read the topology report locally. No file is uploaded.
What the numbers mean
A manifold edge belongs to exactly two triangles. This tool checks half-edge incidence, vertex fans, shells, boundary loops, Euler characteristic and genus, plus triangle-pair self-intersections. Self-intersection repair is separate work.
Watertight means no boundary edges and no non-manifold edges. A closed mesh can still have self-intersections or thin walls.
Half-edge analysis is capped at 2,000,000 triangles and self-intersection analysis at 200,000 triangles. ASCII STL is welded before the check so its triangle soup has meaningful incidence.
A bow-tie vertex has two or more surface fans connected only at one point. Every incident edge can still have two faces, so an edge-only check misses it. Half-edge fan traversal counts these vertices even when non-manifold edges are present.
A shell is one edge-connected triangle component. A closed shell has no boundary half-edges; an open shell is bordered by boundary loops. Euler characteristic is V − E + F. Genus is derived as (2 − b − χ) / 2 and shown only when every shell is consistently oriented, manifold at edges and vertices, free of degenerate triangles, and has unambiguous boundary loops. Multiple shells report the summed genus.
The self-intersection test compares non-adjacent triangle pairs under a BVH and reports both intersecting pairs and the number of unique triangles involved. It detects coplanar overlaps; pairs that share a vertex or a coincident position are treated as adjacent contacts. This is detection, not repair.
Printing notes
- A watertight report is a topology signal, not a slicing guarantee; check thin walls and overhangs separately.
- Non-manifold edges often need a repair operation before slicing.
- Self-intersections can create ambiguous inside/outside regions; fix them in CAD or with a boolean operation before printing.
- Use clean-mesh to remove degenerate and duplicate triangles, then re-run this check.
- A genus of 0 with one shell usually means a simple solid; holes through the part add handles and raise the genus.
Questions
References
- · ISO/ASTM 52900
- · Mesh topology: boundary, non-manifold edges and self-intersections