What Is a .3MF File?

3D Manufacturing Format

📂CAD
🏷️.3mf
🎯model/3mf

3MF 3D Manufacturing Format (.3mf)

Overview

3MF (3D Manufacturing Format) is a file format for 3D printing that describes a complete print job: the geometry of one or more objects, their colours and materials, how they are arranged on the build plate, and, with the right extensions, the slicer settings used. It was created in 2015 by a consortium led by Microsoft to replace STL, the 1987 format that carries nothing but triangles.

A .3mf file is a ZIP archive of XML, which makes it easy to inspect and extend, and it is now the default project format in the major slicers (PrusaSlicer, Bambu Studio, OrcaSlicer, Cura) as well as the native export of most CAD tools.

Technical Specifications

  • MIME Type: model/3mf
  • File Extension: .3mf
  • Category: CAD
  • Container: ZIP, following the Open Packaging Conventions
  • Core model: XML (3D/3dmodel.model) with vertices, triangles, objects, components and a build section
  • Units: millimetres by default; micron, inch, foot, metre also allowed
  • Extensions: Materials and Properties, Production, Beam Lattice, Slice, Secure Content, Boolean Operations, Displacement
  • Developed by: the 3MF Consortium (Microsoft, Autodesk, HP, Stratasys, Ultimaker, Prusa and others), under the Linux Foundation
  • Magic bytes: 50 4B 03 04 (PK..)

Identification

A .3mf is a ZIP. The distinguishing content is 3D/3dmodel.model at the path named in _rels/.rels, and a [Content_Types].xml declaring application/vnd.ms-package.3dmanufacturing-3dmodel+xml:

unzip -l part.3mf
  [Content_Types].xml
  _rels/.rels
  3D/3dmodel.model          the geometry and build
  Metadata/thumbnail.png    optional preview
  Metadata/*.config         slicer-specific settings (PrusaSlicer, Bambu, Orca)

File Structure

<model unit="millimeter" xml:lang="en-US" xmlns="http://schemas.microsoft.com/3dmanufacturing/core/2015/02">
  <metadata name="Title">Bracket</metadata>
  <resources>
    <object id="1" type="model">
      <mesh>
        <vertices>
          <vertex x="0" y="0" z="0"/>
          <vertex x="10" y="0" z="0"/>
          ...
        </vertices>
        <triangles>
          <triangle v1="0" v2="1" v3="2"/>
          ...
        </triangles>
      </mesh>
    </object>
  </resources>
  <build>
    <item objectid="1" transform="1 0 0 0 1 0 0 0 1 50 50 0"/>
  </build>
</model>

Vertices are shared, so each is stored once (STL repeats every vertex for every triangle that touches it). Objects can be components of other objects, and the build section places instances with a transform, so one mesh printed ten times is stored once.

History and Development

STL had been the universal 3D-printing format since 1987, and its limits were obvious by the 2010s: no units, no colour, no multiple parts, duplicated vertices and no way to say that a mesh was watertight. Microsoft convened the 3MF Consortium in 2015 to design a replacement with Autodesk, Dassault, HP, Shapeways and others; the specification was published that year and the consortium moved under the Linux Foundation in 2019.

Adoption followed the slicers. PrusaSlicer adopted 3MF as its project format in 2019, Bambu Lab built its ecosystem on it in 2022, and the format's ability to store slicer settings, multi-material assignments and plate layouts made it the practical choice for sharing printable projects rather than bare meshes. Printables and MakerWorld both distribute 3MF alongside STL.

Common Use Cases

  • Slicer projects: the plate, the objects, supports, modifiers and print settings in one file
  • Multi-material and multi-colour prints, where colour per face or per object matters
  • Sharing printable designs on Printables, MakerWorld and Thingiverse
  • CAD export from Fusion 360, SolidWorks, Onshape, FreeCAD and Blender
  • Industrial additive manufacturing with the Production and Secure Content extensions
  • Lattice structures via the Beam Lattice extension

How to Open a 3MF File

Slicers (the usual destination)

  • PrusaSlicer, Bambu Studio, OrcaSlicer, Ultimaker Cura, Simplify3D, IdeaMaker: all open 3MF and most save it as their project format. Opening a 3MF from another slicer imports the geometry; settings are read only when the file came from the same slicer family.

Viewers

  • Windows: 3D Viewer (built into Windows 10 and 11) opens 3MF natively; Paint 3D and Print 3D did too. File Explorer shows thumbnails.
  • macOS: no built-in viewer. Use a slicer, Blender, or 3D Builder alternatives such as Meshmixer.
  • Linux: PrusaSlicer, Cura, Blender, or f3d.
  • Online: 3dviewer.net and the Printables/MakerWorld model pages render 3MF in the browser.

CAD and modelling tools

  • Blender (3.0+): File, Import, 3MF with the built-in add-on enabled.
  • FreeCAD, Fusion 360, SolidWorks, Onshape, Rhino: import and export.

Inspect the contents

unzip -l part.3mf
unzip -p part.3mf 3D/3dmodel.model | head -40

How to Convert a 3MF File

To STL (for older tools)

Any slicer: open the 3MF, select the object, Export, STL. Colour, materials and settings are lost; only the mesh survives.

# Command line with PrusaSlicer
prusa-slicer --export-stl part.3mf

# Or with Blender headless
blender -b --python-expr "import bpy; bpy.ops.import_mesh.threemf(filepath='part.3mf'); bpy.ops.export_mesh.stl(filepath='part.stl')"

From STL to 3MF

Open the STL in any slicer and Save project or Export as 3MF. The result gains units and a proper structure, and you can assign colours and settings before saving.

To OBJ, STEP or other formats

  • OBJ: Blender or a slicer export; keeps colours as materials.
  • STEP: not possible from a mesh. 3MF holds triangles, not parametric geometry; only the original CAD file can produce STEP.
  • G-code: slice the 3MF in the slicer for your printer.

In code

# lib3mf, the consortium's reference library, has Python bindings
import lib3mf
wrapper = lib3mf.get_wrapper()
model = wrapper.CreateModel()
reader = model.QueryReader("3mf")
reader.ReadFromFile("part.3mf")
for obj in model.GetMeshObjects():
    print(obj.GetName(), obj.GetTriangleCount(), "triangles")

trimesh in Python also loads 3MF, and the 3mf crate exists for Rust.

Advantages

  • Complete print description: geometry, units, colour, materials, placement and settings.
  • Compact: shared vertices and ZIP compression make files far smaller than binary STL.
  • Unambiguous: units are explicit and meshes are required to be manifold.
  • Extensible and open, with a reference implementation (lib3mf).
  • Human-inspectable XML.

Limitations

  • Slicer settings are not portable: each slicer stores its own configuration in its own metadata files.
  • Mesh only: no parametric or NURBS geometry, so it is not a CAD interchange format.
  • Less universal than STL on older printers and software.
  • Large meshes still produce large files, since every triangle is listed.
  • STLBINARY and STLTEXT: the format 3MF replaces.
  • ZIP: the container.
  • XML: the model language inside.
  • DXF and DWG: 2D and parametric CAD formats, which 3MF does not replace.

How to identify .3MF files from the bytes

3D Manufacturing Format files carry a fixed byte pattern, the file signature or magic number, that identifies them regardless of the extension. This is what our detector reads.

OffsetHexASCII
050 4B 03 04A ZIP archive (Open Packaging Conventions) with 3D/3dmodel.model inside.PK..

Check a file yourself: xxd -l 16 file.3mf on macOS and Linux, or Format-Hex file.3mf | Select-Object -First 1 in PowerShell.Full 3MF signature reference

File Information

File Description

3D Manufacturing Format

Category

CAD

Extensions

.3mf

MIME Type

model/3mf

Related File Types

Other file types in the CAD category you might also need:

Start Analyzing 3MF Files Now

Use our free AI-powered tool to detect and analyze 3D Manufacturing Format files instantly with Google's Magika technology.

⚡Try File Detection Tool