The main 3d model file formats are STL (a 1987 surface-only format for printing), OBJ (geometry plus texture coordinates) and 3MF (a 2015 XML-based format built for additive manufacturing). Each suits a different job.
Picking the right one is a core skill in 3d modeling, because exporting the wrong format can silently drop colour, scale or texture data.
STL: the 1987 printing default
STL was developed by the Albert Consulting Group for the first commercial 3D printers of 3D Systems in 1987. Nearly four decades later it is still the format most slicers accept, which makes it the lowest common denominator for printing.
Its limits are built in. STL files contain no scale information, and the units are arbitrary, so a part exported in millimetres can arrive in a slicer as inches. The format also describes only surface geometry, without any representation of colour, texture or other common CAD model attributes.
STL comes in two encodings, ASCII and binary. A binary STL file has an 80-character header that is generally ignored, and each triangle is described by 12 32-bit floating-point numbers: 3 for the normal and then 3 for the X/Y/Z coordinate of each vertex. Binary files are more compact, so they are the usual choice for large meshes.
OBJ: geometry with texture coordinates
OBJ, the Wavefront format, stores geometry in plain text, which makes it easy to read, debug and parse. It records the position of each vertex, the UV position of each texture coordinate, vertex normals and the faces that make each polygon.
Faces reference those lists by index, and each index starts at 1. A face written as vertex_index/texture_index/normal_index ties a corner of a polygon to its position, its spot on a texture image and its shading direction. Texture coordinates vary between 0 and 1, so a texture image maps onto the surface regardless of its pixel size.
That makes OBJ a common exchange format between DCC tools. Programs such as blender import and export it, and it is a safe way to move a textured mesh between applications. Its weakness is that it represents geometry alone: animation, rigs and scene hierarchy are outside its scope.

3MF: a modern format for printing
3MF was created in 2015 by the 3MF Consortium, whose first members included Autodesk, Dassault Systèmes, FIT AG, HP, Microsoft, Shapeways and SLM. It is an open-source, XML-based data format designed specifically for additive manufacturing.
It targets the gaps in STL. Print parameters can travel inside the file, which removes the need to share them separately when distributing a design to be manufactured. The 3MF Consortium describes the format as designed to be much simpler to implement than other CAD formats, and Materialise, 3D Systems, Siemens Digital Industries Software and Stratasys joined the consortium over time.
For anyone printing, 3MF is the better choice when the slicer supports it, since scale and settings are less likely to be lost along the way.
Choosing between 3d model file formats
Three questions settle most choices: does the file need colour or textures, will it be printed, and who receives it? A 3d model headed to a printer needs scale and reliable geometry, while one headed to a renderer needs texture mapping.
| Format | Introduced | Best for | Main limit |
|---|---|---|---|
| STL | 1987 | Universal slicer input | No colour, texture or scale information |
| OBJ | Wavefront-era | Textured mesh exchange | Geometry only |
| 3MF | 2015 | Modern 3D printing | Less universal support than STL |
Table facts come from the Wikipedia entries for STL and 3MF.
A practical rule: keep a native project file for editing, export 3MF or STL for printing, and export OBJ when a textured mesh has to move between programs. The native file keeps history, modifiers and layers that none of the three exchange formats can hold, so it should remain the master copy.
The decision also depends on the receiving end. A print shop that asks for “an STL” usually wants a single closed mesh with no colour. A game artist asking for “an OBJ” usually wants a mesh with UVs ready to texture. A manufacturer using a multi-material machine is the case where 3MF pays off, since it carries more than raw triangles.
Export mistakes that corrupt a model
The 80-character header of a binary STL file causes one well-known trap. It is generally ignored, but it should never begin with the ASCII representation of the string solid, as that may lead some software to confuse it with an ASCII STL file. A binary file with a header such as “solid bracket” can therefore fail to load in some tools.
Unit confusion is the more common failure. Because STL units are arbitrary, a part designed in millimetres can appear far too large or too small after a millimetre-to-inch mismatch. The fix is procedural: state the unit in the file name or the hand-off message, and check the dimensions in the slicer before printing. 3MF reduces this risk by carrying more information in the file itself.
Texture loss is the third trap. Exporting a coloured model to STL discards colour entirely, since the format records only triangles. If the model has painted colours, export OBJ for rendering or 3MF for colour printing, and keep the texture images alongside the file, because OBJ stores the texture coordinates while the image data lives elsewhere.
Finally, the ASCII form of STL is readable but large. It closes each solid with the line endsolid followed by the name, and whitespace may be used almost anywhere except within numbers. That readability helps when debugging a broken file in a text editor, yet binary remains the better format for production, since binary files are more compact.
A short pre-export checklist catches most of these problems. Confirm the unit in the modelling program, apply any scale transforms so the exported size matches the viewport, and check that the mesh is a single closed surface before sending it to a printer. After exporting, re-import the file into a clean scene and compare it with the original. If the model arrives with the wrong size, flipped faces or missing texture, the cause is almost always in the export settings rather than in the model itself.
Naming also matters in a shared project. A file called bracket_v3_mm_binary.stl tells the recipient the unit and the encoding at a glance, and a short text note beside an OBJ should list its texture image files. These habits cost seconds and prevent reprints that cost hours of machine time and a spool of material.
Frequently asked questions
Is STL or OBJ better for 3D printing?
Is STL or OBJ better for 3D printing?
STL is the more common choice for printing, since it was developed for 3D Systems printers in 1987. OBJ adds texture coordinates, which matter only for coloured prints.
Does STL store units?
Does STL store units?
No. According to Wikipedia’s STL entry, STL files contain no scale information, and the units are arbitrary, so confirm the unit in the slicer.
Why use 3MF instead of STL?
Why use 3MF instead of STL?
3MF, published by the 3MF Consortium since 2015, can carry print parameters inside the file, whereas STL holds only surface geometry.



