When a Broken Mesh Is Worth Repairing, and When You Are Just Making It Worse

Published 2026-09-23

Every repair tool answers the question “is this mesh fixed” with a tick. Almost none of them answer the question you actually have, which is whether the thing that came out is still the thing you wanted.

This is about the point where repairing stops helping. It is a judgement call, but it is not a vague one.

Who is answering this question, and why that matters

Before the technical part, one observation about the advice. On 2026-09-15 we asked an AI search engine when a 3D model is too broken to repair and looked at what it cited. Of the nine sources behind the answer, seven were landing pages for repair tools and one was a page for an AI model generator. Exactly one was editorial, a Prusa knowledge base article.

That is not a conspiracy, it is an incentive. A page that exists to get you to upload a file to a repair service has no reason to describe the point at which you should stop uploading files. The result is that “can this be repaired” is overwhelmingly answered by parties for whom the answer is always yes.

The academic literature is more candid, and less read. The standard survey of the field, Attene, Campen and Kobbelt’s Polygon Mesh Repairing: An Application Perspective, draws the line that matters: local repair algorithms are viable for sparsely scattered defects, and stop being viable when defects are dense enough that the repair itself becomes ambiguous.

What does “beyond repair” actually mean?

It means a repair that succeeds technically and fails mechanically. Not a file the software refuses to open, but one it fixes into something you cannot use.

This is the distinction that the watertight tick hides. Watertight means the surface is closed, with every edge shared by exactly two faces and no gaps, so the mesh encloses a definite volume. It is a topological fact, and it is binary. It says nothing whatsoever about whether that volume is the right shape.

So a repair has two outcomes that both read as success:

  • The mesh is closed and the shape is intact. This is what you wanted.
  • The mesh is closed and the shape has been altered to close it. This also shows a tick.

Only the second one is interesting, because nothing on screen distinguishes it from the first.

Why can a repaired model pass every check and still be wrong?

Because closing a surface always requires inventing geometry, and the algorithm has to guess what should be there. When it guesses wrong the result is still closed.

We measured how large that error can get. Taking one sphere that was closed by construction, damaging it four ways at once, and running four standard repairs in every possible order gives a clean answer, because the correct volume is known exactly:

Repair sequenceOpen edgesShellsClosedVolume error
weld, decimate, fill01Yes0.110 per cent
weld, fill, decimate231No0.187 per cent
fill, weld, decimate191No0.308 per cent
decimate first, any order50119No1.217 per cent

Read the last row against the first. Both are the same four operations on the same mesh. One is eleven times further from the correct answer than the other, and the only difference is the order they ran in.

There were three rows in the full run that produced a single closed shell with zero open edges and still sat at the bad end of that volume column. That is the failure this article is about: a green tick on a worse copy of the object.

Full results, method and limitations: Which repair to run first when a mesh is broken in several ways at once. The raw output is published as JSON, produced by scripts/measure-repair-order.py.

Which defects are local, and which are systemic?

Local defects sit in one place and have an obvious correct answer. Systemic defects are spread across the surface, or have no correct answer at all, and those are the ones that turn repair into guesswork.

Usually local, and worth repairing:

  • A small number of holes with clean boundary loops
  • Flipped normals, so that some faces point inward
  • Duplicate vertices where two triangles should share a corner and do not, which is the situation the vertex welding tolerance question is about
  • Isolated non-manifold edges, meaning edges shared by three or more faces, covered in more depth in what non-manifold means and how to fix it
  • A few stray faces with no area

Usually systemic, and a sign to stop:

  • Zero thickness sheets: surfaces with no inside, so nothing can be said about which side is solid. The survey above singles these out, because a repair algorithm has to be able to tell a triangle bounding a solid from a triangle that is just a sheet, and only the former can be fixed without distortion.
  • A model that is mostly missing, such as a scan of one face of an object. Global repair works by estimating the solid volume, and with most of the volume absent that estimate has nothing to work from.
  • Intersecting geometry everywhere, from parts that were placed together but never combined into one solid.
  • Defects dense enough that fixing one creates another.

What does auto repair change without telling you?

It fills things. Almost every documented failure is the same shape: the algorithm treats an intentional opening as damage and closes it.

These are reproducible reports rather than our own testing, and each one is a public issue you can read:

  • A bore filled solid. A solder spool with a central bore hole imported fine and sliced with the bore filled to the height of the plate. The cause was a fillet that overlapped the cylinder boundary during export, which the repair read as a corrupted void and closed. (PrusaSlicer issue 10007)
  • A threaded fitting packed with plastic. The model looked right in preparation and showed a plugged hole in the sliced preview, because uncapped thread crests were stitched closed and the internal cavity went with them. (Cura issue 19223)
  • Architectural openings closed. Windows and holes filled in during slicing of a building model. (Cura issue 7506)
  • A helical screw sliced wrong. (PrusaSlicer issue 2579)

Two categories of model should never see a blind auto repair:

Print in place assemblies. Hinges, gears and latches rely on clearance gaps, often a few tenths of a millimetre. A gap closing routine cannot distinguish a deliberate clearance from a crack, so it welds the moving parts into one solid piece. The model still prints. It just does not move.

Anything with a mechanical fit. Repair algorithms close gaps by pulling vertices together, which shifts hole centres and changes radii. A press fit or a thread that depended on a tenth of a millimetre does not survive that, and nothing reports it, because the mesh is closed and valid afterwards.

Does where the model came from decide the answer?

Largely, yes. Provenance predicts the defect profile better than anything you can see in a viewport, and the defect profile decides the strategy.

Where it came fromWhat tends to be wrongWhat usually works
CAD exportNarrow cracks at patch boundaries, a few flipped normals, duplicate vertices from tessellationLocal repair. The underlying design was a solid, so the correct answer exists and is close by
Photogrammetry or scanningLarge open regions, surface noise, floating fragmentsDecimate, then regenerate. The raw capture is not a solid and no amount of local patching makes it one
Image to 3D generationVery dense triangles, poor edge flow, internal shells, arbitrary scaleRegenerate via retopology. Local repair on a two million triangle generated mesh is a dead end
Print in place assemblyNothing, usually. The clearances are intentionalNeither. Bypass auto repair entirely

The generated mesh row is the one most likely to be mishandled, because the output looks finished. A model that came out of an image to 3D generator has no topology in the sense a modeller means: the triangles were produced to approximate a surface, not to describe one, so there is no edge flow to preserve and nothing local to repair. Wrapping new geometry over it with a retopology tool is the operation that matches the problem, which is a different job from repair and is covered in what retopology is and when you need it.

CAD is the opposite case, and the one where global repair does the damage. Voxelising a mechanical part to make it watertight destroys exactly what made it valuable: the sharp edges, the exact hole diameters, the chamfers.

When should you stop?

Three rules, in the order they usually apply.

One pass, then judge. Run the automatic repair once. Re-open the result and compare volume, bounding box and the sliced preview against the original. If the macro shape is intact, accept it. If a hole closed, a part merged or a wall vanished, discard it entirely rather than trying to repair the repair.

Stop when repair would move something that must not move. This is the rule that matters for mechanical parts. If closing the defect requires touching a toleranced feature, no repair tool can help, because the thing you need preserved is the thing it has to change.

Stop when rebuilding is faster. If manually bridging holes and welding vertices is going to take longer than measuring the object and drawing it again in CAD, draw it again. A rebuilt parametric part is exact and rescalable; a hand stitched mesh is neither, and the time already spent is not a reason to spend more.

One thing that is not on this list: the error count. A mesh reporting four hundred errors that are all duplicate vertices is a five second fix. A mesh reporting two errors that are both zero thickness sheets through the middle of the part may be unfixable. Count is not severity.

Before you decide anything

Check the scale first. It sounds unrelated, but repair settings are distances, and a merge tolerance that is sensible at the model’s real size is destructive at a thousandth of it. That ordering question is worked through in how to check a model you did not make, and the general repair walkthrough is in how to repair a broken STL.

If you want to look at a file before committing to either path, our online STL viewer reports watertightness, hole count, non-manifold edges, shell count and scale in the browser, without uploading the file anywhere.

Frequently asked questions

When is a 3D model too broken to repair?

When the defects are systemic rather than local, or when closing them would move geometry you need to stay put. A handful of holes, some flipped normals and a few duplicate vertices on an otherwise sound mesh is a repair job. A mesh whose defects are spread across the whole surface, or one where the repair has to invent a surface it cannot infer, is a rebuild job. The dividing line is not how many errors the tool reports, it is whether the shape the repair produces is still the shape you wanted.

Can automatic mesh repair make a model worse?

Yes, and the worst outcomes look like successes. In our own measurement, three repair sequences produced a mesh with one shell and zero open edges that was 1.22 per cent off the correct volume, against 0.11 per cent for the sequences that worked. Every status readout said the mesh was fixed. Documented cases go further: bore holes filled solid, internal threads packed with plastic, print in place mechanisms welded into one piece.

How do I know if a repair actually worked?

Compare the volume and the bounding box before and after, and look at the sliced preview layer by layer. Watertight is a yes or no reading and it cannot tell you whether the shape survived. A repair that closes every hole and quietly fills a bore passes the watertight check and fails the part. If the volume moved by more than a fraction of a per cent and you did not expect it to, something was filled or deleted.

Should I repair or remodel a downloaded 3D model?

Repair if the model came from CAD and the damage looks like export noise: narrow cracks along patch boundaries, a few inverted faces, duplicate vertices. Rebuild if the part has mechanical fits, threads or clearance gaps, because repair algorithms move vertices to close gaps and that shifts hole centres and diameters. For generated or scanned meshes, neither answer is quite right: those usually need regeneration through retopology rather than either local repair or a manual rebuild.

Why does my hole disappear after slicing?

Because the slicer repaired it. A hole is only a hole if the surface around it is closed; if the wall of the bore has a crack or a zero thickness sheet, the repair step cannot tell an intended opening from a missing wall, and it closes what looks like damage. This is a documented and reproducible failure, including a PrusaSlicer report where a solder spool arrived with its central bore filled to the height of the plate.

Which repair should I run first?

Weld before anything else, then decimate, then fill holes. We tested four standard repairs in all twenty four possible orders and only four orders closed the mesh. Filling before welding is the intuitive move and the most damaging one: it treats unwelded seams as holes and stitches over them, producing hundreds of non-manifold edges the mesh did not start with.