3MF vs STL: what the same model keeps

Send 3MF when the receiving application reads it and you want the unit recorded inside the file. Send STL when you need the widest compatibility and the receiving side already knows the scale. That is the decision. The rest of this page is what the two files actually hold, measured on one model.

One model in three files

Our sample is a right tetrahedron with four triangles and dimensions of 10 × 10 × 10 mm. Every export contains those same triangles. The binary STL is 284 bytes; this writer's 3MF is 1594 bytes; the OBJ is 105 bytes. The 3MF package carries XML and container overhead that outweighs any benefit on a mesh this small. These numbers describe this sample and this writer, not a rule about which format is smaller.

PropertySTL sample3MF sampleOBJ sample
Triangles444
Dimensions under the intended interpretation10 × 10 × 10 mm10 × 10 × 10 mm10 × 10 × 10 mm
Unit stored in the fileNoneMillimetresNone
File size284 bytes1594 bytes105 bytes

Two of the three store no unit at all. That single row is most of the practical difference between them.

Converting between them

You can convert in both directions here, in the browser, without uploading the file. Use 3MF to STL to flatten a 3MF into a plain triangle surface, and STL to 3MF to record an explicit unit against geometry that had none. To read a 3MF without converting it, open it in the 3MF viewer.

Neither direction recovers information the source never held. Going to STL discards the recorded unit, because the format has nowhere to keep it. Going to 3MF adds a unit only because you supplied one.

The 3MF a slicer saves is not the 3MF a converter writes

This matters more than the format comparison, and it is where the two questions get mixed up.

A slicer can also write files with a .3mf extension. Those usually carry a whole print project alongside the mesh: plate layout, supports, and printer settings, stored using extensions the format permits. Reopening one in the same slicer restores that work.

This exporter writes geometry and a unit. It does not create a slicer project, texture maps, printer settings, or CAD feature history. So a 3MF from here opens as a model, not as a job someone already set up. If you were told to send a 3MF so a print profile travels with the part, that profile has to come from the slicer that made it.

A unit needs a source

Wrapping an existing STL in 3MF cannot recover whether its numbers meant inches or millimetres. The preparation workflow requires an interpretation before writing 3MF. If a one-unit part means one inch, the millimetre export should measure 25.4 units across. Assigning the wrong interpretation simply gives the wrong dimensions an explicit label.

The 3MF core specification defines the package and model properties. The format's ability to describe a property does not mean every converter preserves it. Scene transforms are baked into mesh positions.

Where OBJ, STEP and GLB fit

OBJ sits alongside STL as a triangle handoff that stores no unit, with the added ability to reference materials. This writer emits no material file, which is covered in OBJ vs STL.

STEP is a different kind of file. It describes surfaces rather than triangles, so converting a mesh into one does not recover curvature; see why an STL converted to STEP still has facets. GLB and glTF are scene formats built for graphics delivery rather than fabrication, compared in GLB vs glTF.

If the question is which to hand to a 3D printing workflow, the shortlist is STL and 3MF. The others answer different problems.

Check the receiving application

Open the output and check a known dimension before using it. For STL, select the import unit stated in the report. For 3MF, check that the application used the recorded unit. Keep the source model when you need editable design information. The downloadable sample and its report let you compare the actual files before using the same route for your own part.

Prepare units before 3MF export

Try these files

These samples were created by this project and released under CC0. They contain no visitor files. Sizes and SHA-256 hashes identify the exact bytes measured in this experiment.

See the measurement method, exact files, and reproduction details

How can we help?