There are many ways of storing 3D data. The STL file format is particularly popular due to its role in 3D printing, being somewhat the standard format used by 3D slicers and online file repositories like Thingiverse and MyMiniFactory.

Although less common, the OBJ format is also used for 3D printing purposes. But it’s more typically used in non-animated graphical applications because it carries more information on models and is more easily imported or exported by different software.

In this article, we’ll go over the main characteristics of both formats and compare them in terms of applicability and value.

Back to Contents

STL vs OBJ (File Formats): The Differences

What Are They?

Both STL and OBJ represent surfaces of 3D objects via polygon meshes
Both STL and OBJ represent surfaces of 3D objects via polygon meshes (Source: Sculpteo)

The way STL and OBJ formats encode the geometry of 3D models is through polygonal meshes. This means that every surface of the 3D object is represented by an approximated network of connected polygons, and the final resolution is dependent on how many polygons there are.

The “Standard Tessellation Language”, or STL, was created specifically for 3D printing by 3D Systems back in the 80s. It’s made exclusively of triangular meshes and is a very lightweight format that lacks some model information such as the unit of length (millimeters or inches).

OBJ, or “Wavefront Object”, is named after the computer graphics company Wavefront Technologies, which developed software solutions for the film industry. It’s an open-source format that’s well established in the digital graphical world and becoming increasingly popular within the 3D printing community for reasons we’ll see next.

Back to Contents

Advertisement
Advertisement
STL vs OBJ (File Formats): The Differences

Model Structure

OBJ is a more flexible format as it uses different polygons during surface encoding
OBJ uses different polygons during surface encoding (Source: 3d_molier International via Free3D)

These two formats differ in a few ways. While they represent 3D models in a similar manner, structurally they’re different, and that has implications as to the usability and final applications.

As mentioned, STL represents the surface of objects as a mesh made up entirely of triangles, which is adequate enough for simple geometry. A higher model fidelity requires a greater number of triangles, thus increasing the file size almost exponentially. Even at the highest resolution, it’ll still be an approximation, though.

OBJ, on the other hand, contains several different polygons in the same file and supports precise surface encoding. Instead of facet shapes, the surfaces can be also defined by NURBS patches, which allows for a much smoother and accurate representation. This, however, comes at expense of larger file sizes, too.

Back to Contents

Advertisement
Advertisement
STL vs OBJ (File Formats): The Differences

Color & Texture

OBJ can store both color and textural information, whereas STL can't
OBJ can store both color and textural information, whereas STL can't (Source: Gabryxx7 via GitHub)

Another difference between these formats is how they handle color and texture information. STL simply can’t store any information regarding these properties. Therefore, it’s not the best format for purely graphical applications or those involving multicolor or multi-material 3D printing.

OBJ excels at this point, being especially useful for 3D scanning applications. This format can incorporate actual photographic information in a two-dimensional image (often stored in a separate image file) that wraps around the model and is carried through.

This makes OBJ a fit for full-color 3D printing techniques, although other formats, such as AMF and 3MF, are known to be better suited for this end.

Back to Contents

Advertisement
Advertisement
STL vs OBJ (File Formats): The Differences

Software Support

STL is the standard format used by 3D slicing software, while OBJ is also very well supported
STL is the standard format used by 3D slicing software, while OBJ is also very well supported (Source: Apprepo)

In terms of software support, both STL and OBJ are very well covered. STL is the standard format for most, if not all, 3D slicers in desktop 3D printing. Due to its simplicity and small file size, it’s also the most common format when sharing designs intended for 3D printing.

OBJ is supported by popular 3D printing slicers like Cura and Simplify 3D  for FDM and ChiTuBox and PrusaSlicer for resin printing. The format, however, is more versatile than STL, as it’s also widely used for applications beyond 3D printing. Game development, for example, makes frequent use of OBJ files. For this reason, the format is widely supported by graphics and animation software.

Back to Contents

Advertisement
Advertisement
STL vs OBJ (File Formats): The Differences

Final Thoughts

While sufficient for most 3D printing applications, the STL lacks the color information provided by OBJ
While sufficient for most 3D printing applications, the STL can't bring the color (Source: i.Materialise)

While these formats share many characteristics and are both useful for broad 3D printing purposes, each leans toward somewhat different use cases.

STL is a slightly less accurate 3D representation yet precise enough for many different applications. Its smaller size makes it perfect for storage and quick sharing, but overall, STL is limited to 3D printing purposes.

The more complex OBJ, in contrast, is traditionally used for applications other than 3D printing, including those that require further modeling and editing. Still, the ability to store color and texture data makes OBJ a fit candidate for multicolor 3D printing, a technique that’s becoming more and more accessible to the broader public.

Back to Contents

Advertisement
Advertisement
Advertisement