The constraints in a shared shop
A mixed shop has one slicer on the design machine and several machines that accept different files. Some read 3MF, some take STL only, and the person at the printer may not have the source model. The conversion has to produce a file that is self-explanatory at the machine, because the person printing it cannot inspect the 3MF.
That is also why the conversion happens on the design machine. The 3MF to STL converter keeps the file in the tab, so a shared or borrowed computer does not need an account, an install or an upload quota. The person converting can see the triangle count and bounds immediately, before the file goes on a USB stick. A file that arrives with a name and a recorded box can be checked by someone who never saw the design.
A naming scheme that survives five machines
A name is the only metadata the STL will carry, because an STL has no object table. Put the plate, revision and unit in the filename, and keep spaces out of it so every slicer and script handles it the same way.
| Field | Example | Why it is there |
|---|---|---|
| Project | bracket |
Ties the file to the source 3MF |
| Plate | plateA |
Distinguishes assemblies that share a project |
| Revision | rev3 |
Prevents a printer running the previous geometry |
| Unit | mm |
Records what the numbers mean |
| Extension | .stl |
What the receiving machine expects |
The result is bracket_plateA_rev3_mm.stl. A file named final_final.stl carries none of that, and a shop with five machines will eventually print the wrong one.
What to record before converting
Write down five readings from the source file while it is still open. Compare these numbers after conversion.
| Reading | Where it comes from | What it catches |
|---|---|---|
| Declared unit | <model unit="..."> or the slicer’s info panel |
A 25.4× or 1000× scale error |
| Bounding box | The slicer’s object statistics | A wrong unit or a missing object |
| Triangle count | The slicer’s statistics | A skipped object after conversion |
| Build-item count | The plate list | A merge that lost a part |
| Colour and filament slots | The slicer’s object list | Colour lost at conversion |
The STL has no colour field, so a colour or filament assignment survives only on the ticket. Record the slot name against each object before the export.
Keep the record with the job ticket:
project: bracket
plate: plateA
revision: rev3
unit: mm
bounds: 120.00 x 80.00 x 25.00 mm
triangles: 100000
build items: 5
sha256: shasum -a 256 bracket_plateA_rev3_mm.stl
Store the ticket beside the STL on the share; the folder name carries project, plate, revision and unit. Run the shasum command after conversion and add the digest as the last line.
The handoff check
The converter reports triangle count, vertex count and bounds in millimetres after it writes the file. Compare those numbers with the record. For a quick independent check, the binary STL size gives the triangle count:
triangles = (file bytes - 84) / 50
A 5,000,084-byte file holds 100,000 triangles. The reverse works too: a 150,000-triangle plate is 150,000 × 50 + 84 = 7,500,084 bytes. The 84 bytes are the 80-byte header plus the 4-byte triangle count. The size proves the file is binary STL and that the count matches; it says nothing about shape. Pair it with the bounds and you have a check the person at the machine can run without opening the model.
If the same plate is converted twice, shasum bracket_plateA_rev3_mm.stl proves the two files are identical. A different hash does not prove the shape changed, only that the bytes differ.
A two-part plate through the check
The two-parts fixture gives a record you can compare line by line. It became one STL with 24 triangles, a 40 × 20 × 20 mm box and two shells. The byte count follows the record formula: 84 + 24 × 50 = 1,284 bytes, and the file is 1,284 bytes.
| Reading | Value |
|---|---|
| Connected shells | 2 |
| Triangles | 24 |
| Bounds | 40 × 20 × 20 mm |
| STL bytes | 1,284 |
Download two-parts.3mf and repeat it. We ran the conversion in Chrome on 13 November 2026 and read the exported STL back for triangles, bounds and shells. No physical print was made and no slicer import was performed; the test page has the readings.
What the receiving machine can verify
The STL gives the next person three facts: a triangle count from the file size, a bounding box from the slicer, and whether the preview is closed. It cannot give the declared unit, the plate the object came from, or the source revision. Those have to travel outside the file.
That is why the ticket matters. An operator who receives only part.stl can tell you it is 120 mm long, but not whether 120 mm is the intended size. The person who converted the 3MF knows the answer and has to write it down. Write the unit and revision on the ticket.
A conversion checklist for the design machine
- Read the declared unit from the 3MF and note it.
- Record the bounding box, triangle count and build-item count.
- Convert once, leaving the Source unit menu untouched if the declaration is correct.
- Compare the result panel’s bounds with the record.
- Rename the output with project, plate, revision and unit.
- Ship the STL and the record, or ship both the STL and the 3MF.
Do not convert the STL again to “fix” a size mismatch; if the bounds are wrong, the source unit or the source file is wrong, and a second conversion only hides which one.
Why not hand out the 3MF?
Hand out the 3MF when every receiving tool reads 3MF. It keeps the build items and the declared unit and, in a project file, the colour assignments and settings. A single shared 3MF is also easier to version than five derived STLs.
A model 3MF is a core-spec package: one or more mesh objects, a unit and build items. A project 3MF from PrusaSlicer or Bambu Studio adds slicer settings, and Bambu’s Production Extension can split the model data into separate parts that the root file references.
| Package | Holds | Use it for |
|---|---|---|
| Model 3MF | Geometry, unit, build items, colour | Handing geometry to another tool |
| Project 3MF | The model plus plate, filament slots and process settings | Reopening the job in the slicer that wrote it |
unzip -l file.3mf separates them: a Metadata/Slic3r_PE.config entry or a 3D/Objects/ directory means a project, while a lone 3D/3dmodel.model points to a model package.
This converter reads the core model and its build items; it does not apply a project’s settings, and a package whose geometry is split across extension parts is not a core model it can unwrap. If the shared file came from a slicer’s Save Project command, open it in that slicer and export a model 3MF or an STL first rather than assuming the converter will see a plate.
The exception is the mixed shop. When some machines only accept STL, the 3MF becomes a second artifact that half the shop cannot open, and the person at the STL-only machine has to convert it anyway. In that case, ship both: the 3MF for the machines that can use it, and one verified STL for the rest.
When is one STL the wrong handoff?
When the print depends on separate parts. A merged STL gives every machine one mesh, so a per-part filament assignment or a per-part setting has nowhere to live. Export one STL per object instead, and name each with the object name from the plate list.
It is also wrong when the machines have different build volumes. A plate that fits one printer may not fit another, and the STL cannot carry the plate arrangement. Check the bounding box against the smallest build volume in the shop before sending the file to all five. For example, a shop with 220 × 220 × 250 mm, 250 × 210 × 210 mm and 350 × 350 × 350 mm machines shares a 220 × 210 × 210 mm envelope (example figures, not a measured fleet).
The final check at the machine
Load the STL, read its bounding box, and compare it with the ticket. A 120 mm part that reads 4.72 is inches; one that reads 0.12 is metres. Neither is a printer problem, and neither will be fixed by scaling at the machine, because the next person will inherit the same wrong file.
If the bounds match but the preview shows internal walls where two parts meet, the plate was merged without a boolean union. Stop and fix the source, or print the parts separately. The how-it-works page lists what this converter does and does not change, and the about page covers how the tool is run.
By the 3mftostl.io Editor Team, reviewed 14 November 2026. Editorial standards.
How this page was written: the format limits and the triangle-count formula come from the published STL layout, the unit values from the 3MF Core Specification, and the workflow advice from the handoff steps a mixed shop needs. The arithmetic is shown. The two-part fixture in “A two-part plate through the check” was converted in Chrome on 13 November 2026 and its STL read back for triangles, bounds and shells; no shop, printer or slicer was tested for this page. AI-assisted first draft, checked against the sources and reviewed by the Editor Team.
Sources:
- 3MF Consortium, 3MF Core Specification, v1.4.0, unit and build sections — accessed 12 November 2026.
- ISO, ISO/IEC 25422:2025, 3MF specification suite — accessed 12 November 2026.
- Library of Congress, STL File Format, Binary, 80-byte header and 50 bytes per triangle — accessed 12 November 2026.
- Prusa Research, Export, Export Plate as STL/OBJ — accessed 12 November 2026.
- Bambu Lab, Bambu Studio 3mf Compatibility, 3MF Production Extension and cross-slicer support — accessed 12 November 2026.
Related on this site: why a slicer may refuse the 3MF and whether to ask the designer for an STL.
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.