Convert 3MF to OBJ

Converting 3MF to OBJ takes a file built for a slicer and gives it to software that models. It is the one conversion here that changes your numbers on purpose: 3MF declares its unit, so an inch or centimetre model is rescaled into millimetres. Part names and build placements survive; colours, materials and print settings do not.

  • Where it runs In your browser. The file is never uploaded.
  • Rebuilt OBJ works differently from a 3MF, so this is not the gradual degradation a lossy codec applies. What OBJ can express is reproduced faithfully; what it has no equivalent for does not survive at all.
  • File size limit Up to 100 MB per file, free, without an account.
  • Worth knowing Geometry only. Materials, colours, textures and animation are not carried across, and a model placed several times comes back with each copy baked into its own position.

Up to 100 files at once. Mixed formats are fine.

Taking a 3MF out of the slicer world

3MF is a printing format. PrusaSlicer, Cura, Bambu Studio and Microsoft 3D Builder all read and write it, and outside that circle support thins out quickly — plenty of modelling, CAD and rendering applications still have no importer for it at all, more than a decade after the 3MF Consortium published the specification.

OBJ has the opposite problem and the opposite virtue: it holds far less, and everything opens it. When somebody sends a part as a 3MF and it has to be modified, measured against a drawing, or dropped into a render, converting to OBJ is usually the shortest path to having it on screen.

The one conversion here that changes your 3MF coordinates

A 3MF model element carries a unit attribute, and it is the only format in this set that states one. The converter reads it and scales the geometry into millimetres: micron by 0.001, centimetre by 10, inch by 25.4, foot by 304.8 and metre by 1000, with millimetre passing through unchanged.

So a bracket authored in inches at 2.5 units wide arrives in the OBJ as 63.5 units wide. That is the same object, described in millimetres, and it is the right answer because OBJ declares no unit and the printing and CAD worlds read unlabelled numbers as millimetres. It is also the one place in this category where the numbers you see afterwards are not the numbers you started with, which is worth knowing before you compare them against a drawing.

Build placements are baked into the OBJ vertices

A 3MF separates what an object is from where it goes. The resources section holds the meshes; the build section holds items, each naming an object and optionally carrying a transform — twelve numbers describing a row-major four-by-three matrix with the last column implied.

OBJ has no equivalent, so each item's transform is applied to a copy of the object's vertices before writing. Parts land where the build section placed them. If the same object is referenced by several build items — the same spacer printed four times on one plate — you get four groups with four full copies of the geometry, because there is no other way to express it in a format without instancing.

Part names cross from 3MF objects into OBJ groups

An object with a name attribute keeps it, and that name becomes the o line of its group in the OBJ. On a multi-part print file that is the difference between importing six identifiable components and importing six anonymous shapes, and it is nearly the only non-geometric information that survives.

Objects with no name get a generated one so the grouping is still visible. Note that the direction matters: converting an OBJ to 3MF loses the names, because the 3MF writer emits objects with an id and no name attribute. The information flows out of 3MF and not back into it.

What else is in the 3MF package, and why none of it is read

3MF is an OPC package — a ZIP with a content-type map and a relationships file, the same convention DOCX uses. A slicer project 3MF puts a great deal in there beyond the geometry: print profiles, filament assignments, per-object settings, modifier meshes, support enforcers, plate layout, a preview thumbnail, and vendor-specific XML in the vendor's own namespace.

The converter finds 3D/3dmodel.model, or failing that any entry ending in .model, and reads the geometry out of it. Everything else in the archive is ignored. That is the correct scope — none of it has a representation in an OBJ — but it means a converted project file is the shapes and nothing else, and the print setup stays behind in the 3MF you should keep.

Objects assembled from components are not read

3MF allows an object to be defined not by its own mesh but by a components element listing other objects, each with its own transform. It is how the format expresses an assembly built from reusable parts, and it is legal and used.

This converter reads the mesh element of each object and does not follow components. An object defined that way contributes no geometry, and if every object in the file is a component assembly the conversion ends with a message that no triangle geometry was found. If a converted file is missing parts you can see in your slicer, this is the first thing to check — re-exporting from the slicer usually flattens the assembly into plain meshes.

3MF resources that no build item references are dropped

When a 3MF has a build section, only the objects its items reference are converted. An object sitting in resources that nothing builds is not written into the OBJ, which is deliberate: the build section is the file's statement of what is actually on the plate.

There is one fallback. A 3MF with resources and no build section at all — unusual but readable — has its objects converted anyway, since they are plainly the content and simply have no declared placement. Between those two rules, a converted OBJ contains what the 3MF said was being made, and a part that vanishes was a part the file did not claim.

Colour and materials stay behind in the 3MF

3MF has a real material model: base material groups, colour groups, and a property index on each triangle so a single object can be multi-coloured. Multi-material printers use it and slicers write it. None of it is read here, and an OBJ has nowhere to put it — the converter writes no mtllib line and produces no .mtl file, so the geometry arrives materially blank.

This is the cost of a converter that carries geometry between six formats that agree on very little else. If a multi-material 3MF is being converted so somebody can re-colour it, the colours have to be re-authored at the far end. Keeping the original 3MF alongside the OBJ is the only way to preserve the assignment.

Opening the OBJ, and what to check first

The file imports into Blender, MeshLab, Maya and everything else without configuration. It contains only o, v and f lines, so expect flat shading — no vn lines means face normals are computed on import — and no material.

The first thing worth checking is the size. The OBJ is in millimetres by construction, and modelling applications differ on what an unlabelled unit means: Blender treats one unit as a metre by default, so a 63.5 mm part appears as a 63.5-metre object unless the import scale is set. That is a display and scene-scale question rather than a conversion error, and reading one known dimension off the model settles it in ten seconds.

How to convert 3MF to OBJ

  1. Drop your 3MF onto this page, or click to choose one.
  2. The package is unzipped, the units converted to millimetres and the geometry written as OBJ, in your browser.
  3. Download the .obj and import it into your modelling software.

3MF against OBJ: a manufacturing package meeting a mesh file

3MF compared with OBJ
3MFOBJ
Full name3D Manufacturing FormatWavefront Object
File extension.3mf.obj
Media typemodel/3mfmodel/obj
First published20151992
Published by3MF ConsortiumWavefront Technologies
Specification3MF Core Specification
LicensingOpen standardOpen standard
Standing todayCurrentCurrent
Opens in a browserNo browserNo browser
Considered insteadSTLGLTF, PLY, STL

Opening the result

The usual programs do not overlap: 3MF opens in PrusaSlicer, Cura and Microsoft 3D Builder, OBJ in Blender, MeshLab and Maya — so whoever receives the result needs something from the second list.

What each format is for

The two are aimed at different work: 3MF at 3D printing, OBJ at moving data between programs and editing. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.

3MF is 3MF Consortium's format, published in 2015. The specification is 3MF Core Specification, and it is worth reading if the file has to outlive the tool that wrote it.

OBJ comes from Wavefront Technologies and dates from 1992. Blender, MeshLab and Maya all read it.

OBJ was published in 1992 and 3MF in 2015. The older one is generally the safer file to hand to somebody; the newer one usually does the job in fewer bytes.

3MF to OBJ: what comes out of the package

Are my 3MF files uploaded anywhere?

No. This conversion runs entirely inside your browser, so the file never leaves your device. You can confirm it yourself: open the network tab of your browser's developer tools and convert something. You will see the page load, plus the analytics and advertising the site is paid for with — and nothing carrying your file.

Does the scale change during the conversion?

It can, and that is deliberate. 3MF declares its unit, and the converter scales micron, centimetre, inch, foot and metre into millimetres. A model authored in inches comes out with coordinates 25.4 times larger, which is the same physical size expressed in millimetres.

Do the part names survive?

Yes. An object with a name attribute in the 3MF becomes an OBJ o group with that name, so a multi-part print file imports as named objects. Objects with no name get a generated one.

Some of my parts are missing. Why?

Two causes. An object that no build item references is dropped whenever the file has a build section, which is how a 3MF can carry unused resources. And an object assembled from components rather than holding its own mesh is not read.

Can I convert a slicer project file?

The geometry, yes. The converter takes 3D/3dmodel.model out of the package and ignores everything else, so print settings, plate layout, thumbnails, modifier meshes and per-object configuration are not carried into the OBJ.

Does the colour of a multi-material 3MF come across?

No. Colours, base materials and property indices are not read, and an OBJ has nowhere to put them anyway — no material file is written and no mtllib line appears.

Are placement transforms applied?

Yes. Each build item can carry a transform, and it is baked into the vertices, so parts arrive in the OBJ where the 3MF placed them rather than stacked at the origin.

More about these formats