Cookies for analytics and advertising
We use cookies for analytics and advertising, both sent to Google. Refusing changes nothing you can see.Read the privacy page
Converting OBJ to 3MF turns an interchange mesh into the package a modern slicer prefers: a proper OPC archive with each OBJ group as its own object on the plate. One thing to watch — an OBJ carries no unit, and the 3MF is written declaring millimetres, so verify the size once after importing.
Up to 100 files at once. Mixed formats are fine.
They convert one after another and download together as a ZIP.
OBJ to 3MF
OBJ is what modelling and marketplace pipelines emit because everything reads it. It is not what slicers were designed around. PrusaSlicer, Cura and Bambu Studio all import OBJ, and all of them treat 3MF as the format that carries the information they actually need: real units, separate objects, and a container with a manifest rather than a bare list of numbers.
The 3MF Consortium published the format in 2015 specifically to replace STL, and the problems it fixed are the ones an OBJ shares — no declared unit, no packaging, no way to say that this file contains three parts rather than one shape. Converting is a small step that removes a class of scale and grouping mistakes from the rest of the job.
This is the one thing worth reading twice. A 3MF declares its unit in the model element, and the file written here always declares millimetre. The coordinates from the OBJ are copied through untouched. Nothing inspects them and nothing scales them, because an OBJ contains no information that would make that possible.
So the conversion turns an unstated assumption into a stated fact. If the OBJ was modelled in millimetres — which is the convention in most CAD and most printing workflows — the declaration is correct and the model imports at size. If it was modelled in metres, as a Blender default scene often is, a 100 mm part arrives as 0.1 mm. If in inches, it arrives 25.4 times too small. Import once, measure one dimension you know, and scale if you must.
A ZIP archive with three entries. [Content_Types].xml maps the .model extension to the 3D manufacturing content type and .rels to the relationships type. _rels/.rels contains one relationship pointing at the model. And 3D/3dmodel.model is the XML itself, in the 3MF core namespace, with a resources section of objects and a build section of items.
The two small XML files are not optional decoration. 3MF is an OPC package, the same packaging convention DOCX and XLSX use, and a slicer handed the model file alone with no content-type map rejects the archive outright. That is the most common way a hand-assembled 3MF fails and it is worth knowing when debugging one somebody else produced.
The OBJ reader starts a new group at every o and every g line. Each of those becomes a separate object element with its own vertex and triangle lists, and a matching item in the build section that places it. Your slicer shows them as distinct objects you can select, move, scale and assign settings to independently.
That is a genuine improvement over the STL route, where every part is fused into one triangle soup and separating them again means a Split to Parts operation that may or may not find the seams you wanted. If your OBJ has no o or g lines at all — plenty of exports do not — you get one object, which is the correct answer for a single-part model.
The names are read: the OBJ reader keeps whatever follows the o or g keyword. The 3MF writer does not write them, emitting objects with an id and a type and no name attribute. So the separation survives and the labels do not, and a five-part assembly appears in the slicer as five unnamed objects in the order they appeared in the file.
For a print job that is usually tolerable, because the parts are visually distinct on the plate. It is worth knowing if you were planning to identify small similar-looking components by name — writing them down in file order before converting is easier than working it out from the plate afterwards.
The 3MF specification expects a printable object to be a closed, manifold volume. Nothing in this conversion checks that, and nothing repairs it. Open edges, flipped triangles, self-intersections, internal walls and zero-area faces all pass through unchanged into the 3MF, and your slicer reports them at exactly the point it would have reported them from the OBJ.
What the conversion does do is weld vertices at six decimal places, which fixes one specific and common defect: a mesh whose triangles were exported with unshared vertices, so that a surface that is geometrically closed reads as thousands of open edges. After welding, adjacent triangles genuinely share a vertex and a manifold check gives a meaningful answer. Everything beyond that belongs in Blender, Meshmixer or your slicer's own repair.
3MF holds triangles only, and OBJ face lines can have any number of corners. Faces with more than three are fan-triangulated from the first corner, which is exactly right for a convex quad — the common case in a subdivision or CAD export — and can produce overlapping or inverted triangles on a concave polygon.
Sculpting and retopology output is almost entirely quads and is safe. The case to watch is a CAD or architectural export with large concave faces, where a fan can put geometry where the surface is not. If a converted part shows a strange sliver on the plate, triangulating in the source application before exporting the OBJ removes the ambiguity rather than working around it.
All three open it directly. What arrives is a plain model 3MF: geometry, units and object separation. It is not a project file — there are no print settings, no filament choices, no plate layout and no thumbnail inside it, because those are extensions each slicer writes into its own 3MF and none of them belongs in a converted mesh.
The practical effect is that the file behaves like an imported model rather than a saved project. Your slicer applies the profile you already have selected, arranges the objects, and lets you save its own project 3MF afterwards if you want the settings stored with the geometry. That saved file will be considerably larger and will carry the vendor's own extension namespaces.
Print services and older slicers are the reason STL still exists. If the model is going to an online print bureau, a resin workflow built around a vendor tool from before 2018, or any pipeline whose upload form lists one extension, convert to STL and accept the flattening of parts into one shape.
Everywhere else 3MF is the better target: units are declared, parts stay parts, the package is validated by construction, and the file is a compressed archive rather than fifty bytes per triangle. The cost of choosing it is the scale check described above, which takes ten seconds and saves a failed print.
| OBJ | 3MF | |
|---|---|---|
| Full name | Wavefront Object | 3D Manufacturing Format |
| File extension | .obj | .3mf |
| Media type | model/obj | model/3mf |
| First published | 1992 | 2015 |
| Published by | Wavefront Technologies | 3MF Consortium |
| Specification | — | 3MF Core Specification |
| Licensing | Open standard | Open standard |
| Standing today | Current | Current |
| Opens in a browser | No browser | No browser |
| Considered instead | GLTF, PLY, STL | STL |
The usual programs do not overlap: OBJ opens in Blender, MeshLab and Maya, 3MF in PrusaSlicer, Cura and Microsoft 3D Builder — so whoever receives the result needs something from the second list.
The two are aimed at different work: OBJ at moving data between programs and editing, 3MF at 3D printing. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.
3MF comes from 3MF Consortium and dates from 2015, specified as 3MF Core Specification. PrusaSlicer, Cura and Microsoft 3D Builder 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.
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.
Only if the OBJ was authored in millimetres. The 3MF is written with unit="millimeter" and the coordinates are copied through unchanged, so a model authored in metres or inches arrives declared as millimetres and lands at the wrong size. Check one known dimension after import.
Yes. Each o or g group in the OBJ becomes its own object in the 3MF with its own build item, so a multi-part model arrives on the plate as several selectable objects rather than one merged solid.
No. Objects are written with an id and no name attribute, so your slicer will show them as unnamed objects in plate order. The geometry and the separation survive; the labels do not.
No. Nothing here checks manifoldness, closes holes or fixes flipped triangles. An OBJ with open edges converts into a 3MF with the same open edges, and your slicer will report it at the same point it would have.
No. 3MF can carry colours and materials and this conversion writes none of them, because the OBJ side is read as geometry and its MTL file is never opened. The 3MF describes shape only.
Yes. It is a ZIP containing [Content_Types].xml, _rels/.rels and 3D/3dmodel.model, which is what makes it an OPC package a slicer will accept. A bare model file without those two would be rejected.