Why it won't print

What Automatic Mesh Repair Actually Does (And When It Eats Your Model)

Auto-repair fixes meshes by deleting what it can't classify. How the algorithms work, when they eat geometry, and the 30-second check that protects your model.

Mikael4 min read

On this page
  1. What repair does, in order
  2. Why "repaired" can mean "smaller"
  3. The 30-second safety ritual
  4. What repair can never do
  5. How PHORM does it, for the curious
  6. Frequently asked questions

Auto-repair feels like magic: 1,328 errors in, zero errors out, one click. It's worth understanding what actually happened in between, because the same mechanism that fixes your model is the one that occasionally eats it.

Short version: repair algorithms fix a mesh by making executive decisions about ambiguous geometry — stitching, capping, or deleting it. On lightly damaged models the decisions are safe. On heavily damaged ones, "zero errors" can mean "the ambiguous half of your model is gone".

What repair does, in order

A typical repair pass runs a pipeline, cheapest surgery first:

  1. Deduplicate. Remove identical triangles and merge vertices that sit within a tolerance of each other. Free wins; nothing visible changes.
  2. Delete degenerates. Zero-area triangles contribute nothing and break math downstream; out they go.
  3. Stitch. Edges that almost touch get welded. This closes the hairline cracks that surface reconstruction leaves between patches.
  4. Fill holes. Open boundaries get capped with new triangles. Small round holes cap cleanly; large irregular openings get a flat lid that may look nothing like the missing surface.
  5. Fix orientation. Normals get recalculated so every face agrees on which side is outside.
  6. Resolve the unclassifiable. Whatever still can't be assigned a clean inside and outside — intersecting shells, walls inside walls, floating fragments — gets discarded or rebuilt. This is where models lose geometry.

Heavier tools add a nuclear option: full reconstruction, where the algorithm rebuilds a brand-new watertight surface around your mesh (projection or voxel-based) instead of patching the old one. Everything is guaranteed closed afterward, and two side effects follow: triangle count explodes, and dimensions can drift by a fraction of a millimeter as the new surface wraps the old one. On a decorative model neither matters. On a part with tolerances, the drift is worth checking; see what those fractions do to fits →.

Why "repaired" can mean "smaller"

Step 6 is the honest confession of every repair engine. An algorithm cannot know that this intersecting surface is a deliberately overlapped handle and that one is reconstruction garbage. It resolves ambiguity by rules, and the rules err toward deletion, because a missing wall at least produces a manifold result. The more ambiguous the mesh, the more gets deleted: fix a lightly broken model and lose nothing; fix a disaster and lose two walls, with a green checkmark on top.

This is not a reason to avoid auto-repair. It's a reason to verify after it.

The 30-second safety ritual

After any automatic fix: reslice, scroll the preview top to bottom watching perimeters, and compare the object's volume or bounding box before and after if your tools show it. A big volume drop means the repair ate something. If it did, try a different engine (they disagree exactly where the ambiguity is), or open the mesh in Blender and fix the specific region by hand. The tool-by-tool options are in the free repair tools comparison →.

What repair can never do

Three walls it will always hit. It can't invent unseen geometry: a scan with no underside gets a cap, not an underside. It can't add thickness: a zero-width surface isn't damaged, it's incomplete, and closing it produces a zero-volume solid; something must extrude it into a wall first — the numbers a wall needs are in minimum wall thickness →. And it can't read intent: it doesn't know your mug's handle hole is sacred. Good pipelines encode that last rule explicitly, preserving designed through-holes while closing everything else; the definition of "closed" they aim for is in what watertight means →.

How PHORM does it, for the curious

Our pipeline runs the same staged surgery with two additions. Every repair produces a report: warnings before and after, what was stitched, closed and removed, dimensions before and after, shells and through-holes counted, so step 6 is never silent. And full reconstruction is a labeled last resort rather than a default, because it trades sharpness for certainty. Every generated model goes through this before download, and outside files can take the same trip →. If the model came from a generator in the first place, the underlying disease is catalogued in why AI models fail to print →.

Frequently asked questions

Why did the error count go up after a repair?

The repair split and re-welded faces, and the new edges themselves sit at the tolerance boundary. Run the repair once more or switch engines; a count that oscillates means the mesh needs manual work.

Is repairing a file lossy like compressing a JPEG?

Not inherently. Steps 1–5 are conservative. Losses concentrate in step 6 and in full reconstruction, and both are avoidable or checkable.

Should I repair before or after scaling?

Repair first, scale second, then reslice. Scaling a broken mesh scales the breakage, and stitch tolerances behave better at the model's native size. Scaling itself has its own traps: how to scale an STL correctly →.

My slicer "repaired" the model silently on import. Can I trust it?

For decorative prints, usually. For functional parts, run the preview ritual anyway; silent repairs are exactly the ones nobody verified. What that silent pass actually changes, and why the file can differ from what you saw in memory: the slicer repaired your model without a word →.

Try it on your own idea

2 free models to start · no card needed. No 3D modeling skills required.