STL Viewer Online

STL Repair Online: fix normals and duplicates, check for holes

STL repair in your browser: unify flipped normals, merge duplicate vertices, drop degenerate triangles, and get an honest report of open edges before and after. Nothing is uploaded, and the tool tells you what it could not fix.

Drop an STL to analyse and repair it

You get a before and after report; nothing is changed until you download.

Accepted: STL, OBJ, GLB, GLTF, 3MF, PLY · The file is read in your browser and never uploaded.

What "repair" means here, and what it does not

Most STL problems fall into four groups. Flipped normals: some triangles wound the wrong way, so the slicer thinks the inside is outside and produces a hollow or missing region. Duplicate vertices: the same corner stored several times with the same or nearly the same coordinates, which makes edge checks fail and files bloated. Degenerate triangles: triangles with zero area, two identical corners or all three on a line, which some slicers reject. And open edges: places where an edge belongs to only one triangle, meaning there is a hole or a gap.

This tool fixes the first three. It merges vertices within a small tolerance, removes degenerate triangles, walks the mesh to make every neighbouring triangle agree on which side is out, and recomputes normals. Then it counts open edges again and shows you both numbers. It does not fill holes. Hole filling means inventing geometry the file does not contain, and doing it badly (a flat cap across a curved opening, or a fill that bridges the wrong edges) produces a print that looks right in the viewer and comes out wrong. When the after count is above zero, the report says so and you know what to do next.

Like every tool on this site, the work happens in your browser. The file is read from your device, parsed in memory and drawn with WebGL; no copy is sent anywhere. Open the network panel of your browser's developer tools while you load a model and you will see no upload. Close the tab and the model is gone.

Worked example: a downloaded miniature that sliced with a hollow arm

A 28 mm miniature from a sharing site, knight.stl, sliced with one arm missing in the preview. Drop it here.

Before
  triangles        184,220
  vertices         92,113 (after merge: 91,904)
  duplicates       209 vertices merged
  degenerate       6 triangles removed
  flipped normals  412 triangles reoriented
  open edges       0

After
  triangles        184,214
  vertices         91,904
  watertight       yes

What happened. The arm had been mirrored in the modelling tool and exported without flipping its faces back, so 412 triangles pointed inwards; the slicer treated the arm as a cavity. Unifying the normals fixes that. The 209 duplicates came from the mirror seam, where the tool wrote the same points twice; merging them lets the orientation walk cross the seam. Six degenerate triangles were slivers left by a boolean union. Open edges were zero before and after, so no hole filling was needed and the repaired file is watertight.

Click Download repaired STL, re-slice, and the arm is solid. Had the after report shown, say, open edges 38, the right move is a mesh editor with a hole-fill tool (Blender's 3D print add-on, Meshmixer, Microsoft 3D Builder, PrusaSlicer's Netfabb service on Windows), and you now know the file has 38 edges to close rather than thousands.

Reading the report

  • Open edges: 0, watertight: yes. Print it.
  • Open edges: a small number (under 50). Usually one or two small holes. Slicers often bridge these silently, but check the sliced preview at that spot.
  • Open edges: hundreds or thousands. A scan, a model exported as separate surfaces, or a shell that was never closed. Needs a mesh editor.
  • Non-manifold edges. An edge shared by three or more triangles, typical of internal walls left over from a boolean. Reported, not fixed.
  • Flipped normals: 0. Nothing to reorient; if the model still looks inside-out everywhere, the whole shell was inverted and the tool inverts it as one piece.

For a plain measurement without repair, the dimensions and volume page gives the same counts read-only.

Limitations

  • No hole filling. Open edges are counted and reported, never bridged.
  • No intersection or overlap fixing. Two shells that pass through each other stay that way; most slicers union them, but the volume shown will double count the overlap.
  • Orientation is unified per connected shell. If a shell has no consistent orientation at all (a Mobius-like mess), the tool picks the majority and reports it.
  • Vertex merging uses a fixed small tolerance. Points a tenth of a millimetre apart are separate corners, on purpose, because merging them would change the shape.
  • Output is binary STL. Use the binary to ASCII page if you need text.

Last updated 2026-09-16. Runs in your browser; nothing is uploaded.

Frequently asked questions

Can this STL repair tool fix holes?

No. It counts open edges before and after and tells you how many remain, but it does not invent geometry to close them. For hole filling use a mesh editor; the count tells you how much work is involved.

What does "unify normals" do?

It makes every triangle in a shell face the same way (outwards). Slicers rely on this to tell inside from outside; a flipped region prints hollow or vanishes.

Is the repaired file the same shape?

Yes, apart from removing zero-area triangles and merging vertices that are at practically the same position. No surface is moved or added.

Why does my slicer still complain after repair?

Most likely open edges or self-intersections remain; both are listed in the report. Those need a mesh editor. The tool is honest about what it could not fix rather than hiding it.

Is the STL uploaded for repair?

No. Analysis and repair run in your browser; nothing leaves your device.

More 3D file tools