STL Mesh

STEP → STL · CAD TO MESH, EXPLAINED

STEP to STL — CAD Surfaces Turned into a Mesh

Convert a STEP file into a printable STL in CAD software, not in a browser tab: precise B-rep surfaces become triangles. This site does not convert STEP files — use a desktop CAD kernel, then check the mesh here.

Tessellation, not format conversion

STEP (Standard for the Exchange of Product Data, .step / .stp) is a CAD interchange format defined by ISO 10303. It stores precise B-rep geometry — NURBS surfaces, curves, and solids — not triangles. STL is a triangulated mesh. Tessellating the CAD model means covering those B-rep surfaces with triangles. That is a lossy process: curved faces become faceted. Finer tessellation produces more triangles and stays closer to the original curves.

The work needs a CAD kernel such as OpenCascade or Parasolid. A STEP file is not a triangle list waiting to be re-encoded; the kernel has to sample every surface, decide how many facets a cylinder needs, and stitch them so neighbors share edges. Those kernels are large native libraries, not something a tab can load alongside three.js. Triangle-to-triangle hops (GLB, OBJ, 3MF, STL) only move vertices around — that is why those converters run here and STEP→STL does not. Online exporters run a kernel on a server: the file leaves your machine. If the model is under NDA, or you want control over chord height, export from desktop CAD, then inspect the mesh here.

Chord height versus angular deviation

Two numbers dominate every STL export dialog. They are named differently in each app, but they measure the same two things.

Chord height (linear deflection, surface deviation, chordal tolerance) is a distance: the maximum gap allowed between the true surface and the triangle that approximates it. On a Ø20 mm cylinder, a 0.1 mm chord height lets the facets sit a tenth of a millimetre off the true circle; 0.01 mm needs many more sides. The unit matches the model — usually millimetres — so you can compare it to layer height.

Angular deviation (normal deviation, angle tolerance) is an angle. A 15° cap on a cylinder gives a 24-sided prism; 5° gives 72 sides, regardless of radius. A 2 mm fillet and a 200 mm drum get the same number of facets around the arc if only the angle is set.

Use both. Chord height alone on a large, gentle cylinder leaves visible flats, because the sagitta stays under the linear limit even with few sides. Angular deviation alone on a tiny fillet can explode the triangle count. For FDM at ~0.2 mm layers, 0.01–0.05 mm chord height and 5–10° angular is a sane starting band. Resin or a show model can go tighter (0.001–0.01 mm, 1–5°). Going below what the printer can resolve only inflates the file.

Export settings by CAD tool

The dialog moves between versions; the two numbers do not. Use the names below as a map, not as a click-by-click script.

ToolWhat the dialog calls the two numbersStarting point for FDM
FreeCADLinear deflection + angular deflection (mesh-from-shape)0.01–0.1 mm linear; 5–15° angular. Prefer absolute over relative (relative scales with the bounding box).
Fusion 360Low / Medium / High / Custom; Custom: Surface Deviation, Normal Deviation, Maximum Edge LengthMedium for chunky parts. Custom: Surface Deviation 0.01–0.05 mm, Normal Deviation ~10°.
OnshapeCoarse / Medium / Fine / Custom, plus chord tolerance and angle toleranceFine or Custom: chord ~0.02 mm, angle ~10°. Coarse is a preview mesh, not a print mesh.
SolidWorksCoarse / Fine / Custom; Custom sets Deviation and AngleFine for most FDM. Custom: Deviation 0.01–0.05 mm, Angle 5–10°. Prefer binary STL over ASCII.

All four tessellate inside a CAD kernel. FreeCAD exposes the two numbers with no account. Fusion 360 is the least friction if the model already lives there. Onshape exports from the browser, but tessellation still runs in their kernel, not yours. SolidWorks Fine is conservative enough for most FDM. CAD Exchanger remains the online fallback when you cannot install anything.

Why the same STEP yields different triangle counts

Export the same .step from FreeCAD, Fusion, Onshape, and SolidWorks and the STL triangle counts will not match. That is not a bug in any of them.

  • Default tolerances differ.One kernel's “medium” is another's “coarse”. Some defaults are relative (a percentage of the bounding-box diagonal), so a 200 mm part and a 20 mm part get different facet sizes under the same named preset.
  • Kernels sample NURBS differently. OpenCascade, Parasolid, and the proprietary ones do not walk a cylinder the same way. A regular grid from one kernel can come out of another as a fan from a pole.
  • Assemblies versus parts. Exporting an assembly may tessellate every instance, only visible bodies, or a simplified envelope. Cosmetic threads with a tight angular cap are the usual triangle bombs.
  • Extra limits stack.Maximum edge length and “surface vs solid” options change the count without changing the part. Two exports with the same chord height are still not the same mesh if one also caps edge length.

Compare whether cylinders look round at print scale, whether the file is watertight, and whether the bounding box matches the CAD dimensions — not the raw triangle count.

After export: is the mesh fine enough?

A binary STL is 80 bytes of header, 4 bytes of triangle count, and 50 bytes per triangle. The arithmetic is boring and useful:

  • 10,000 triangles ≈ 0.5 MB
  • 50,000 triangles ≈ 2.5 MB
  • 100,000 triangles ≈ 5 MB
  • 1,000,000 triangles ≈ 50 MB

A phone-stand-sized FDM part in the 30k–150k band is usually plenty. A simple bracket at 800k triangles was tessellated too tightly (or a thread was exported as jewellery). A Ø30 mm cylinder that shows flats is too loose, even if the file is small: if you can count the sides, tighten chord height or angular deviation and export again.

  • Tessellation can leave holes and non-manifold edges. Check watertightness with the STL repair tool on this site (runs in the browser, nothing uploaded).
  • Confirm size and shape in the STL viewer — a units mixup or an overly coarse tessellation shows up immediately. A STEP-in-inches file read as millimetres shows up as a 25.4× size error.
  • If you need a web or AR format next, convert STL to GLB.

FAQ

Can I convert STEP to STL online?+

Yes, via services such as CAD Exchanger — useful for a quick export. Desktop tools (FreeCAD, Fusion 360) give more control over tessellation quality: chord height, angular tolerance, and whether curved faces stay reasonably smooth.

Why can't a browser tool do this?+

STEP stores NURBS surfaces and B-rep solids. Tessellating those into triangles needs a CAD kernel (OpenCascade is the usual open-source one). That is far heavier than swapping between triangle-based formats such as STL, OBJ, or GLB, which is why this site does not offer STEP to STL conversion.

What is tessellation tolerance?+

It controls how closely the triangles approximate the original curved surfaces. A tighter (lower) tolerance means more triangles, a smoother mesh, and a bigger STL. Loosen it and you get a lighter file with more visible faceting on fillets and cylinders.

Does conversion lose information?+

Yes. STEP preserves exact curves and solids; STL approximates them with flat triangles. Parametric history, feature trees, and assembly structure are also lost. Finer tessellation gets closer to the original curves but never recovers the B-rep.

STP vs STEP — different formats?+

Same format, different extension. Both are ISO 10303 STEP files (.step / .stp). CAD tools treat them interchangeably.

My slicer says the converted STL is broken.+

Tessellation can leave non-manifold edges, holes, or inverted faces. Run the file through the STL repair tool on this site to check watertightness before you slice.

Going the other way is a different problem with a different answer: writing flat faces out of a mesh needs no CAD kernel at all, so that one is a browser tool here — STL to STEP, with coplanar triangles merged into single faces.

🧊
Written by Casey Marlin · Last updated
This update: editorial guide — no conversion tool on this page