The 3MF Consortium publishes the core specification (version 1.4.0, February 2025) and each extension as Markdown documents on GitHub. A 3MF document is a package following the Open Packaging Conventions (OPC, ECMA-376 Part 2), the container used by Office Open XML. This page describes that package layer; the Core model page describes the XML inside it.
Versions of the core specification
| Version | Date | Changes |
|---|---|---|
| 1.0 | 29 April 2015 | First published version |
| 1.1 | 25 February 2016 | Clarifications on namespaces and meshes |
| 1.2 | 19 October 2017 | MustPreserve relationship, metadata groups, overlapping order |
| 1.2.1 | 1 March 2018 | Minor update for triangle properties |
| 1.2.2 | 9 August 2018 | First Markdown release |
| 1.2.3 | 12 March 2019 | Clarification on content types |
| 1.3.0 | 7 October 2021 | Triangle sets and a mirror attribute added |
| 1.4.0 | 6 February 2025 | Mirror removed again; shapes and composition clarified; document naming conventions |
The core namespace has stayed
http://schemas.microsoft.com/3dmanufacturing/core/2015/02 throughout;
versions of the core and of each extension are told apart by the namespaces
declared on the <model> element.
ZIP container
- The package is a ZIP archive following PKWARE’s APPNOTE.
- Each file is either Deflated (method 8) or stored (method 0); no other method is allowed.
- Consumers must read ZIP64 and the streaming (data descriptor) form. Producers
should write plain ZIP unless the data needs ZIP64. A streaming producer may
reserve an extra field with ID
0x9999in each local header and later overwrite it with a ZIP64 extra field if one turns out to be needed. - The file’s own media type is
model/3mf.
Byte by byte, the ZIP layer is described on the ZIP pages.
Parts
| Part | Holds | Relationship from | Use |
|---|---|---|---|
| 3D Model | One or more objects to manufacture and the build list (XML) | Package | Required |
| Core Properties | OPC document properties: creator, dates, keywords | Package | Optional |
| Digital Signature Origin | Root of the package’s digital signatures | Package | Optional |
| Digital Signature | One signature each | Digital Signature Origin | Optional |
| Digital Signature Certificate | A certificate for a signature | Digital Signature | Optional |
| PrintTicket | Settings for producing the model; at most one per 3D Model part | 3D Model | Optional |
| Package Thumbnail | A small JPEG or PNG of the whole package | Package | Optional |
| Object Thumbnail | A small JPEG or PNG of one object | 3D Model | Optional |
| 3D Texture | A texture or other data used by an extension | 3D Model | Optional |
| Custom Parts | Producers’ own parts, kept by editors only if marked MustPreserve | Package | Optional |
Only one 3D payload is primary: the 3D Model part that the package’s StartPart relationship points to. All content needed to make the objects must be inside the package; external references are not allowed unless an extension allows them. There may be only one relationship of a given type from one part to another. A producer that writes a PrintTicket, StartPart or Thumbnail relationship must include its target part, and a consumer must report an error if it is missing.
Content types and relationship types
[Content_Types].xml at the root of the ZIP gives the content type of
every part, by extension (Default) or by part name
(Override).
| Part | Content type |
|---|---|
| 3D Model | application/vnd.ms-package.3dmanufacturing-3dmodel+xml |
| PrintTicket | application/vnd.ms-printing.printticket+xml |
| Relationships (OPC) | application/vnd.openxmlformats-package.relationships+xml |
| Thumbnails, textures | image/png or image/jpeg |
| 3D Texture (Materials extension) | application/vnd.ms-package.3dmanufacturing-3dmodeltexture |
| Key store (Secure Content extension) | application/vnd.ms-package.3dmanufacturing-keystore+xml |
Relationships live in _rels/.rels for the package and in
_rels/name.rels beside each part for that part.
| Relationship | Type URI |
|---|---|
| StartPart (the 3D Model) | http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel |
| Thumbnail | http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail |
| PrintTicket | http://schemas.microsoft.com/3dmanufacturing/2013/01/printticket |
| MustPreserve | http://schemas.openxmlformats.org/package/2006/relationships/mustpreserve |
| 3D Texture (Materials, Volumetric) | http://schemas.microsoft.com/3dmanufacturing/2013/01/3dtexture |
| Key store (Secure Content) | http://schemas.microsoft.com/3dmanufacturing/2019/04/keystore |
| Encrypted file (Secure Content) | http://schemas.openxmlformats.org/package/2006/relationships/encryptedfile |
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Target="/3D/3dmodel.model" Id="rel-1"
Type="http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel"/>
<Relationship Target="/Metadata/thumbnail.png" Id="rel0"
Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail"/>
<Relationship Target="/Metadata/MustPreservePart.txt" Id="rel-2"
Type="http://schemas.openxmlformats.org/package/2006/relationships/mustpreserve"/>
</Relationships>
_rels/.rels with the model, a thumbnail and a
part that editors must keep.Part names
Part names are absolute (they start with /), must not be empty and
must not start with a full stop. The recommended names are:
| Part | Recommended name |
|---|---|
| 3D Model | /3D/name.model, such as /3D/3dmodel.model |
| PrintTicket | /3D/Metadata/name.xml, such as /3D/Metadata/Model_PT.xml |
| 3D Texture | /3D/Textures/name |
| Other parts of the 3D payload | /3D/Other/name |
| Volumetric image sheets | /3D/volumetric/image name/sheet.png |
Thumbnails are usually /Metadata/thumbnail.png, by custom rather than
by rule.
File name conventions
Since version 1.4.0 the specification recommends a double extension that says what a 3MF file is for. These names are reserved for their purpose:
| Ending | Use |
|---|---|
.model.3mf | Design model data |
.build.3mf | A complete build plate prepared for a particular printer |
.project.3mf | A whole project: models, settings and metadata |
.toolpath.3mf | Machine-specific toolpath data |
.slices.3mf | Polygonal slice data |
.support.3mf | Support structure data |
.analysis.3mf | Analysis or simulation results |
.calibration.3mf | Machine or process calibration |
.scan.3mf | 3D scan data or point clouds |
.assembly.3mf | Assembled components |
.job.3mf | Print job data such as settings or queue information |
.archive.3mf | Bundled or archived 3MF documents |
.other.3mf | Anything else |
.vendor.3mf | A vendor’s own use |
Plain .3mf is still what most programs write.
Thumbnails
Thumbnails are JPEG or PNG, always reached through a Thumbnail relationship: from
the package for the package thumbnail, from the 3D Model part for an object’s
thumbnail (named by the object’s thumbnail attribute).
| Format | Rule |
|---|---|
| JPEG APP0 (JFIF), APP2 (ICC), APP13 (Photoshop), APP14 (Adobe) | Consumers should support them; if both APP2 and APP13 are present, APP2 wins |
| JPEG APP1 (Exif) | Consumers must support it and read its colour space |
| CMYK JPEG | Not allowed |
PNG tRNS, iCCP | Must be supported |
PNG sRGB, cHRM, gAMA, sBIT | Must be ignored |
XML rules
- UTF-8 only; an encoding declaration may name no other encoding.
- No DTDs; consumers should treat one as an error.
- Content must be valid against the published XSD schemas; elements and
attributes from undeclared namespaces may appear only where the schema allows
any. - No
xml:space; whitespace may be repeated wherever one space is allowed. - Numbers use the en-US form: a full stop as decimal separator.
xml:langmay give the language;undwhen unknown.- Consumers must ignore elements and attributes from namespaces they do not support, unless the model lists that namespace as required.
Signatures and protection
Digital signatures follow OPC. A signature on the 3D Model part should cover that part, the parts it references and their relationships, and may also cover the package thumbnail, signature origin and core properties. The model XML is canonicalised (XML C14N) before signing or checking. Content protection also follows OPC; a consumer allowed to decrypt content must not save it unprotected without the protection authority’s approval. The Secure Content extension defines 3MF’s own encryption.
Vendor parts
Slicers store their own project data as custom parts. PrusaSlicer, for example,
declares the namespace http://schemas.slic3r.org/3mf/2017/06 (prefix
slic3rpe) on the model and writes extra files in
Metadata/, such as Metadata/Slic3r_facets_annotation.json.
These private parts are not part of the 3MF specification and are not described
here.