What each format records
| STL | 3MF | |
|---|---|---|
| Geometry | Triangles | Triangles |
| Units | None — the classic trap | Recorded explicitly |
| Colour and materials | No | Yes |
| Multiple objects | Fused into one soup | Kept separate, each with a transform |
| Compression | None | Zipped — typically much smaller |
| Print settings | No | Yes, as an extension slicers use |
| Structure | A flat list of triangles | XML in a zip container |
| Universal support | Everywhere, without exception | Every current slicer, most current tools |
The geometry row is the one to notice: as a shape, they are equivalent. Both store a triangle mesh with the same fidelity, and converting between them changes nothing about the surface. Everything else in the table is about what the container can carry around that shape.
The units problem, which is not theoretical
An STL contains numbers with no statement of what they mean. A vertex at 25.4 might be 25.4 millimetres or 25.4 inches, and the file does not say. Every tool therefore assumes, and different tools assume differently.
This is why a part sometimes arrives at 25.4 times its intended size, or at one twenty-fifth of it. Nothing went wrong in the export; the exporter worked in inches and the slicer assumed millimetres. 3MF records the unit in the file, and the problem disappears entirely.
If you must send STL, say the unit in the message. "Dimensions in mm" in an email has prevented more reprints than any feature in any slicer.
When to use which
- Use 3MF when you control both ends
- Your own printer, your own slicer, a bureau that lists 3MF. Units, colour and separate objects all survive, and the file is smaller.
- Use 3MF for multi-part and multi-colour prints
- This is where the difference stops being theoretical. Several objects stay several objects with their own positions, instead of merging into one mesh you then have to separate by hand.
- Use STL when the other side asks for it
- Older machines, some bureau upload forms, some mesh tools and a great deal of older documentation assume STL. It is not worth arguing about — the geometry is the same.
- Use STL for a single simple part you are printing yourself
- Nothing is gained by ceremony. One object, one material, millimetres, done.
On our servers. No account: deleted within 24 hours. Signed in: kept until you delete them. Never shared or used for training.
Why STL survives
STL dates from 1987 and is about as simple as a 3D format can be, which is precisely its advantage. It can be written in twenty lines of code, parsed in twenty more, and there is nothing in it to get wrong. That simplicity means every piece of software ever written for 3D printing reads it, including firmware, hobby projects, ancient machines and scripts nobody maintains.
A format with universal support has enormous momentum even when a better one exists. 3MF is winning slowly — the major slicers now use it as their native project format, which is doing more for adoption than a decade of advocacy did — but STL will be accepted everywhere for a long time yet.
Coming from CAD
If you are starting from a solid — a SOLIDWORKS part, a STEP, a Parasolid file — you are choosing a tessellation, not just a container. The exact surfaces get triangulated on the way out, and how finely is your decision. Too coarse and a cylinder prints with visible flats; too fine and you get a huge file for no benefit the printer can resolve.
Converting here meshes each edge as a polyline before triangulating the faces to those samples, so hole silhouettes and chamfers keep their outlines rather than being cut across by an indifferent grid. The default tolerance is a 0.02 mm chord deviation, which is finer than any consumer printer can reproduce.