A hole or an inside-out patch in the STL was already in the 3MF’s triangles. The converter transforms each build item, merges the objects and writes the same faces out; the only defect it can create is a mirrored component, covered under “The one flip the conversion can cause”. What does change is your ability to inspect one object at a time, because the parts that let you do that are gone.
What the converter does to the triangles
The how-it-works page lists the steps: parse the file, normalise the geometry, write the output. There is no repair stage in that sequence, and the normalise step explicitly does not smooth, decimate or rescale, so nothing in the pipeline can create a boundary edge. Two things do change in ways that matter here — every build item becomes one mesh, and transforms are baked into the coordinates. Both can produce problems that look like damage.
The container also loses parts, colour and print settings (what an STL cannot carry). None of that affects the surface, so none of it explains a hole.
The one flip the conversion can cause
A negative-determinant transform is a mirror. The 3MF Core Specification requires that applying such a transform must not change the sign of the shape’s volume, and that a model should end up with positive volume after all transforms. Honouring that rule means reversing triangle winding for the mirrored object as the transform is baked in.
A converter that pushes vertices through the matrix without reversing the winding writes that object inside out. The signature is narrow: one whole component inverted, on a plate where that component was mirrored, with clean edges around it and the rest of the mesh correct. If the flipped region is a patch inside a single object rather than a whole object, the transform is not the explanation.
Apart from that mechanism, winding came from the source. So did every hole.
What two fixtures showed
The open-box fixture is a 20 mm cube with its top face removed: 10 triangle elements in the 3MF, 10 triangles in the STL, and four boundary edges in the export. The converter copied the hole rather than making or closing it. A closed cube and a cube placed by a transform with determinant −1 each exported 12 triangles, zero boundary edges and a signed volume of +8,000, so the mirrored object was not left inside out.
| Fixture | Triangles | Boundary edges | Signed volume |
|---|---|---|---|
| open-box.3mf | 10 | 4 | not closed |
| cube-20mm.3mf | 12 | 0 | +8,000 |
| mirrored-cube.3mf | 12 | 0 | +8,000 |
Download open-box.3mf. We ran both fixtures in Chrome on 13 November 2026 and read the STLs back for triangles, boundary edges and signed volume. No physical print was made and no slicer import was performed; the test page has the readings.
Counting boundary edges before touching anything
The STL format description states what a printable surface needs: closed and connected, every edge shared by exactly two faces, no reversed normals, no self-intersections. Two counts follow from that.
A boundary edge belongs to one triangle only; a watertight solid has none. A non-manifold edge belongs to three or more, which leaves the surface without a single inside and outside. Both numbers are reported directly by most mesh tools, and neither needs the model to be repaired first.
Euler’s formula gives a second opinion from totals. For a closed surface, V − E + F = 2 − 2g, where g is the number of through-holes, and every edge borders two faces, so E = 3F/2. Substituting:
V = F/2 + 2 − 2g
Take a bracket that reports F = 12,000 faces. A closed, genus-0 surface should report V ≈ 12,000 ÷ 2 + 2 = 6,002. If the same file reports 5,940 vertices it is 62 short, far beyond rounding at this size and a reason to check the boundary count before changing anything. A washer with one through-hole (g = 1) should report V = F/2 exactly, so the same 12,000 faces have 6,000 vertices. The constant is tiny, so the useful signal is the ratio: if V comes back well under F/2, faces are missing and the gap is real. The formula is exact only for a closed surface, which makes a failed check a reason to look, not a diagnosis on its own.
Reading the layer preview
Vase-mode surfaces, resin drain holes, lithophane sheets and open-backed reliefs are not closed by design. A global repair that fills every boundary will close them, and the print changes.
Use the layer preview at the layer range where the boundary sits.
| Where it appears | Behaviour across layers | Repeats? | What to do |
|---|---|---|---|
| Drain hole | One wall, one location | Same x/y on every layer of that wall, round | Leave it |
| Vase-mode opening | Top edge of the shell | Open only at the top layer, follows the outline | Leave it |
| Mesh defect | Anywhere, often near a fillet | Moves or flickers as you step up; width changes | Weld and recalculate, or fill |
| Two merged shells | Where two parts overlap | Two perimeters a fraction of a millimetre apart on one layer | Boolean union |
If the preview shows the walls closed while the report still counts boundaries, the boundaries may sit below the first layer or outside the build area.
Checking winding and signed volume
STL stores one normal per facet, but readers commonly ignore it. Wikipedia notes the field may be left as (0,0,0) and the normal computed from vertex order with the right-hand rule, and that some software ignores the stored vector entirely. A tool that rewrites the 12-byte normal without touching the vertex order therefore changes the shading in one program and nothing in the slicer.
Winding is what has to change. Blender’s Normals menu has Flip and Recalculate Outside, and its Face Orientation overlay is the quick way to see faces that point the wrong way. One step comes first for STL files: an STL shares no vertices between triangles, so every triangle imports as its own island unless the importer merges coincident points. Recalculate Outside works across connected faces, and a disconnected mesh gives it nothing to propagate through. Weld duplicate vertices, recalculate, then measure.
The measurement is signed volume:
V = Σ (v1 × v2) · v3 / 6
Negative volume means the surface is inside out. A closed solid built outward comes out positive, which is also what the 3MF specification expects after transforms. Any mesh report worth using prints this number.
Finding two merged shells
Put a label into a base so the two objects overlap, convert the plate, and the STL can be watertight, correctly wound and still wrong. Each object was closed on its own, so the merged mesh has no boundary edges and no flipped faces. What it has is interior walls where the shells intersect, and the slicer will lay perimeters through the same space, leaving a weak seam and extra material.
No manifold check will find this, because nothing is non-manifold. The cross-section view will: two perimeters a fraction of a millimetre apart at the junction, or infill that stops and restarts inside what looks like one part. The remedy is a boolean union in a mesh editor, or keeping the objects separate in the 3MF. Hole filling makes it worse by adding faces inside the model.
Which repair tool reports counts you can act on?
The one that reports counts rather than a verdict. Blender’s 3D-Print Toolbox checks for non-manifold edges and bad contiguous edges and treats an edge with only one face as a hole — the boundary count this page starts from. Run it before and after any repair: a Make Manifold pass that fills a drain hole returns a clean report and a changed part.
Weld first. A binary STL stores every triangle’s vertices in full, so an importer that does not merge coincident points gives each triangle its own three edges; the 12,000-face bracket above arrives with 36,000 non-manifold edges, none a real hole.
How do I repair a broken STL?
- Count. A printable solid has boundary edges = 0 and non-manifold edges = 0; anything else is a finding.
- Check the ratio. A closed surface satisfies V = F/2 + 2 − 2g, so a V well under F/2 means faces are missing.
- Look. Open the layer preview at the layer where the boundary sits.
- Decide. A round opening repeated through one wall is a drain hole; a ragged wedge that moves between layers is a defect.
- Fix and re-measure. Flip one component, weld and recalculate, or union two shells, then run steps 1 and 2 again on the output. If boundary edges are still above zero, the file to fix is the 3MF, not a global fill in the STL editor.
A repair tool cannot tell which boundaries the designer intended, so it cannot fill every hole safely, and bridging a gap between two halves of a broken shell can seal a void inside the print. When the 3MF is still available, open it in the same mesh report before you convert, so the merge does not hide which parts were already open.
Open the 3MF to STL converter and drop a file. It converts only — it will not fill a hole or flip a winding — so use it to rule the conversion out first, then check the result against the counts in step 1. The file stays in this tab; nothing is uploaded.
Can an STL be converted back to CAD?
To a mesh body, not to a feature history. A converter can fit a surface over the triangles, but the result keeps the triangle count as its resolution ceiling and none of the structure that made the part editable: no sketch dimensions, no constraints, no feature tree, no unit declaration, because an STL has none. The 12,000-face bracket above comes back as 12,000 planar facets and 5,940 vertices — the numbers that flagged it as not closed. If the original CAD file exists, re-export from it at the tessellation you need; the STL is the end of that chain, not a step back up it.
By the 3mftostl.io Editor Team, reviewed 14 November 2026.
How this page was written: the conclusions come from the published format rules, the Blender manual and arithmetic on the counts. The three fixtures in “What two fixtures showed” were converted in Chrome on 13 November 2026 and the exported STLs were read back for triangle count, boundary edges and signed volume. No print was made and no repair tool was run on the outputs. Every formula here can be recomputed from the numbers in the text. AI-assisted first draft, checked against the sources and reviewed by the Editor Team.
Sources:
- 3MF Consortium, 3MF Core Specification v1.3.0, transforms and volume sign — accessed 12 November 2026.
- STL file format, closed-surface requirement, right-hand rule, ignored facet normals — accessed 12 November 2026.
- Blender Foundation, Blender Manual: Normals, Flip, Recalculate Outside, Face Orientation overlay — accessed 12 November 2026.
- Blender Foundation, Blender Manual: 3D Print Toolbox, non-manifold and bad contiguous checks, Make Manifold — accessed 12 November 2026.
Related on this site: why the STL is bigger than the 3MF and the 3MF vs STL comparison.
Convert your own 3MF
Drop a 3MF file and get one STL in millimetres. Runs in this tab; nothing is uploaded and no account is needed.