# STL vs STEP: which file format your project actually needs

STL stores a triangle mesh approximation; STEP carries exact B-rep geometry. Learn when each format matters for 3D printing, CNC quoting, and editable CAD.

---

If you have spent any time downloading 3D models, you have run into this question:
should you grab the STL or the STEP file? Most mesh generators and model marketplaces
only offer STL, so a lot of makers never have to think about it. But the moment you
need a part machined, need to edit a dimension, or need to hand a file to an engineer,
the difference between these two formats stops being trivia and starts being the
thing that determines whether your project works.

This post explains what each format actually is, when to use which one, and how
Meshra sidesteps the choice entirely by giving you both from the same parametric
part.

## STL: a triangle mesh, nothing more

STL (stereolithography) is the oldest and simplest 3D file format still in common
use, and it shows. An STL file is a list of triangles. Every curved surface, every
fillet, every cylindrical hole is approximated as a mesh of small flat triangular
facets. Zoom in far enough on a "round" hole in an STL and you will see a polygon,
not a circle.

That approximation is not a flaw so much as a design choice. STL was built for one
job: describing a surface well enough for a machine to slice it into printable
layers. Slicers do not care about exact curvature; they care about where the outer
skin of the part is at each layer height, and a dense enough triangle mesh answers
that question perfectly well. STL also carries no units, no metadata, no history
of how the part was built, and no concept of "this hole is 5.2 mm because it needs
to clear an M5 screw." It is geometry with all the intent stripped out.

That makes STL fast, universally supported, and completely wrong for anything that
needs precision or later editing. If you export an STL, open it in a mesh editor,
and try to nudge a hole diameter, you are not changing a parameter, you are
dragging vertices around a triangle soup and hoping the result still looks right.

## STEP: exact geometry, not an approximation

STEP (Standard for the Exchange of Product model data, ISO 10303) describes
something fundamentally different: a boundary representation, or B-rep. Instead of
approximating a cylinder with a thousand tiny triangles, a STEP file says
"this is a cylindrical surface, radius 5.2 mm, axis along this line, bounded by
these edges." The geometry is mathematically exact. Zoom in as far as you want on
a STEP hole and it stays a perfect circle, because it is defined as one.

This is the format that professional CAD tools speak natively. Fusion 360,
SolidWorks, FreeCAD, and every CNC and CAM package on the market read and write
STEP because it preserves the actual shape of the part, not a lossy stand-in for
it. A machine shop quoting a milled bracket needs to know the true dimensions and
surface types to program toolpaths; a triangle mesh cannot tell them that a face
is a flat plane versus a very-slightly-faceted curve, which matters for both the
quote and the cut.

STEP files are also editable in a way STL files are not. Because the geometry
carries exact surface and edge definitions, a CAD program can recognize features
(this is a hole, this is a fillet, this is a rectangular boss) and let you modify
them directly. That is a very different experience from mesh editing, where every
change risks leaving gaps, non-manifold edges, or shapes that no longer represent
a valid solid.

## When STL is the right choice

STL is correct, not just tolerable, in a specific set of situations:

- **Slicing for FDM or resin printing.** Every slicer (Cura, PrusaSlicer, Bambu
  Studio, Lychee) consumes STL (or the similar
  [3MF](/blog/3mf-vs-stl-which-file-format), now the default in most slicers)
  natively. The slicer's whole job is converting a surface into printable layers,
  and a mesh is exactly the right input for that.
- **Sharing a model for viewing or 3D printing services.** Print-on-demand
  services, mesh viewers, and most online 3D model repositories expect meshes.
- **Parts that are already organic or sculpted.** If the geometry itself started
  as a scan or a sculpt (no exact curves to preserve), a mesh loses nothing
  because there was no exact geometry to begin with.

## When you need STEP instead

STEP earns its keep whenever exactness or editability matters downstream:

- **CNC quoting and machining.** Shops price and program from exact geometry.
  Sending a mesh usually means a shop has to reconstruct the solid before they can
  even quote it, which costs you time and them trust.
- **CAD interchange.** Opening a part in Fusion 360, SolidWorks, or FreeCAD to
  keep working on it, combine it with other parts, or hand it to a collaborator
  who uses different software.
- **Tolerancing and inspection.** Adding GD&T callouts, running a dimensional
  inspection, or comparing a manufactured part against nominal geometry all
  assume exact surfaces, not facets.
- **Editing later.** If there is any chance you will want to change a dimension
  after the fact without starting over, STEP (or better, a parametric source)
  keeps that option open. A mesh does not.

## STL vs STEP at a glance

| | STL | STEP |
|---|---|---|
| Geometry | Triangle mesh (approximation) | Exact B-rep (mathematical surfaces) |
| Curves | Faceted, gets coarser when zoomed in | Stay exact at any zoom |
| Typical use | Slicing for 3D printing | CNC machining, CAD interchange |
| Editability | Vertex-level mesh editing only | Native CAD feature editing |
| Carries dimensions/intent | No | Yes (exact surfaces and edges) |
| Software support | Slicers, mesh viewers | CAD packages, CAM, inspection tools |

## How Meshra sidesteps the choice

Most tools force you to pick a lane: mesh generators only ever produce STL, and
traditional CAD only gets you STEP if you already know how to build the part
yourself. Meshra does not make you choose, because it never generates a mesh in
the first place.

When you describe a part, Meshra generates real parametric CAD code (CadQuery,
running on the OpenCascade geometry kernel) and builds it into an exact
boundary-representation solid, the same kind of geometry professional CAD tools
work with natively. From that one solid, Meshra exports STEP for CAD interchange
and CNC quoting, STL for slicing and 3D printing, and GLB for the in-browser
viewer, all from the same underlying part. There is no lossy conversion step
where a mesh gets reverse-engineered into a solid; the solid was exact from the
start, and the mesh export is just one representation of it.

That exactness also means editing is real editing, not mesh surgery. Every
dimension Meshra recognizes when it builds your part (hole diameter, wall
thickness, hole spacing, and so on) becomes a slider in the parameter drawer. Drag
a value and the same code re-executes deterministically with the new number: no
new AI call, no risk of the geometry drifting, and it is free on every plan. Get
the fit right in the viewer, then export STEP for the machine shop and STL for
the printer, both current, both from the same source.

<TryMeshra />

## Picking the right export

A rough rule of thumb: if the very next step involves a slicer, grab STL. If the
next step involves a CNC quote, another CAD tool, or you expect to touch a
dimension again later, grab STEP. If you are not sure yet, that is fine too,
Meshra keeps both available for every generation, so the choice does not have to
be made until you actually need one.

If you want to see this in practice, browse the [template gallery](/templates)
for parts you can derive and export in both formats immediately, no prompt
required. For the fuller picture of what happens between a sentence and a
downloadable part, see
[From a sentence to a printable part](/blog/from-a-sentence-to-a-printable-part).
And if you are ready to generate your own parametric part and export whichever
format your project needs, [sign up](/sign-up) and describe what you are
building.
