STL Mesh

STL CHECKER · FREE · NO UPLOAD

STL Repair — Find Out Why Your Model Won't Slice

Drop an .stl to check watertightness, holes, non-manifold edges and degenerate triangles — then auto-repair holes and orientation, or run a free basic clean-up. Nothing uploaded. If you only need to look at the mesh, the homepage STL viewer opens the same file in this browser.

What it does: checks an STL for open (boundary) edges, non-manifold edges, degenerate triangles, and duplicate vertices, then runs a basic clean-up that welds near-duplicate vertices, drops zero-area triangles, and recomputes vertex normals. Auto-repair goes further: it closes holes and turns every shell outward.

Why you need it:check a mesh before slicing so PrusaSlicer, Bambu Studio or Cura don't fail or silently auto-repair the wrong thing.

How it works:vertices closer than a millionth of a unit are welded, then an undirected edge map counts how many triangles share each edge. One triangle means a hole rim. More than two means a non-manifold edge. Auto-repair then triangulates each hole's rim and shows the added triangles in pink before you download. All of this stays in this tab.

The model preview appears here after analysis.

Health report

Drop an STL to see whether it is watertight, how many boundary and non-manifold edges it has, and whether duplicate vertices or degenerate triangles are inflating the file.

Previewing an auto-repair is free. Downloading the auto-repaired file: your first one is free, then Pro. Basic clean-up (weld vertices, drop zero-area triangles, recompute normals) is always free.

Conversion specs

Input formatSTL only (binary or ASCII). Other extensions are rejected.
Output formatBinary STL, downloaded as name-repaired.stl after you run the repair
ChecksBoundary edges (holes), non-manifold edges, degenerate triangles, duplicate vertices, triangle count
Basic clean-upWeld vertices within 1e-6, drop degenerate triangles, recompute vertex normals. Free.
Auto-repairRemoves duplicate faces, makes triangle winding consistent, triangulates each closed hole rim (ear clipping on its best-fit plane, or a fan from the centroid when the rim is warped), and flips shells with negative volume. Added triangles are highlighted.
Non-manifold edgesCounted. Neither repair deletes or splits the extra triangles — that needs a decision only you can make.
Flipped shellsAuto-repair flips any closed shell whose signed volume is negative. Basic clean-up leaves winding as it is.
Self-intersectionsNot detected. Triangles that pass through each other without sharing an edge are invisible to the report.
ProcessingIn this browser tab: an edge-count map plus three.js mergeVertices. No upload.
File size limitDevice memory only. No server cap. Very large files can stall the tab.
CostChecking, preview and basic clean-up: free, no account. Auto-repaired download: first one free per browser, then Pro

How to read the health report

HOW MANY TRIANGLES SHARE THIS EDGE?Manifold edgeexactly 2 — every edge, everywhere✓ printableBoundary edgeonly 1 — the rim of a holenothing onthis side⚠ breaks slicingNon-manifold edge3 or more — inside is ambiguous⚠ breaks slicing
Watertight means every edge is the left case. The checker counts the other two for you.
  • Watertight = both problem counts are zero. Every counted edge belongs to exactly two triangles. That is the test this page uses. It is the usual meaning of a closed shell, with the limits in the table above: no self-intersection test, no outward-normal test.
  • Boundary edges are the perimeter of holes. A few dozen usually means one small gap; thousands mean whole surfaces are missing (common with meshes exported from CAD surfaces or ripped from games). An open square made of two triangles has four boundary edges. Welding will not turn that patch into a solid.
  • Non-manifold edges are shared by three or more triangles — an internal wall, or three patches glued along one line. Slicers disagree on how to interpret them, so results vary by tool. The basic repair does not target these edges.
  • Degenerate triangles have no area: either a repeated corner, or three distinct corners that are colinear. They add nothing to the shape. The basic repair deletes them. Near-zero triangles with three distinct corners are still included in the edge count until you run the repair.
  • Duplicate vertices are an STL-format artifact, not a defect in your model. The report compares the raw corner count with the count after welding. The download button stays off until you run the repair; the file you get is binary even if the original was ASCII.

Model looks fine but imports at the wrong size? That's a units problem, not damage — see the STL format guide. Need to convert instead of repair? Start at the viewer.

How to Fix an STL File

People looking up how to fix an STL file usually have a slicer error and three different programs that all claim they can fix it. They do not do the same job. Read the health report first, then pick the route that matches the row that failed. Running every fixer in a row, and hoping, is how vents get sealed.

Fix it in the browser

Drop the .stl on the checker above. The preview needs WebGL; if the browser cannot create a graphics context, the page says so and the report does not run. When the report appears, look at boundary edges, non-manifold edges, and degenerate triangles before you touch anything.

Run basic repair welds corners that sit within a millionth of a unit of each other, deletes zero-area triangles, and recomputes vertex normals for the shaded preview. Then Download repaired STL writes a binary file with -repaired in the name. The health report refreshes as soon as the repair finishes: Duplicate vertices reads welded and degenerate triangles should read zero. (If you drop the downloaded file back in, the duplicate count comes back, because STL writes every corner once per triangle. That is normal.) If boundary edges are still above zero, the clean-up has done all it can; Auto-repair is the stronger pass that closes them. Neither button deletes an internal wall.

Use this path when the model is probably fine and the file is noisy: an export that stored every corner three times, a handful of collapsed triangles, or a normal field you do not trust for shading. The hole and non-manifold counts are already taken after welding, so you can read them before you press the button.

Fix it in the slicer

PrusaSlicer, Bambu Studio, and OrcaSlicer can repair the mesh when a part fails their check, either on import or from the part menu. They replace their copy of the model. That is often enough to get a print out tonight. It is also where a silent fill closes a drain, a screw clearance, or the gap between two parts you meant to keep separate. Walk the layer preview before you trust a long job. If the repaired part is wrong, undo and fix the mesh in an editor instead of fighting the slice.

Cura's mesh-fix settings — stitching, union overlapping volumes, and the experimental hole options — change how that slice is computed, and they do not hand you a cleaned STL you can send to someone else.

Fix it in desktop software

When the report shows holes or non-manifold edges, you need a program that is allowed to invent or delete surface. Blender is the free one most people already have. Merge by Distance is the same idea as the weld on this page. Select All by Trait → Non Manifold lights up the bad edges and the open rims. Fill closes a boundary loop you have selected. Recalculate Outside flips a shell whose triangles point inward. Auto-repair on this page does the fill and the flip without the selection step; it leaves non-manifold edges to you.

Meshmixer's Inspector marks holes, non-manifold spots, and loose shells, and it will fill if you ask it to. On Windows, 3D Builder still prompts to repair many broken STLs and, like auto-repair here, it rewrites holes shut. Use either when you have looked at the opening and you want it closed. Do not use them as a reflex on a model full of intentional holes.

What Are Non-Manifold Edges?

In a solid that a slicer can trust, each edge is the hinge between exactly two triangles. A non-manifold edge has three or more. The checker counts that case after it has welded corners closer than a millionth of a unit, so the number is about shared corners, not about STL writing the same point three times. The diagram above is the whole test: two triangles, one triangle, or three-plus.

Three common sources show up in files people actually slice.

  • Boolean leftovers.A union that did not delete the wall where two solids overlapped leaves an internal fin. Three triangles meet on that fin's edges. The outside of the part can look perfect in a shaded view. The extra face is inside.
  • Scan meshes. Photogrammetry and handheld scanners overlap patches. Where three patches share one edge, you get a non-manifold edge. Where the patches almost meet but the vertices are a tenth of a millimeter apart, you do not. That crack is a pair of boundary edges, and the weld on this page will not pull it shut. The tolerance is numerical noise, not a gap you can see.
  • CAD export. A multi-body part exported as one STL often keeps coincident faces from parts that were touching. A surface body exported next to a solid does the same. The file is a pile of triangles with no memory that those faces were supposed to be one wall.

The slicer has to decide which side of each triangle is plastic. With two triangles per edge, the answer is a closed volume. With three, the answer depends on the slicer. You get a failed slice, a missing wall, or infill in a pocket that should have been empty. Two triangles that cut through each other without sharing an edge are a separate problem — a self-intersection — and this report does not see them. A bowtie, where two triangles touch only at a vertex, is a non-manifold vertex. This checker does not count vertices. Only edges.

Running the basic repair does not contain a step that removes non-manifold edges.

How to Make an STL Watertight

Slicer errors say "not manifold" or "not watertight" and then stop. Making an STL watertight means getting to a shell where every edge has exactly two triangles, and then confirming the slicer still agrees. On this page those are not the same button.

What a watertight STL means here

The Watertight row turns to Yes only when boundary edges and non-manifold edges are both zero. That matches the sentence slicers use: the mesh encloses a volume, so a slice plane hits an even number of walls and the inside is unambiguous. It does not mean the part has thick enough walls, that nothing intersects itself, or that the triangles face outward. An inside-out box with twelve intact triangles is watertight by this count and still has normals pointing the wrong way. This tool does not flip them. Blender's Recalculate Outside does. A slicer may also flip them while repairing, which is another reason to read the preview.

Work in this order.

  1. Check the original. Write down the two counts. A huge duplicate-vertex number is normal for STL and is not, by itself, a hole.
  2. Run the basic repair and check again. Degenerate triangles should be gone. If the boundary count changed, a zero-area triangle was part of that rim. If it did not fall, the opening is real.
  3. Boundary edges still above zero means a hole or an open surface. Run Auto-repair and look at the pink patches before downloading — or close the loop in the slicer or in Blender if you want to choose each opening by hand.
  4. Non-manifold edges still above zero means an extra face along an edge. Delete or separate that face in a desktop editor. The browser repair will not.
  5. Bring the file back. Watertight should read Yes, and both counts should read zero. Then slice it. A self-intersection can pass this test and still confuse a slicer.

Repair STL Online vs. Desktop Software

Repair STL online, in the way this site means it, is the checker at the top of the page. The file stays on the device. There is no install and no account. You get a report and, if you press a button, a binary STL with zero-area triangles removed and normals rewritten — or, with auto-repair, with its holes closed and every shell facing outward. Fix STL online with a site that uploads the model to a queue is a different product. This one has no upload request to send.

An STL repair tool on the desktop — Blender, Meshmixer, 3D Builder, or the repair command inside a slicer — is what you open when the report says the model is actually open or non-manifold. Those programs can fill holes and delete extra faces. They also take longer to set up, and some of the one-click repairs inside slicers are cloud services that upload the part to the vendor. Read that prompt. If the button says the model will be sent away for fixing, that is not the same privacy deal as this page. We do not run a cloud fixer you can fall back to.

Choose the browser when you need to know what is wrong, when the damage is duplicate vertices or degenerate triangles, or when you are not willing to upload a client's model. Choose the desktop when you must remove an internal wall, untangle self-intersections, or repair a large STL file that will not fit comfortably in a browser tab. If the detail has to stay, use the desktop tool and more RAM.

What Is an STL Fixer?

STL fixer is the name people use when they do not want a lecture. They want one button, a new file, and a slicer that stops complaining. Auto-repair on this page is that kind of control: it closes holes and turns every shell outward, and the basic clean-up welds near-duplicate vertices and deletes degenerate triangles. Neither is a general remodeler.

A fixer that fills every open rim will also cap an opening you meant to leave open, such as a surface modelled as a single sheet. That is why the triangles auto-repair adds are drawn in pink: orbit the preview and look at them before you download. If you searched for an STL fixer because a marketplace or a slicer rejected the file, start with the four counts. Duplicate vertices and degenerate triangles are safe to clean up blind. Boundary edges are a decision, and the preview lets you make it. Non-manifold edges stay yours to resolve in a desktop editor.

Scan meshes that arrive as PLY have to become STL before this checker will open them — the PLY to STL converter does that copy, and it does not repair the scan.

FAQ

Is my STL uploaded to repair it?+

No. Nothing is sent to a server; the file is read and processed in this tab. The checker parses the STL, builds an edge map and runs the repair with JavaScript in this tab. There is no upload endpoint on this site.

What does "watertight" mean and why do slicers care?+

A watertight mesh, in the sense slicers use the word, encloses a volume: every edge is shared by exactly two triangles. Slicers decide where plastic goes by cutting that volume. A hole or an edge shared by three or more triangles makes inside and outside ambiguous, which shows up as missing walls, extra infill, or a failed slice. On this page the Watertight row is that edge test only. It does not look for self-intersections, and it does not check whether the shell is inside out.

What exactly does the basic repair fix?+

Vertices closer than one millionth of a unit are welded, zero-area triangles are deleted, and vertex normals are recomputed for the preview. The download is a binary STL whose facet normals follow each triangle; winding is not flipped, and welding does not shrink the file because STL writes every corner once per triangle. Holes and non-manifold edges are left alone.

Can this tool fill holes in my model?+

Yes, with auto-repair. It triangulates the rim of each closed hole and highlights the new triangles in pink so you can check them before downloading. A fill can still cap an opening you meant to keep, such as an intentionally open surface, so look at the pink patches first. Openings too large or tangled to close safely are left open and reported. The basic clean-up never fills holes.

My slicer says the model has errors but prints fine. Should I care?+

Sometimes. Modern slicers auto-repair silently, so small defects often print fine. Problems appear when defects are large (missing surfaces), when auto-repair guesses wrong (sealed vents, fused gaps), or when you export for someone else whose toolchain is stricter. A clean mesh removes the guesswork.

Why does my STL have so many duplicate vertices?+

That is the STL format itself: it stores raw triangles with no shared-vertex list, so every vertex is written once per triangle that touches it. Welding restores the shared topology — same shape, cleaner data, and it is what makes the edge analysis meaningful.

Is STL repair free?+

Checking a file, previewing an auto-repair, and the basic clean-up are free with no account. Downloading an auto-repaired file is free once per browser; after that it needs Pro ($9.99 a month or $79 a year). The limit on file size is your computer: the file has to fit in the browser tab.

Can I repair a large STL file?+

There is no server size cap, because the file never leaves this tab. The parser, the edge map, and the preview all run on the main thread, so a scan of a few hundred megabytes can stall or crash the tab, especially on a phone. If the mesh is heavy only because it has more triangles than the print needs, reduce it first; if the detail has to stay, use a desktop program — the basic repair still will not fill holes.

Do you offer a repair service?+

No. There is no manual repair service, no modeling desk, and no print bureau. Nobody here opens your file or emails a fixed STL back. If the basic repair is not enough, the next step is software you run yourself. The contact page is for problems with this site, not for fixing models.

Once the file is as clean as this checker can make it, reduce the STL if it is denser than the print needs, or scale and orient it in the STL editor. For units, ASCII versus binary, and why STL has no shared vertices, see what an STL file is. Slicing itself is a separate step — the STL to G-code guide covers why a mesh is not toolpaths.

🧊
Written by Casey Marlin · Last updated
This update: edge analysis covered by scripts/test-repair.mjs