What is the difference between the STL and 3MF formats for 3D printers?

STL (STereoLithography or Standard Tessellation Language ) was first developed to translate CAD data into data suitable for use by a stereolithography 3D printer. In the years since it’s introduction it has been used by a number of 3D printing technologies, including extrusion and jetting.

But STL is more than 30 years old. 3D printing technology has advanced and offers features and capabilities that STL was never developed to translate. For example, STL files describe only the surface geometry of a three-dimensional object without any representation of color, texture or other common CAD model attributes. It does not save mesh topology, which can lead to file sizes larger than can be supported by the 3D printer, and it can introduce roundness errors, which will usually result in a 3D print failure.

So a number of companies headed by Microsoft developed 3MF, a language now supported by the 3MF Consortium. 3MF is an XML-based data format. It delivers complete model information in a single archive: mesh, textures, materials, colors and print ticket.

3MF supports transforms and object references. In addition, single objects can be referenced or moved without changing the mesh, and multiple identical objects can be placed referencing the same mesh.