3MF to OBJ Converter

Convert a 3MF file to OBJ right in your browser, with its colours and object names. A 3MF is a ZIP package from a slicer or 3D modelling app: it holds objects, components (one object used several times), the build plate layout and colours. The converter places every build item and component where the file puts it, writes one OBJ object for each placed mesh (or each build item, or the whole plate), and turns base materials and colour groups into MTL materials with their names and colours. 3MF is in millimetres with Z up, and by default the OBJ keeps exactly those numbers; centimetres, metres, inches and Y-up are one click away. Every OBJ is read back straight after it is written. Nothing is uploaded.

100% private — everything runs in your browser. Everything runs in your browser; your 3MF files are never uploaded.

100% private — runs in your browser
Drop a 3MF file here or click to chooseA 3MF from a slicer or a 3D modelling app. Objects, colours and the build plate layout are read.

Loading the 3D engine…

File details

Size and direction

What goes in

Runs in your browser: your 3MF file is read on your device and never uploaded. The 3D view (three.js) loads from the jsDelivr CDN; the 3MF itself is read by our own code. You may use what you make here, including commercially, with no credit needed. The rights in your own models stay as they were.

How to convert a 3MF to OBJ

  1. Drop a 3MF file on the box, or click Try a sample.
  2. Check the 3D view, the object table and the colours found.
  3. Choose OBJ units, the up direction, one OBJ object for each placed mesh, build item or the whole plate, and colours, normals or vertex colours.
  4. Click Download OBJ + MTL (.zip), or OBJ only.

What you can use it for

  • Edit a 3MF from a slicer or a model site in a 3D app that reads OBJ
  • Keep the colours of a multi-colour print when you move it to OBJ
  • Split a build plate into separate OBJ objects, or merge it into one
  • Check what a 3MF holds: objects, copies, colours, size
  • Bring a 3MF into a rendering or game tool in metres and Y-up
  • Get an OBJ with the same millimetre numbers for CAD

What carries over from 3MF to OBJ

In the 3MFIn the OBJ from this converter
Objects with meshesOne OBJ object (o and g) per placed mesh, named after the 3MF object
Components (an object made of other objects)Each component placed with its transform; a part used twice is written twice
Build items (the plate layout)Placed where the file puts them; or one OBJ object per item, or one for the whole plate
Base materials (name + display colour)MTL materials with the same name and colour (Kd), illum 1
Colour groups (a colour per triangle corner)MTL materials named after the colour; corner blends as optional vertex colours
Unit (micron to metre)Millimetres by default, or centimetres, metres, inches
Mirrored placementsTriangle winding put back so the faces still point outwards
Print settings, supports, thumbnail, painted areasNot carried (no OBJ place for them); listed in the notes

The 3MF Core Specification stores each object’s mesh once and places it through components and build items with a 3 × 4 transform; the converter applies those transforms and writes the placed triangles.

Colours in the sample plate

MTL materialFrom3MF colourWritten as
Red_PLAbase material “Red PLA”#CC2222Kd 0.8 0.1333 0.1333
Blue_PLAbase material “Blue PLA”#2244CCKd 0.1333 0.2667 0.8
colour_FFAA00colour group entry#FFAA00Kd 1 0.6667 0
colour_00AA44colour group entry#00AA44Kd 0 0.6667 0.2667
colour_8833CCcolour group entry#8833CCKd 0.5333 0.2 0.8

Colours are written as the sRGB numbers of the colour code in the file (#CC2222 → 204/255 = 0.8), the way 3D apps read Kd.

Units and up direction

OBJ units and up directionOur 40 × 30 × 24 mm test plate becomes
Millimetres, Z-up (default: the 3MF numbers)40 × 30 × 24 mm
Centimetres, Z-up4 × 3 × 2.4 cm
Metres, Z-up0.04 × 0.03 × 0.024 m
Inches, Z-up1.575 × 1.181 × 0.945 in
Millimetres, Y-up40 × 24 × 30 mm

OBJ files store plain numbers with no unit, so set the same unit when you import the OBJ.

What our test files give

Test fileWhat it checksTrianglesOBJ objectsMaterialsOBJ sizeRead back the same
plate-two-objects.3mfBase, a peg used twice through a component, a cube with a colour group; 3 build items484540 × 30 × 24 mmYes
plate-two-objects.3mfSame plate, one OBJ object per build item483540 × 30 × 24 mmYes
project-subfile-inch.3mfSlicer-style project: the mesh sits in a second model file (production extension), unit inch121125.4 × 25.4 × 12.7 mmYes
mirrored-and-painted.3mfA cube placed mirrored (winding put back)121120 × 20 × 20 mmYes
blend-corners.3mfColour group with different colours on a triangle’s corners (vertex colours on)121230 × 30 × 2 mmYes

Computed by the converter’s own writer from our own 3MF test files; every OBJ was read back with the three.js OBJ reader with the same triangle count, and every placed closed part has a positive volume (faces outwards).

Next steps

Need a print file again? 3MF to STL writes an STL from the same 3MF, and STL to 3MF goes back. OBJ to STL turns the OBJ into an STL, and the 3D Print Cost Calculator prices a print.

Sources

Sources: 3MF Core Specification (3MF Consortium, GitHub): units, objects, components, build items, base materials; 3MF Materials and Properties Extension (3MF Consortium, GitHub): colour groups; Library of Congress: Wavefront OBJ File Format; MTL material format (Paul Bourke’s copy of the Wavefront notes: Kd, d, illum, map_Kd).

More free tools

Working with 3D models?

View, convert and make 3D files with free tools that run privately in your browser, with no sign-up and no watermark.

See all free tools →

Frequently asked questions

Is this 3MF to OBJ converter free?

Yes. There is no sign-up, no watermark and no limit on how many files you convert. The conversion runs in your browser, so your file never leaves your device.

Do the colours survive?

Yes, as materials. Each base material keeps its name and display colour (for example “Red PLA” #CC2222 becomes newmtl Red_PLA with Kd 0.8 0.1333 0.1333), and each colour from a colour group becomes a material named after its colour code. Turn on Vertex colours to keep triangles whose corners have different colours.

Are the objects kept separate?

Yes. By default every placed mesh is its own OBJ object (o and g lines), named after the 3MF object and the component it comes from, so a part used twice appears twice. You can also write one object per build plate item, or one object for the whole plate.

Will the OBJ be the right size?

3MF files state their unit (usually millimetres; micron, centimetre, inch, foot and metre are allowed) and the converter reads it. By default the OBJ is written in millimetres with the same numbers a millimetre 3MF has, which is what 3D printing and CAD apps expect. Choose centimetres, metres or inches to convert.

Which way is up?

3MF is Z-up, like a print bed. The OBJ stays Z-up by default; choose Y-up for 3D apps and game engines that treat Y as up. Either way the model is turned, never mirrored.

What is not carried over?

Print settings, supports, the plate thumbnail and slicer-specific painted areas are not part of an OBJ; the page lists what it found and left out. Textures from the 3MF texture extension are not written yet (shown grey).

What about 3MF projects from slicers?

Project 3MFs often keep the meshes in separate model files inside the package (the production extension); those are read and placed too.

Can it fix a broken 3MF?

It writes every triangle it can read and lists the problems it found, such as a triangle pointing to a vertex that does not exist or a colour number out of range. It does not repair the mesh itself.

Is my 3MF file uploaded?

No. The 3MF package is opened and turned into OBJ by our own code in your browser, so it never leaves your device. Only the 3D view (three.js) is loaded from a public CDN. There is no sign-up and no watermark.