Convert it yourself when the 3MF is readable, the receiving tool only needs triangles, and you can check the result. Ask the designer for an STL when the 3MF is a project you cannot parse, when the mesh needs a tessellation decision you cannot make, or when the handoff has to carry a named, versioned artifact.
What the designer’s export actually changes
The triangles are chosen before the STL exists. A designer exporting from CAD sets the chord tolerance, the unit and the selection of parts; those choices determine the triangle count and how closely the surface follows the true shape. If you convert their 3MF, you inherit their tessellation and choose only the container.
That is the first thing to settle. When the 3MF holds the final mesh, the STL has the same triangles. It is a lower-resolution copy if the 3MF was exported coarsely and the designer could have exported finer.
What conversion does not change
A 3MF already holds a fixed triangle list, and converting copies it. The 20 mm cube fixture carries 12 triangle elements in its model XML and left the converter as a 12-triangle STL of 684 bytes. The tessellation was the designer’s before the conversion and stayed theirs after it.
| Reading | Value |
|---|---|
| Triangles in the 3MF | 12 |
| Triangles in the STL | 12 |
| STL bytes | 684 (84 + 12 × 50) |
Download cube-20mm.3mf. The conversion ran in Chrome on 13 November 2026 and the exported STL was read back for triangle count and bounds. No print and no slicer import; the test page has the readings.
What the check looks like on a five-part plate
We converted plate-five.3mf, a plate with five 20 mm cubes in a row, in Chrome on 13 November 2026 and compared the source with the saved STL:
| Reading | 3MF | STL |
|---|---|---|
| Build items | 5 | — |
| Triangles | 60 | 60 |
| Bounds | 108 × 20 × 20 mm | 108 × 20 × 20 mm |
| Parts | 5 build items | 5 shells |
| Bytes | — | 3,084 (84 + 60 × 50) |
| PrusaSlicer 2.9.7 | — | Manifold, 5 parts |
The triangle count and bounds match, and the shell count survives because the five cubes do not touch. The check is not just whether the count changed: if the parts overlapped, the STL could still carry 60 triangles, report one shell, and be the wrong handoff. Record both the triangle count and the shell count. Fixture: plate-five.3mf; readings: tests page.
Who owns the tessellation decision?
Tessellation is a choice about deviation, not a property of the part. Chord tolerance h is the sagitta of each facet: a 0.1 mm tolerance allows the surface to deviate from the true curve by up to 0.1 mm. On a sphere of radius r = 40 mm, the angular step between facets is about θ ≈ √(8h/r), and the triangle count is about N ≈ 4π/θ². At h = 0.1 mm: θ ≈ √(8 × 0.1 / 40) = √0.02 ≈ 0.141 rad, so N ≈ 4π / 0.02 ≈ 628 triangles. At h = 0.05 mm: θ ≈ √(8 × 0.05 / 40) = 0.1 rad, so N ≈ 4π / 0.01 ≈ 1,257. Halving the tolerance doubles the count on a curvature-dominated surface, while flat faces stay at two triangles each. The right value depends on the smallest feature and the surface finish the print needs. Alibre’s STL export guide sets out the tolerance-to-mesh relationship.
The designer knows the CAD and the intended fit; you know the printer and the downstream tool. If neither side states a tolerance, the export silently picks one. If the part has curves that matter, ask for the STL.
What changes when you ask
| Decision | If you ask for an STL | If you convert the 3MF |
|---|---|---|
| Tessellation | The designer chooses it | Fixed by the 3MF you already have |
| Units | The designer declares or bakes them | The 3MF declaration is applied |
| Parts | The designer selects what to export | All build items merge into one mesh |
| Time | One request and one reply | One conversion, now |
| Responsibility | The designer’s export is the source | Your conversion is the source |
The responsibility row is the one missed in handoffs. If the print is wrong because the mesh is coarse, the fix belongs with the designer. If it is wrong because the file was converted at the wrong unit, the fix belongs with you.
When should you ask, and when convert?
- Ask when the 3MF is a Bambu Studio project your slicer cannot parse. A production-extension project with objects under
3D/Objects/is the concrete case; the designer has the program that wrote it and can export an STL in a few clicks. - Ask when a large curved housing in Fusion 360 needs a 0.05 mm chord tolerance and the 3MF in hand was exported coarser. The designer controls the mesh refinement; converting cannot improve a mesh you already have.
- Ask when the plate holds separate parts, such as a bracket and its lid, and the receiver needs one STL per object. PrusaSlicer can export each part while the object list still exists.
- Convert when the 3MF is a readable model with an accepted tessellation, such as a flat bracket with no curved fits. One drop into the converter produces the STL, and the bounds check catches a unit error.
- Convert when the receiver is STL-only and the designer is unavailable. A readable 3MF plus a bounds check is enough to start.
No designer reply is quoted on this page; these are conditions to check before sending, and the plate run above is the check to apply to whatever arrives. Not run: a designer request, a physical print, or a slicer repair. The check is what makes these safe. A conversion that reports a triangle count and a box you can compare with the source is a decision you can defend; a file passed along without those numbers is a guess with better packaging. Keep the source 3MF until the print is accepted, so a failed check can be traced to the conversion or to the mesh.
What to put in the request
If you ask, ask for the things the STL cannot tell you later:
Please export an STL of <part> with:
- unit: millimetre
- chord tolerance: 0.1 mm (or the finest the part needs)
- parts: one file per object, named as in the assembly
- orientation: as placed in the 3MF
- note the bounding box and triangle count in the reply
This is the template we would send; no reply is quoted on this page. The reply should include the bounding box and triangle count, because those are the numbers you will compare against the file. A request that asks only for “an STL” gets a file with no stated unit and no way to tell whether the tessellation was intentional.
What an STL request cannot carry
An STL cannot store colour, material slots, per-part settings or a unit declaration. Asking for “the STL with the filament settings” gets a file that cannot hold them; the settings will arrive in a message or not at all.
If those matter, ask for the 3MF and treat the STL as the fallback. If the receiver is STL-only, ask for a note with the values instead, because the file will not carry them. A request that lists impossible fields is a sign that the wrong format is being requested, not that the designer is being difficult.
How do you check either file?
Read the triangle count and the bounding box, then compare them with the source 3MF. The counts should match if the export copied the mesh; a sharp fall means an object was left out, or the mesh was re-tessellated. The bounding box should match in millimetres; a 25.4× or 1000× difference is a unit error.
Count the shells as well. In Blender, the 3D Print Toolbox’s Check All reports the shell count in its results; a slicer’s object list shows the same split. The expected value is one shell per disjoint part, and fewer if the parts intersect. A merged plate with overlapping parts is watertight and still wrong, and no count of triangles will show it.
The container comparison lists the properties that do not survive either route, and the about page explains who runs this converter.
The decision
Record the unit, the bounds and the triangle count before the file reaches a printer. If the 3MF is a project your tools cannot read, or the tessellation is in question, ask the designer and specify what you need.
By the 3mftostl.io Editor Team, reviewed 14 November 2026. Editorial standards.
How this page was written: the format limits come from the 3MF Core Specification and the STL layout, and the exchange advice follows from what each file can store. The bounding-box and triangle-count checks are arithmetic and comparison, not a measurement of a particular model. The cube and plate-five fixtures in “What conversion does not change” and “What the check looks like on a five-part plate” were converted in Chrome on 13 November 2026 and the exported STLs read back for triangle count, bounds and shell count; the plate output was opened in PrusaSlicer 2.9.7. No designer was asked for a file, no designer reply is quoted, and no print was run. AI-assisted first draft, checked against the sources and reviewed by the Editor Team.
Sources:
- 3MF Consortium, 3MF specification overview, core specification and build section — accessed 12 November 2026.
- Library of Congress, STL File Format, Binary, triangle list and no unit field — accessed 12 November 2026.
- Prusa Research, Export, per-object and plate export — accessed 12 November 2026.
- 3MF Consortium, 3MF Production Extension, separate model parts — accessed 12 November 2026.
- Autodesk, How to Export Your Autodesk Fusion Model for 3D Printing, mesh refinement for curved surfaces — accessed 12 November 2026.
- Alibre, Important Parameters of Exporting to STL Files, chord height and triangle count — accessed 12 November 2026.
Related on this site: why a slicer may refuse the 3MF and what a Bambu Studio project keeps. See also One shared 3MF, five printers: a makerspace handoff.
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.