How to fix a non-manifold STL (and why your slicer rejects it)
A non-manifold STL is a mesh whose surface does not properly enclose a solid — it has open edges, edges shared by more than two triangles, or normals pointing the wrong way. Slicers need a closed volume to tell inside from outside. To fix a non-manifold STL, repair the topology: close the open edges, correct the flipped normals, and drop the degenerate triangles.
Your slicer opened the file. It showed the model. And then it refused to slice it — or worse, it sliced it into something hollow and shredded that you only noticed forty minutes into the print. The word it threw at you was non-manifold.
It is the most common reason a model that looks perfect on screen never becomes an object. And the fix is almost never complicated. It is just that most guides answer it by sending you to Blender — a full 3D suite, a two-hour tutorial, an afternoon gone — for a job that is mechanical and takes seconds.
What "non-manifold" actually means
A manifold mesh is one that could exist as a real solid object. Its surface is closed, it has a definite inside and a definite outside, and every edge is shared by exactly two triangles — no more, no fewer. Non-manifold means that rule is broken somewhere.
Think of the surface as the skin of a balloon. Blow it up and the skin encloses a volume: every point in space is either in the air inside, or out in the room. That is manifold. Now cut a hole in the balloon, or glue a third sheet of rubber along a seam where two already meet. Where is "inside" now? The question stops having an answer. That is a non-manifold mesh, and your slicer is the one being asked the question.
Why a non-manifold STL won't slice
A slicer works by intersecting your model with a stack of horizontal planes and filling what falls inside the resulting outlines. To do that it must know, for every point on every layer, whether that point is inside the solid or outside it. A closed surface answers that unambiguously. A surface with a hole in it does not, so the slicer either bails out with a non-manifold or not watertight error, or it guesses — and a guess is what produces missing walls, phantom infill, and models that print as a paper-thin shell.
This is also why the model can look completely fine in the preview. A renderer only has to draw the triangles facing the camera. It never asks what is inside them. Looking right and being printable are two different properties, and only one of them shows up on screen.
The three defects behind a non-manifold mesh
Nearly every non-manifold STL fails for one of these reasons — often several at once.
1. Open edges (holes)
An edge used by only one triangle instead of two. The surface has a gap. Sometimes the gap is a visible crater; far more often it is a single missing triangle you will never spot by eye. This is the defect that makes a mesh "not watertight", and it is the most common of the three by a wide margin.
2. Flipped or inverted normals
Each triangle carries a normal — a vector saying which side faces out. When some triangles are wound backwards, the mesh tells the slicer that outside is inside. The surface may be perfectly closed and still unprintable, because the slicer fills the room around your model instead of the model itself. In a slicer preview, inverted normals often show up as dark or hollow-looking patches.
3. Edges shared by more than two triangles
Two solids fused at a single edge, an internal wall left inside a hollow body, a face duplicated on top of itself. The geometry is closed but ambiguous: at that edge, the surface branches, and "inside" forks in two directions. These are the true non-manifold edges, and they are the hardest of the three to repair automatically.
There is a fourth troublemaker worth naming: degenerate triangles — faces with zero area, where two vertices sit in the same place. They are not non-manifold on their own, but they poison the edge-pairing that every repair algorithm depends on, so they get removed first.
| Defect | What you see | Auto-repairable? |
|---|---|---|
| Open edges | "Not watertight", missing walls, hollow print | Yes — holes get stitched shut |
| Flipped normals | Dark patches, inverted or inside-out infill | Yes — winding is made consistent |
| Degenerate triangles | Slicer warnings, erratic layer artefacts | Yes — zero-area faces are dropped |
| Edges with 3+ faces | Slices at some layer heights, not others | Sometimes — may need manual cleanup |
| Thin walls | Slices fine, prints as gaps or nothing | No — this is geometry, not topology |
How to fix a non-manifold STL in your browser
SliceReady runs the repair locally with WebAssembly. The file is never uploaded — there is no server to upload it to. It takes about as long as reading this sentence:
- Open SliceReady and drop your STL or 3MF onto the page.
- The mesh is analysed in a background thread: open edges, flipped normals and degenerate triangles are counted, and the damage is highlighted on the model.
- The repair runs. You get a plain-language ledger of exactly what changed — how many holes were closed, how many normals corrected, how many dead triangles removed.
- Download the repaired STL and take it back to your slicer.
What it will not do, and will not pretend to do. SliceReady repairs topology: open edges, flipped normals, degenerate triangles. It does not thicken thin walls, hollow a model, remesh it, or rescale it — those change the shape, and a tool that silently changes your shape is a tool you cannot trust.
If some damage survives the repair, the report says so in as many words: "Partially fixed — this mesh is still not watertight." A repair that failed does not get to call itself repaired.
How to check the repair actually worked
Do not take the tool's word for it — including ours. Reload the repaired STL in your slicer and look for the same three signals:
- Cura stops showing the "model is not watertight" warning, and the layer preview has solid, continuous walls.
- OrcaSlicer / Bambu Studio stop flagging the object as needing repair, and the sliced result has no gaps in the shell.
- Every slicer: scrub through the layer preview at half height. Missing walls, unexplained infill in mid-air, and a hollow-looking cross-section all mean something is still open.
If it slices clean, you are done. If it still complains, the mesh most likely has one of the harder faults — branching edges or self-intersecting geometry — and needs a desktop tool.
If you dropped in a 3MF: what survives, and what does not
A 3MF is a far richer container than an STL. It can carry units, several objects, placement transforms, materials and colour. An STL carries triangles and nothing else. So the trip from one to the other discards things, and you deserve to know exactly which.
| In your 3MF | What SliceReady does with it |
|---|---|
| Geometry | Repaired, and returned as STL |
| Units (mm, inch, micron…) | Read, and converted to millimetres — which is what every slicer assumes an STL to be. A unit it does not recognise is refused rather than guessed at |
| Colour, texture, materials | Discarded. STL cannot store them |
| More than one object | Refused, with an error. Merging them would corrupt the triangle indices, so the file is rejected rather than quietly mangled. Export a single object |
| Placement transforms on build items | Refused, with an error. The transform is not applied, and handing back geometry at the wrong position without saying so would be worse than saying no |
The pattern is deliberate, and it is the same rule that governs the repair itself: where the tool cannot do the right thing, it refuses — it does not do the wrong thing quietly. A model handed back at the wrong scale, or with an object silently dropped, looks entirely plausible right up until it costs you a print.
When a browser repair isn't enough
Automatic topology repair fixes the mesh's plumbing. It cannot fix its design. Reach for Blender, Meshmixer's descendants, or your slicer's own mesh tools when:
- Walls are thinner than your nozzle. The mesh is valid; there simply is not enough material to extrude. It needs thickening.
- The model is a dense sculpt that needs remeshing. Millions of triangles, overlapping subtools, no clean topology to recover.
- You want it hollowed, scaled, or cut. That is modelling work, not repair.
Knowing which of the two problems you actually have saves the afternoon. Most people who think they need Blender only ever needed the plumbing fixed.
Frequently asked questions
Can Cura fix a non-manifold STL?
Cura patches small gaps at slice time — it closes holes and unions overlapping volumes on the fly — but it never repairs the mesh file. It is guessing, layer by layer, which is why the same model can slice cleanly at 0.2 mm and come out shredded at 0.16 mm. Repair the topology first and the guessing stops.
Does non-manifold geometry matter if the model looks fine?
Yes, and this trips up almost everyone. A renderer draws only the surface facing the camera and never asks what is inside it, so holes and inverted normals are invisible on screen. The slicer asks a harder question, and gets no answer.
What is the difference between non-manifold and not watertight?
They are not the same defect, though slicers habitually file both under the same warning. Not watertight means the surface has a hole: an edge belonging to one triangle instead of two, so the surface has a boundary and encloses nothing. Non-manifold proper means an edge shared by three or more triangles — the surface branches, and "inside" forks. A printing tool groups them because both stop the model being a solid. A topology library would not, and the distinction matters to you for one practical reason: holes are the easy repair, and branching edges are the hard one.
Why do AI-generated models come out non-manifold so often?
Because generators such as Tripo, Meshy and Rodin are trained to produce something that renders well, not something that encloses a volume. The reward is a good-looking image, and a good-looking image does not require a watertight solid. So you get a model that is finished to the eye and broken to the slicer, every time — here is what breaks in an AI mesh, and why.
Have a broken STL open right now?
Drop it into SliceReady. It repairs in your browser, nothing is uploaded, and the report tells you the truth about what was fixed and what was not.