What does watertight mean in 3D printing?
In 3D modeling and slicing, watertight describes the model’s mesh rather than the printed part: a surface closed everywhere with no holes. Every edge joins exactly two faces (the Blender manual’s test) and every face points outward, so the slicer can tell inside from outside. A part that holds water is the other meaning.
For that meaning, walls and slicer settings decide it: see how to make a print watertight.
- Closed mesh
- Missing face
- Open edges around the hole
Mesh errors that stop a model being watertight
| Mesh error | What it is | What the slicer does | How to fix it |
|---|---|---|---|
| Hole (open edges) | Edges attached to only 1 face | PrusaSlicer closes cracks narrower than twice its “Slice gap closing radius” (0.049 mm by default). UltiMaker Cura leaves faults in the shell or infill unless “Extensive stitching” is on | Close it in the modeling program, or run Make Manifold in Blender’s 3D Print Toolbox |
| Non-manifold edge | An edge shared by 3 or more faces | Bambu Studio flags it as an “Error” (open edges are only “Info”) | Make Manifold |
| Flipped normals | A face pointing the opposite way to its neighbors (“Bad Contiguous” in Blender) | PrusaSlicer reverses them automatically. Under 3MF (3D Manufacturing Format), a mesh with negative volume “will not be printed (or will become voids)” | Mesh ‣ Normals ‣ Recalculate Outside (Shift-N) in Blender |
| Self-intersection | Faces of one model passing through each other | 3MF has slicers fill the overlap as solid. Cura’s “Union overlapping volumes” slices it as one volume | A Boolean union in Blender, though some slicers cope without one |
Sources for the table: the Blender manual, the PrusaSlicer 2.9.6 and Bambu Studio 02.08.02.61 source code, UltiMaker’s “Mesh fixes settings” page and section 4.1 of the 3MF Core Specification 1.4.0.
Why does the slicer need a closed mesh?
A slicer cuts the model into layers and must decide which side of each outline is solid. Under the 3MF Core Specification, the slicer sends a ray out from a point and counts its crossings of the surface, each signed by the face’s normal (the direction the face points). A net count of one or more means inside. With a hole, the surface no longer separates inside from outside, and the slicer has to guess.
Slicers patch much of this on their own. Prusa’s knowledge base says PrusaSlicer “will automatically repair models to a certain degree”, but “not all of the corrupted 3D models can be repaired automatically.” When polygons are missing from the shell, UltiMaker says Cura “won’t be able to slice the model correctly.”
How to check whether a model is watertight
- PrusaSlicer: hover over the warning icon beside the model in the object list. It lists “Auto-repaired N errors” and, if the mesh is still open, “Remaining errors: N open edges”. A clean mesh shows “No errors detected” in the sidebar.
- Bambu Studio: its warning icon lists “N errors repaired”, “Error: N non-manifold edges” and “Info: N open edges”. On Windows, right-clicking the icon in either slicer runs the Windows repair.
- UltiMaker Cura: switch to X-ray view, where faults often show as red areas.
- Blender: install the 3D Print Toolbox (from Blender Extensions on Blender 4.2 and newer), open the 3D Print tab in the sidebar and click Check All. A watertight mesh reads 0 for both Non-manifold Edges and Bad Contiguous Edges. In Edit Mode, Select ‣ Select All by Trait ‣ Non Manifold selects the bad edges, and Make Manifold tries to repair them.
- Layer preview: slice and look for gaps in the walls or infill, where UltiMaker says the faults show.
Sources
- 3D Print Toolbox, Blender 4.1 Manual (Blender Foundation) (accessed October 28, 2026)
- 3D Print Toolbox 1.5.0, Blender Extensions (Blender Foundation) (accessed October 28, 2026)
- Select All by Trait, Blender 5.2 LTS Manual (Blender Foundation) (accessed October 28, 2026)
- Editing Normals, Blender 5.2 LTS Manual (Blender Foundation) (accessed October 28, 2026)
- 3MF Core Specification 1.4.0, section 4.1 Meshes (3MF Consortium) (accessed October 28, 2026)
- src/libslic3r/MeshDiagnostics.hpp at v02.08.02.61, Bambu Studio on GitHub (accessed October 28, 2026)
- src/slic3r/GUI/GUI_ObjectList.cpp at v02.08.02.61, Bambu Studio on GitHub (accessed October 28, 2026)
- src/slic3r/GUI/GUI_ObjectList.cpp at version_2.9.6, PrusaSlicer on GitHub (accessed October 28, 2026)
- src/libslic3r/PrintConfig.cpp at version_2.9.6, PrusaSlicer on GitHub (accessed October 28, 2026)
- Mesh fixes settings (UltiMaker Support) (accessed October 28, 2026)
- Corrupted 3D models for printing (Prusa Knowledge Base) (accessed October 28, 2026)