STL vs OBJ vs 3MF: 3D Printing File Formats Compared
When you export a model for 3D printing, you usually get a choice of three
formats: .stl, .obj, and .3mf. They all describe the
same physical object, but they carry very different amounts of information — and picking
the wrong one can mean a model that prints in the wrong colour, the wrong size, or not at all.
This guide breaks down what each format stores, where it came from, and which one belongs in
your workflow.
STL — the universal mesh
STL is the oldest of the three, created in 1987 by 3D Systems for their stereolithography
machines. Its job is deliberately narrow: it describes the surface of an object as a
mesh of triangles and nothing else. No colour, no texture, no units, no materials
— just (x, y, z) coordinates for each triangle's corners and a normal vector
telling the slicer which side faces out. If you want the full story on how that works, see our
guide on what an STL file is.
That minimalism is exactly why STL has survived for nearly four decades. The format is so
simple that every CAD program, sculpting app, slicer, and online printing service can read and
write it without fuss. The trade-off is that STL knows nothing about your design intent —
a value of 20 could be millimetres, centimetres, or inches, and the file will not
tell you which.
OBJ — the graphics-world mesh
The OBJ format comes from Wavefront Technologies in the late 1980s and grew up in the world
of computer graphics, animation, and visual effects rather than fabrication. Like STL it stores
a mesh, but it can also store UV texture coordinates and vertex colour, and it
references a companion .mtl (material) file that defines surface colours and image
textures. An OBJ model therefore usually arrives as a pair of files, not one.
Because it preserves texture and colour data, OBJ is the natural export when a model comes out of Blender, ZBrush, or another sculpting and texturing tool. It can also store smooth-shading and quad faces, which artists prefer. For pure single-colour printing it offers little over STL, and not every slicer handles its colour data, so its strength is really the bridge between graphics software and a colour-capable printer.
3MF — the modern print format
3MF (3D Manufacturing Format) is the newcomer, published by the 3MF Consortium — a group including Microsoft, Autodesk, HP, and others — with the explicit goal of fixing STL's shortcomings for modern printing. Under the hood a 3MF file is a ZIP archive containing XML, which lets it pack far more than geometry into a single, compact file.
A 3MF file can store units, colour, multiple materials, several distinct objects, and print settings such as supports and orientation, all in one place. This is why it has become the native format of modern slicer ecosystems: when you save a project in Bambu Studio, PrusaSlicer, or OrcaSlicer, you are saving a 3MF. For multi-colour and multi-material printing it carries exactly the information STL and OBJ cannot.
Side-by-side comparison
| STL | OBJ | 3MF | |
|---|---|---|---|
| Stores colour? | No | Yes (via .mtl) | Yes (built in) |
| Stores units? | No | No | Yes (millimetres defined) |
| File size | Moderate | Larger (plus textures) | Compact (zipped) |
| Multi-object | No (single mesh) | Partial | Yes |
| Print metadata | None | None | Supports, settings, materials |
| Best use | Universal single-colour printing | Textured models from graphics tools | Multi-colour / multi-material printing |
Which format should you use?
There is no single winner — the right choice depends on where your model is going.
- Use STL for single-colour prints and for sharing a model with anyone, anywhere. It is the safest universal choice: every slicer and print service accepts it, and there is no risk of a colour or material slipping through unsupported. When in doubt, STL just works.
- Use 3MF when you are printing in multiple colours or materials, or working inside a Bambu Lab or Prusa workflow. Because it carries units and print settings, a 3MF imports at the correct size and can even bring your supports and plate layout along with it.
- Use OBJ when your model originates in Blender, ZBrush, or similar software and you need to preserve textures or vertex colour on the way to a colour-capable printer.
Why STL still dominates despite its age
It would be easy to assume the oldest format is the worst, but STL's longevity is earned. Its very simplicity means there is almost nothing to go wrong: no material definitions to misread, no archive to unpack, no version mismatches. That reliability is why STL is still the default export on most CAD tools and the lingua franca of print-sharing sites. 3MF is genuinely better when you need colour, materials, or metadata — but for the large majority of prints that are a single colour, STL is the path of least resistance, and that is unlikely to change soon.
Whatever format you ship, the underlying mesh still has to be valid. Any of these formats can contain a broken model, so it is worth understanding why your geometry must be water-tight and manifold before it reaches a slicer. And once you have a clean file, your slicer software is what turns it into the G-code your printer actually follows.
Generate a print-ready STL — free
Need a clean model to start from? Pick a shape, adjust its dimensions, and export a water-tight STL right in your browser — no sign-up, no install, nothing uploaded.
Open the STL generator →Frequently asked questions
Is 3MF better than STL for 3D printing?
For multi-colour, multi-material, or settings-rich projects, yes — 3MF stores information STL simply cannot, and it imports at the correct size. For ordinary single-colour prints, STL is just as good and far more universally supported, so it remains the safer default when you are sharing a file.
Can every slicer open OBJ and 3MF files?
Most modern slicers (Cura, PrusaSlicer, Bambu Studio, OrcaSlicer) open all three formats. Older or more specialised tools, and many online print services, still expect STL, which is why STL stays the lowest-common-denominator format for handing a model to someone else.
Why does my model import at the wrong size?
STL and OBJ store no units, so a slicer has to guess — usually millimetres. If your model was authored in another unit it can appear far too big or too small. 3MF avoids this entirely because it records units in the file. With STL or OBJ, just rescale in the slicer.