STL Mesh

FORMAT COMPARISON

STL vs OBJ

The print-only triangle list and the universal mesh file — what each stores, when to use which, and how to convert between them.

The short answer

Use STL when the destination is a slicer or a print service. It is a raw triangle list — no UVs, no color, no materials — and every tool since 1987 reads it. Use OBJ when you are exchanging a mesh with an editor, a scanner, or a game tool: faces, UVs, normals, and an optional MTL sidecar. STL is smaller and simpler. OBJ is more flexible. In practice you will keep both: OBJ in the modeling pipeline, STL on the way to the printer.

Feature comparison

The gap is not “old vs new.” Both formats are decades old. STL won printing by storing the smallest thing a stereolithography machine needed: triangles. OBJ won interchange by storing a mesh the way a modeler thinks about it: vertices, faces, UVs, and a material file on the side.

FeatureSTLOBJ
File structureRaw triangle list (binary or ASCII)Text: v / vt / vn / f lines + optional MTL
GeometryTriangles onlyTriangles, quads, n-gons (indexed vertices)
UV / texture coordinatesNoYes (vt)
Vertex / facet normalsFacet normal per triangleYes (vn); smoothing groups in some exporters
Color / materialsNoMTL sidecar + image maps (referenced, not embedded)
AnimationNoNo — static geometry only
UnitsNone — slicers assume mmNone — destination tool decides
Typical file sizeSmaller (50 bytes × triangles)Larger as ASCII; indexed, but text
Human-readableASCII STL yes; binary noYes — plain text
Typical use3D printing, slicersModeling, scanning, general interchange
First released1987 (3D Systems)1980s (Wavefront Technologies)
Spec owner3D Systems (de facto public)Wavefront / open de facto

Where each wins

STL's advantage is simplicity. One file, triangles only, every slicer and print bureau on earth accepts it. The file is small, the parser is trivial, and there is nothing to lose in transit because there was nothing extra to begin with. The cost is that you cannot carry a look: no UV atlas, no painted vertices, no named materials.

OBJ's advantage is flexibility. Indexed vertices keep the mesh editable. UVs let you re-apply maps. An MTL file can name Kd/Ks/map_Kd even if this site's converters do not write one. The cost is a text format with no units, no animation, and a sidecar that is easy to misplace. It is a mesh interchange file, not a scene file and not a print file.

When to use STL

  • Sending a mesh to a slicer (PrusaSlicer, Bambu Studio, Cura, OrcaSlicer)
  • Uploading to a print service that lists STL
  • A quick geometry check in a viewer — no materials to wait on
  • When you want the smallest, most compatible print file and do not need UVs

When to use OBJ

  • Exchanging a mesh with CAD, sculpting, or scanning tools
  • Keeping UVs so you can re-assign textures later
  • Opening an archive or photogrammetry export that already shipped as OBJ
  • When the destination tool does not speak STL and you do not need animation

Converting between them

OBJ → STL triangulates faces and drops UVs, MTL and smoothing groups. STL → OBJwrites indexed vertices and faces; it cannot invent UVs or materials that STL never stored. Neither direction creates data that wasn't there.

OBJ meshfaces, UVs, normals,optional MTLINPUTExtract trianglesUVs and materialsdroppedIN THIS TABSTL trianglesgeometry only —print-readyOUTPUT
Conversion moves geometry. UVs, color, and MTL references only survive if the destination format can store them — STL cannot.

For the formats themselves, see What is an STL file and What is an OBJ file.

FAQ

Is OBJ better than STL?+

For different jobs. OBJ stores indexed vertices, UVs, normals and an optional MTL material file — that is what editors and scanners need. STL stores a raw triangle list with no UVs, color or materials — that is what slicers have spoken since 1987. Neither replaces the other.

Can STL store textures or vertex colors?+

No. Binary STL is 50 bytes per triangle: three vertices, a facet normal, and a 2-byte attribute that almost nobody uses for color. There are no UV coordinates and no material references. If you need maps or a painted mesh, use OBJ, GLB or 3MF — not STL.

Which file is smaller?+

STL, usually, for the same triangle count as a binary file: no UVs, no normals-as-attributes, no comments. ASCII OBJ is text, so it is often larger than binary STL. An indexed OBJ can beat ASCII STL because shared vertices are stored once. For print-bound meshes, binary STL is the small, simple default.

Does converting OBJ to STL keep UVs?+

No. Conversion extracts triangles and drops everything STL cannot store: UVs, MTL references, smoothing groups, vertex colors. Geometry survives. The other direction — STL to OBJ — writes faces and recomputed normals; it cannot invent UVs that were never there.

Which format do print services accept?+

STL. Some also take 3MF or OBJ, but STL is the safe upload. OBJ is the format you send to a modeler, a game tool, or a scanner pipeline — not the format you put on the plate unless the service explicitly lists it.

🧊
Written by Casey Marlin · Last updated
This update: format details verified against binary STL structure and the Wavefront OBJ spec