What is the best 3D printer file format? Which format should you use? We explain and compare the four most common 3D printing file formats: STL, OBJ, AMF, and 3MF.
To print a three-dimensional object, a 3D printer needs a digital blueprint of the object. This is just a file that stores all the relevant data about the object such as geometry, color, texture, and materials. There are several file formats that can hold such data. These formats are known as 3D file formats. Examples include STL, COLLADA, OBJ, FBX, X3D, etc.
Not all 3D file formats are 3D printer file formats though.
3D printer file formats are a subset of 3D file formats that are used for 3D printing. Even though almost all 3D file formats can theoretically be used for 3D printing, only a few formats have emerged as go-to formats for 3D printing. This has happened for some historical, practical, and design reasons which we will discuss later.
The result is that only these formats have respectable support across the 3D printing toolchain and therefore, everyone ends up using them when they want to 3D print something. These common 3D printer file formats are respectively STL, OBJ, AMF, and 3MF.
Why should you care about those three letter extensions anyway? Does it make a difference?
We think it does for two reasons.
Your 3D printer file is the carrier of information from the CAD model to the printer. Not all 3D printer file formats can carry all kinds of information.
If you are primarily printing with a single material and in a single color, STL will do the job. But the moment you move to multicolor printing, you have to ditch STL because it is simply not capable of storing colors.
Color is just one aspect of 3D printing. There are plenty of other factors like materials and precision. Depending on your print job, you would have to select a 3D printer file format that is capable of transmitting the necessary information to the printer.
Not all file formats are compatible with all the 3D printing software and hardware.
For example, the CAD software Blender supports importing and exporting STL files but has no support for the 3MF 3D printer file format. Should you want to use the 3MF format in the future (it has many features that you might want), you have to ditch Blender and move to another CAD software (like Solidworks) with the required capabilities. Not only does this cost you money, but also a lot of time for learning and adapting to a new tool.
This also holds for Slicers like Cura or Simplify3D.
Because of these two reasons, it’s a good thing to be informed about the different 3D printer file formats and their features, strength, weaknesses, applications, and compatibility.
But how to get informed? Well simply read on. We have covered everything you need to know about the different 3D printer file formats in the following sections.
Ask a lot of 3D printing professionals which format they use, and you will most likely get the same answer every time – “STL”.
As of today, STL is the undisputed champion among 3D printer file formats. STL’s history goes back to the invention of 3D printing itself. The first 3D printer was invented by Chuck Hull in 1987 at 3D Systems. The same guy was behind the STL file format.
Ever since its invention, it has remained the de facto standard in the 3D printing industry. The format specification has remained the same for 30 years. In spite of its age and limitations, most 3D printing workflows today continue to use this format (and this format alone) because of the strong support it enjoys in every piece of software and hardware in the 3D printing toolchain.
STL is one of the simplest open source file formats. It supports both ASCII (larger file size, human readable) and binary (smaller file size) encodings.
It can encode a 3D model’s geometry but has no support for storing any other interesting object properties. You cannot store information about colors, textures or materials.
Till recently, most 3D printers were only capable of printing models with a single material. Therefore, a file format that stores just geometry was sufficient.
In the last few years, multi-color 3D printing has rapidly gained traction. While it is still not mainstream, we believe it will be in a few years. STL files will be unusable with these printers.
STL also uses a very simple-minded approach called “tessellations” to store geometry. This has turned out to be both a boon and curse.
Tessellation is the process of tiling a surface with one or more geometric shapes such that there are no overlaps or gaps. If you have ever seen a tiled floor or wall, that is a good real-life example of tessellation.
The STL 3D printer file format uses triangular tiles to cover the surface of a 3D model. The vertices and normals of these triangles are stored in the file to encode the geometry of the model.
The triangles can be made arbitrarily small to approximate curved regions. However, the smaller the triangles, the larger the number of triangles required to cover the surface. Storing information about a large number of triangles can take a lot of space, leading to large file sizes. Therefore, precision comes at the cost of size in this 3D printer file format.
As the fidelity of 3D printing reaches micron level accuracy, the large file sizes are soon going to be a big problem.
There is no doubt that STL is a simple and old 3D printer file format. So why do people continue to use it?
The answer is: precisely because it’s old and simple. As the file format was used in the first-ever 3D printer (1987), it quickly became a 3D printing standard. Manufacturers other than 3D Systems adopted it too because it was the most rational choice back then.
As almost all hardware manufacturers bet on this 3D printer file format, CAD software manufacturers had to follow to satisfy demand. Over two decades, almost every major CAD software has included Import and Export support for the STL format. The simplicity of the 3D printer file format helped in this process, as writing parsers for STL is quite easy.
Soon, STL became a ubiquitous part of every software and hardware component in the 3D printing toolchain. If a new 3D printing product appeared, STL would be the first format to be supported, ensuring that the product works well together with other parts of the workflow. This is still true today.
As the entire workflow became STL compatible, 3D printing enthusiasts and practitioners naturally started choosing STL over other formats which did not have equivalent support.
STL became the de facto standard for 3D printing. Most 3D printable models are also shared as STL on the internet. Scores of sophisticated supporting software, such as STL file repair tools, came into existence. The internet became flooded with documentation, Q & A, troubleshooting information, and tutorials related to the STL 3D printer file format.
All these factors are responsible for making STL such a successful format for 3D printing. People still overwhelmingly choose it for 3D printing today and we think that this trend would continue for at least five more years.
While enjoying the best support from manufacturers among 3D printer file formats, STL is a sorely outdated file format. It doesn’t help that the format hasn’t been updated a single time since its invention. The needs of 1987 are not the needs of 2017. Here are the shortcomings of the 3D printer file format that people complain about most loudly.
The easiest way to show this is via an example. Here is a comparison listing file size of the same model (~63,000 triangular faces) saves as different 3D file formats.
As you can see, STL is the most bloated format in the list. This happens because STL stores the normals to the triangles (even though this is redundant information). When the normals are not available, it insists on a default (0, 0, 0) value, which also unnecessarily takes up space.
In spite of being the most bloated format, STL actually stores less information than its counterparts! It does not store information about the connectivity of the triangular faces tiling the surface. Without connectivity, the file essentially represents a bunch of triangles floating in space, also referred to as “triangle soup”. Software that read STL files typically has to guess or compute connectivity information. This step is slow and error-prone.
Anyone who has used STL files knows that there is no guarantee if a file will print properly. 3D printing requires watertight geometry, but many STL files have holes or overlapping triangles. The 3D printer file format does not enforce many checks on the geometry, so people have to resort to STL repair software to check and repair it manually.
Many 3D printers are now capable of printing multicolor objects with graded material compositions. However, STL files cannot encode any information other than geometry. So STL is utterly unusable with these advanced printers.
In STL, there is no field for storing the units used in the model. It could be mm, cm, inches or feet for all you know.
One of the strengths of the STL 3D printer file format is that there is no dearth of downloadable models and supporting software. If you are interested in playing with STL files, the following STL resources may interest you.
There are many repositories, marketplaces and search engines on the web containing literally millions of free STL files. Thingiverse is probably the largest STL file repository on the internet – so check it out. You can also refer to our regularly updated list: 33 Best Sites for Free STL Files & 3D Printer Models in 2019.
There are several free STL file viewers for this purpose, which you can either use online (e.g VIewSTL) or as a desktop application (e.g. GLC-Player). Refer to our dedicated guide here: 20 Best Free STL File Viewer Tools in 2019
Because the format is open, there is nothing to prevent you from changing the contents of a file using a software like FreeCAD.
There are several programs which can help with repairing a broken STL file. For example, Netfabb is a great tool for repairing the most common STL file problems.
We have a dedicated article on this topic: 7 Free STL Editors + How to Edit and Repair STL Files
Want to know more about the STL file format? Read our detailed article: STL File Format (3D Printing) - Simply Explained
Since the STL 3D printer file format cannot store color information, the OBJ format is the preferred 3D printer file format for multicolor printing.
The OBJ 3D printer file format was originally used by 3D graphics designers as a neutral interchange format for 3D graphics. It was later adopted by the 3D printing community when 3D printers got the capability of printing in multiple colors and materials.
OBJ is not the only 3D graphics format that was suited for the job though. FBX and COLLADA were worthy candidates. So why did the community adopt OBJ instead of the other 3D graphics file formats?
The two factors that worked in the favor of the OBJ 3D printer file format are its open source license and simplicity.
This meant that it was way easier for CAD manufacturers to write consistent parsers for importing and exporting OBJ files than for its closest competitor FBX (proprietary format) or COLLADA (complicated specification). As a result, it emerged as the winning candidate for multicolor printing.
The OBJ 3D printer file format is an open source specification. The 3D printer file format supports both ASCII (human readable, larger file size) and binary (smaller file size) encodings.
OBJ files can encode a 3D model’s geometry along with information about color, materials, and textures.
It offers a lot of flexibility in how it encodes geometry. You can use tessellations with polygons to cover the object surface (just like STL), which means that, once again, you have to strike a balance between file size and precision
But if you wish, you can also use more advanced schemes like free-form curves and free-form surfaces. These schemes are able to encode a curved geometry faithfully without losing any information. In addition to being precise, they lead to far smaller files compared to the more basic methods.
The OBJ 3D printer file format also lets you store color and texture information in a companion file format called the Material Template Library (MTL) format. It has the file extension MTL. The .OBJ file, when paired with the corresponding MTL file, can render a multicolor textured model.
MTL files can define material properties like ambient color, diffuse color, specular color, transparency etc.
In addition to supporting these material properties, the MTL format also supports texture maps, which is a more convenient method of specifying colors and textures. In texture mapping, every point in the 3D model’s surface (or the polygonal mesh) is mapped to a 2-dimensional image. The coordinates of the 2D image have attributes like color and texture. When rendering the 3D model, every surface point is assigned a coordinate in this 2-dimensional image. The vertices of the mesh are mapped first. The other points are then assigned coordinates by interpolating between the coordinates of the vertices.
If the STL 3D printer file format supported color, texture, and material related information, then people would most likely stick to STL and there wouldn’t be any need for using the OBJ format.
But, as it turns out, it can’t. So with the advent of multicolor 3D printing, people had to find a worthy alternative. The alternative turned out to be OBJ.
With time, it has gained decent support across the 3D printing toolchain (CAD and Slicers), though not as much as the STL 3D printer file format.
The OBJ 3D printer file format is also widely used in industries which are unforgiving when it comes to precision, such as the aerospace and automotive industries. As we discussed before, this format can encode geometry faithfully using free-form surfaces and curves without sacrificing file size. The STL 3D printer file format can’t do that. Therefore, precision engineering disciplines use the OBJ format for high precision 3D printing.
The biggest problem with the OBJ 3D printer file format is that it is much more complicated than the STL format, and repairing a broken OBJ file can sometimes give you a headache. There’s not a lot of great online tools for editing and repairing OBJ file, which compounds the problem.
Another common frustration is the fact that OBJ files come in pairs (a .OBJ file along with a .MTL file). In companies where the progression from design to printing involves hundreds of people, the MTL files often get lost or separated from its parent OBJ file, leading to a lot of confusion.
The OBJ 3D printer file format also isn’t supported as much as the STL format. For example, you might have to use plugins to export OBJ files with Solidworks. So before you start using the OBJ format, make sure your setup supports it.
So where should you go if you want to download, read or repair OBJ files? Here’s a rundown:
There are many repositories, marketplaces and search engines on the web containing literally thousands of free OBJ files. The major places for downloading OBJ files are TurboSquid, Free 3D, CGTrader, Archive3D, Clara, The Free 3D Models and Oyonale.
Fortunately, opening an OBJ file is not too complicated. Most CAD software will be able to open an OBJ file and let you view it. In particular, you can try Solidworks, Fusion 360, Blender, Rhino, Cinema4D, and Unity. You can also view OBJ files online without the hassle of downloading and installing software on your machine. Autodesk360Viewer, 3DViewerOnline, 3D-Tool are online 3D model viewers that support the OBJ 3D printer file format.
There are some programs which can help with repairing a broken OBJ file. For example, Netfabb Basic, Meshmixer and Meshlab are all great tools for repairing the most common OBJ file problems.
Want to know more about the OBJ 3D printer file format? Read our detailed article: OBJ File Format – Simply Explained for CAD and 3D Printing
The AMF 3D printer file format was introduced in 2011 as a replacement for the STL file format. At the time it was dubbed “STL 2.0”. The aim was to address many of the shortcomings of the STL 3D printer file formats. As we already discussed, STL is bloated, slow, error-prone and incapable of storing color, material and texture information.
To fix these issues, the ASTM was tasked to come up with a modern file format native to additive manufacturing. They eventually came up with the AMF 3D printer file format. It is an XML based format with native support for geometry, scale, color, materials, lattices, duplicates, and orientation. In all technical aspects, it is superior to the STL file format.
That’s awesome, right? Or is it?
The bad news is that the 3D printing industry has been rather slow to adopt the AMF format, in spite of its technical superiority. In the meantime, Microsoft came up with the 3MF format, which also aims to be an alternative to the STL 3D printer file format. They did things differently than the ASTM. Instead of keeping the development process to a select few experts, they set up a Consortium which includes many big names in the industry to govern the development and progress of the 3MF format. For a while, the industry was abuzz with excitement about this new file format.
While we know that the STL 3D printer file format will be replaced eventually, we don’t know if AMF or 3MF will be the one to do it.
We will come to the 3MF format soon. But before that, let’s look at the AMF 3D printer file format a little more deeply.
AMF addresses the issues in STL by using an XML format (human readable) with a hierarchy of five elements, object, material, texture, constellation, and metadata.
The XML formatting ensures that the file is easy to read, write and process.
It describes object surfaces with triangular meshes, just like STL. But there is one important difference. It allows curved triangles in addition to planar straight triangles – and it makes all the difference. Using curved triangles, you can describe a curved surface without using too many facets. This means that AMF can handle curved surfaces while staying lean on file size.
It has support for all the modern requirements of 3D printing. RGBA colors, graded colors and texture mappings are supported. It can natively handle mixed and graded materials, sub-structures, microstructures, porous, and stochastic materials.
The “constellation” feature allows manufacturers to specify the relative pattern of the objects within the file. This allows multiple objects to be arranged within the file, specifying their location and orientation.
But to ensure that all 3D printers, old and new, can work with an AMF file, it allows printers to pick and choose information necessary for its operation. For example, if a printer is only capable of working with one material, multi-material information is simply ignored. This capability applies for all elements including color, texture, and composition.
With the AMF 3D printer file format, you can specify the scale of the design in different units. The absence of this feature is a source of great frustration for STL users.
Finally, it has extensive metadata fields including name, author, company, description, volume, tolerances, and much more.
There is no doubt that AMF is much better suited to modern 3D printing than STL. But the biggest problem with using AMF today is its limited adoption.
Some say that the 3D printer file format came out way too early. In 2011, the majority of manufacturers employed extrusion based processes which only used one material. They also didn’t produce full-color parts.
This meant that they were perfectly happy with STL’s limited capabilities. Okay, not perfectly happy. You can never be perfectly happy with the STL format. But the problems caused by STL didn’t provide enough justification to change the entire pipeline to support AMF.
As a result, adoption has been slow – very slow. The CAD software manufacturers didn’t help as they decided to wait until AMF reaches critical mass among equipment manufacturers.
As of today, Solidworks and the Autodesk suite supports it. Stratasys has also signaled its cooperation, even though they might move away and focus on 3MF as they are a part of the 3MF Consortium. Online 3D printing services like Shapeways and Materialize has started accepting AMF files too.
Among Slicers, Cura has support for AMF. Simplify3D still doesn’t.
Maybe if we wait a bit longer, this is no longer going to be a problem. But to work with AMF right now, you need to ensure that all the software and hardware in your toolchain are capable of working with it.
AMF became an ISO standard in 2013. It is widely held to have gone into a standards body too early as well, having some features not clearly defined and other features missing. Most importantly, they did not consult the main players in the 3D printing industry before turning it into an official standard- a mistake that has been capitalized on by its competitor, the 3MF format.
If you want to download AMF files directly, you are out of luck. There aren’t many AMF designs available for download on the internet. Users of AMF usually start with an STL file, import it as AMF and then add additional properties via an editor. The open source AMF Editor is perfect for this job, allowing users to import STL and edit the resulting AMF file.
Nice try, AMF. But the 3MF 3D printer file format might yet be the actual “STL killer”.
As we discussed, the biggest weakness of the AMF format wasn’t technology. The technology is great and solves most of the problems people have with STL. The real problem was adoption.
ASTM, the developers of the AMF standard, did not consult the key players in the 3D printing industry. Since they were not directly involved, the major brands were very slow in adopting the standard.
Microsoft, the creators of the 3MF 3D printer file format, did it differently. For a few years, they developed the 3MF 3D printer file format internally (alongside Windows 8 and 10 development) with the goal of creating a seamless, high-quality experience for 3D printing consumers and manufacturers.
Then they changed the game plan. In 2015, Microsoft announced the 3MF Consortium, a body that will govern further development and progress of the 3MF format. They included all the big names in 3D printing as founding members. Autodesk, Stratasys, Ultimaker, Materialize, Shapeways, 3D Systems, Dassault Systems, Siemens, HP, GE, you name it – they are all in there!
Thus, for the first time, we have a modern 3D printing native file format that is ratified by all the important stakeholders. If this translates to accelerated adoption, then 3MF would have solved both the technical and adoption problem.
Not surprisingly, the 3MF 3D printer file format has been at the center of great publicity and buzz. If 3MF can solve the adoption problem faster than AMF (and it seems very likely that it will do so), it may easily become the next big 3D printer file format after STL.
The 3MF format is loosely inspired by the AMF format. According to the 3MF Consortium, the design goals of the 3MF 3D printer file format are:
3MF is an XML-based format. The 3MF consortium decided the benefits of human readability for ease of development outweighed the performance gain from going to a binary format.
It features geometry representation similar to STL (triangular meshes), but in a more compact and size-friendly format than AMF 3D printer file format. As an example of its space-saving features, multiple identical objects can be placed referencing the same mesh.
3MF ensures that the files are 100 % manifold with no cracks or overlapping triangles avoiding problems common in other formats standardized for animation and VR rather than 3D printing. The Holy Grail in 3D printing is having a ready-to-print file which requires no adjustment or fixing – and 3MF seems capable of doing just this.
Just like AMF, it can encode information about the model’s color, material, and textures.
The 3MF 3D printer file format also introduces the concept of a “single archive” or “3D payload”. The file defines all standard, optional, and mandatory parts, with complete model information contained in a single archive. The payload consists of a 3D model(s), core document properties, digital signatures, 3D print settings known as “PrintTicket”, thumbnail images of all models, and 3D texture information.
The goal is to make 3D printing as simple as document printing – select a printer from the list, choose options, and print.
The application converts the model to .3MF and encapsulates it in an OpenXPS package. It’s then extracted by the print driver, converted into a readable format, and sent to the 3D printer. The .3MF file not only solves Microsoft’s print pipeline but also provides the same advantages for everyone across the board.
The 3MF 3D printer file format is still in its infancy and therefore does not enjoy widespread adoption. But since all the companies that need to adopt the format are already in the 3MF Consortium, adoption seems to be just a matter of time. You can check the level of adoption anytime.
The biggest concern with the 3MF 3D printer file format is how free and open source it will be. Many people are skeptical because the format came from Microsoft. As we all know, Microsoft is notorious for its dubious and unfair business practices.
Concerns were raised over whether 3MF will become a proprietary Trojan horse for larger companies to monopolize and grind out competition or would it be released as open source? Would this open the door to DRM issues, resulting in 3MF derivatives that would be subject to lawsuits?
Fortunately, one of the design goals of the 3MF format says explicitly “Access to and implementation of the 3MF specification is and will always be free of royalties, patents and licensing”. Furthermore, Microsoft has made part of the code base available on GitHub. Anyone can contribute code to this repository.
You can also get free access to the 3D Printing SDK and 3MF 3D printer file format specifications anytime by contacting [email protected]
While 3MF has done many things right till now, doubts still remain over patent details and source code rights backed by a consortium of conglomerates
You can access the code that reads STL/OBJ/3MF files and writes 3MF files on GitHub. In addition, a web service to validate and repair 3MF files is available here. You can find much more on this 3D printer file format in the official 3MF website.
So far, we have talked about the STL, OBJ, AMF and 3MF formats. These are the most important 3D printer file formats.
But as we mentioned earlier, you can theoretically use any 3D file format for 3D printing. And people do use all kinds of formats. VRML, X3D, FBX, IGES, STEP, you name it. They have all been used for 3D printing at some point or another.
But these file formats are not really made for 3D printing. So while a fringe continues to use them, they will most likely never see any critical adoption.
Formats like VRML, X3D, and FBX are not designed for manufacturing: they have a lot of information on rendering effects such as lighting and fog but are missing true material properties and their implementations are often inconsistent.
CAD formats like IGES and STEP are far too complicated. They include higher order representations like NURBS, which is not really necessary for 3D printing applications. As the AMF and 3MF formats have shown, all you need is triangles. IGES and STEP are also convoluted specifications and writing consistent parsers for import and export support is not so easy.
This is why even though you will hear about people using these formats for 3D printing, all you really need to know is the big four: STL, OBJ, AMF, and 3MF. At least until another 3D printer file format comes out.
We have discussed four major 3D printer file formats with different capabilities and adoption. So which one should you choose?
It depends. Every 3D printing manufacturer and consumer has different needs and technical debt. But here is a general guideline:
Choose STL 3D printer file format if
Choose OBJ 3D printer file format if
Choose AFM 3D printer file format if
Choose 3MF 3D printer file format if
At this point in time, STL, OBJ, AMF, and 3MF seem to be the most important 3D printer file formats. They all have their own strengths, weaknesses and have varying levels of compatibility with 3D printing software and hardware. STL is the predominant format, OBJ is preferred for multicolor printing, while formats like AMF and 3MF are trying to provide a more capable STL for modern 3D printing.
For 3D printing consumers and manufacturers, it is imperative to know and understand the key differences between these formats. Don’t forget: the choice of format affects your toolchain, production efficiency and the quality of your prints.
We hope this article helped you learn a bit more about your file format choices. If you found this article useful, share it with other 3D printing enthusiasts and spread the word. Do you have some questions or remarks? Let us know in the comments below!
License: The text of "4 Most Common 3D Printer File Formats in 2019" by All3DP is licensed under a Creative Commons Attribution 4.0 International License.
Subscribe to updates from All3DP
You are subscribed to updates from All3DP
You can’t subscribe to updates from All3DP. Learn more…