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.
File details
Size and direction
What goes in
Animation
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
- Drop a 3MF file on the box, or click Try a sample.
- Check the 3D view, the object table and the colours found.
- 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.
- 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 3MF | In the OBJ from this converter |
|---|---|
| Objects with meshes | One 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 placements | Triangle winding put back so the faces still point outwards |
| Print settings, supports, thumbnail, painted areas | Not 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 material | From | 3MF colour | Written as |
|---|---|---|---|
| Red_PLA | base material “Red PLA” | #CC2222 | Kd 0.8 0.1333 0.1333 |
| Blue_PLA | base material “Blue PLA” | #2244CC | Kd 0.1333 0.2667 0.8 |
| colour_FFAA00 | colour group entry | #FFAA00 | Kd 1 0.6667 0 |
| colour_00AA44 | colour group entry | #00AA44 | Kd 0 0.6667 0.2667 |
| colour_8833CC | colour group entry | #8833CC | Kd 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 direction | Our 40 × 30 × 24 mm test plate becomes |
|---|---|
| Millimetres, Z-up (default: the 3MF numbers) | 40 × 30 × 24 mm |
| Centimetres, Z-up | 4 × 3 × 2.4 cm |
| Metres, Z-up | 0.04 × 0.03 × 0.024 m |
| Inches, Z-up | 1.575 × 1.181 × 0.945 in |
| Millimetres, Y-up | 40 × 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 file | What it checks | Triangles | OBJ objects | Materials | OBJ size | Read back the same |
|---|---|---|---|---|---|---|
| plate-two-objects.3mf | Base, a peg used twice through a component, a cube with a colour group; 3 build items | 48 | 4 | 5 | 40 × 30 × 24 mm | Yes |
| plate-two-objects.3mf | Same plate, one OBJ object per build item | 48 | 3 | 5 | 40 × 30 × 24 mm | Yes |
| project-subfile-inch.3mf | Slicer-style project: the mesh sits in a second model file (production extension), unit inch | 12 | 1 | 1 | 25.4 × 25.4 × 12.7 mm | Yes |
| mirrored-and-painted.3mf | A cube placed mirrored (winding put back) | 12 | 1 | 1 | 20 × 20 × 20 mm | Yes |
| blend-corners.3mf | Colour group with different colours on a triangle’s corners (vertex colours on) | 12 | 1 | 2 | 30 × 30 × 2 mm | Yes |
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.
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.