GUIDE

STL vs OBJ vs STEP: Which Format for 3D Printing?

Three file formats dominate the 3D world, and they are not interchangeable. STL is the printer's native tongue. OBJ carries colour and texture. STEP is for engineers who care about geometry that means something. Here is what each one actually stores and which one you should pick.

LAST REVIEWED 2026-04

The short version

If you are exporting from an AI text-to-3D tool to send to a slicer, use STL. If you also want to keep colour and UV maps for rendering, export OBJ or GLB. If someone hands you a STEP file and tells you to 3D print it, you can — but it is overkill for the decorative work AI is good at.

The longer version is more useful, because each format has at least one footgun.

STL: triangles, nothing else

STL stands for stereolithography, the original SLA printing process from 3D Systems in 1987. The format reflects its age: it stores a list of triangles. Each triangle has three vertex positions and a normal vector. That is the entire file.

No colour. No texture. No units. No grouping. No history. No layers. Just triangles.

That sounds limited, and it is — but for 3D printing the limitation is the point. A slicer needs a watertight surface to cut into layers. Triangles are the simplest representation that works. Every slicer in existence reads STL. It is the lowest common denominator, and that is its strength.

STL comes in two flavours: ASCII and binary. ASCII is human-readable and roughly five times larger. Binary is what every modern tool produces. If you ever open an STL in a text editor and it looks like a list of vertices, that is the ASCII variant — convert to binary in any mesh tool and you will save a lot of disk space.

STL's unit problem

STL files have no unit information. A cube that is "1 wide" in the file might be one millimetre, one inch, one metre, or one arbitrary unit. The slicer guesses based on its default settings, usually millimetres.

This is why STLs from American CAD tools sometimes import 25.4 times too small (inches interpreted as millimetres) or 25.4 times too large (the other way). When you import an AI-generated STL, scale it in the slicer to the size you actually want — never trust the import scale.

OBJ: triangles plus everything else

OBJ is older than STL by a couple of years (Wavefront, 1988-ish) but it has aged better because it can represent more. An OBJ file can hold:

  • Triangle and quad faces
  • UV coordinates for texture mapping
  • Vertex normals (separately from face normals)
  • Material references via a sidecar .mtl file
  • Named groups and objects

For 3D printing, none of that extra information helps. The slicer ignores UVs and materials. The named groups don't change the print. You are basically using OBJ as a slightly more verbose STL.

For colour rendering, AR, game engines, or anywhere downstream of a slicer, OBJ is much more useful. Most AI text-to-3D tools that target rendering output OBJ or GLB by default; tools that target printing output STL.

One real OBJ caveat: it is text-based, so the files are big. A 500K-triangle mesh is around 50 MB as OBJ versus 25 MB as binary STL. Not catastrophic, but worth knowing.

GLB and glTF: the modern OBJ

Worth a side-mention because they keep coming up. GLB is the binary form of glTF, a Khronos format designed for the web and game engines. It carries meshes, materials, animations, and PBR textures in a single file. AI 3D pipelines aimed at content creation increasingly default to GLB.

For printing, GLB has the same status as OBJ: the slicer probably won't open it directly, so you will convert to STL anyway. Useful as a delivery format when the same model needs to look right in a browser viewer and also be printable.

STEP: real geometry, not triangles

STEP (ISO 10303, often AP203 or AP214) is fundamentally different from STL and OBJ. It is a B-rep format — Boundary Representation — which means it stores the actual surfaces of a model as mathematical entities. A cylinder in a STEP file is a cylinder. A cylinder in an STL file is a few hundred flat triangles approximating a cylinder.

That difference matters when:

  • You need to edit the geometry in CAD. STEP imports as proper features; STL imports as a frozen mesh.
  • You care about exact dimensions. A STEP cylinder is exactly 10.000mm across. An STL approximation is something like 9.998mm.
  • You need to mate parts. CAM software, manufacturing, and tolerance analysis want STEP, not STL.

For AI-generated models, STEP is rarely relevant. The output of a generative model is inherently a mesh — there are no underlying features to export. Some tools convert mesh to STEP after the fact, but the result is a STEP file describing a faceted shape, which is the worst of both worlds.

What slicers actually accept

Across the major slicers in 2026:

  • Cura, PrusaSlicer, OrcaSlicer, Bambu Studio: STL, OBJ, 3MF, STEP (with tessellation). 3MF is increasingly the recommended format because it carries print settings.
  • Lychee, Chitubox (resin): STL, OBJ. Some support 3MF.
  • Anything older or vendor-locked: STL only, sometimes only ASCII STL.

STL is the universal answer. If you only export one format, export STL.

3MF: the format slicers actually want

3MF (3D Manufacturing Format) is what STL would look like if it were designed in this century. It is XML-based, supports colour, multiple objects, units, supports settings, and embedded thumbnails. All major slicers read and write it.

The catch: 3MF is most useful as a slicer-to-slicer or slicer-to-printer interchange. Most generative tools still don't export 3MF directly. So the realistic flow is: tool → STL → slicer → 3MF → printer. STL stays in the chain because it is what the generator produces.

Picking a format: a fast decision

  • Sending to a slicer to print? STL.
  • Want colour for a render or AR view? GLB or OBJ.
  • Need to edit the geometry parametrically? STEP, but probably remodel in CAD instead.
  • Sharing with another slicer user, settings included? 3MF.
  • Sending to a CNC shop or manufacturer? STEP, never STL.

What we use

Automatic3D outputs STL because that is what every printer-adjacent tool reads, and because the geometry coming out of a generative model has no parametric history to preserve. We aim for watertight, manifold meshes around 500K triangles — high enough that the faceting is invisible at print resolution, low enough that the file is not painful to open.

If you want OBJ or GLB for downstream rendering, any mesh tool can convert STL → OBJ in one click. The information loss is zero. Going the other way (OBJ → STL) is also lossless from the slicer's perspective, since it discards everything except geometry anyway.

See also

Try Automatic3D free

Describe an object, get a printable STL. Free tier includes 3 models and 12 concept generations per month. No credit card required.