Articles › Tools and safety

STL vs 3MF vs STEP vs OBJ: which file to send to the slicer

STL is unitless triangles, 3MF adds units, colours and settings, STEP keeps editable true curves, OBJ comes from graphics. Plus export settings that keep holes round.

Beginner 5 min read October 22, 2026 Designing parts that print well · lesson 2/10

What you will learn
  • STL holds only triangles and no units. Slicers assume millimetres, so a part designed in inches comes in 25.4 times too small.
  • 3MF states its units (millimetres by default), holds several parts, colours and materials, and slicers use it to save projects with print settings.
  • STEP stores exact surfaces that other CAD programs can edit. Use it to hand over a design, not just a print job.
  • When exporting to a mesh, keep the deviation small enough that small holes do not turn into polygons a screw will not fit.

You will meet four file types for 3D printing: STL, plain triangles with no units; 3MF, triangles plus units, colours and print settings in one file; STEP, exact mathematical surfaces that CAD can keep editing; and OBJ, from the graphics world. Send STL or 3MF to the slicer, send STEP to hand a design on, and always keep your CAD source file. This lesson covers what each stores and how to set the export resolution.

Mesh vs solid: the root of the difference

  • Mesh describes a surface with flat triangles, so a cylinder is really a many-sided prism; more triangles, rounder result. STL, 3MF and OBJ are meshes.
  • Solid (B-rep) stores surfaces as equations, so a cylinder is a true cylinder with a 5 mm radius everywhere. STEP is a solid format, and so is your parametric CAD source file.

Every slicer works on meshes. Even when it opens STEP, it converts to triangles on import (PrusaSlicer’s documentation says the STEP file is triangulated on import). The question is who does the conversion and how finely.

The four compared

STL3MFSTEPOBJ
Surface stored asmeshmeshsolid (exact)mesh
Unitsnoneyes, default mmyesno standard
Colour / materialno standardyes (Materials extension)not used for printingyes, but slicers often ignore it
Several parts per fileone object per file (by definition)yes, with positionsyesyes
Slicer print settingsnoslicers save projectsnono
Edit further in CADhardhardyeshard
Use it tosend to a printer, widest supportshare a job with its settingshand a design to another designerbring in graphics or scan models

STL: the simplest, so it has lasted longest

STL is just a list of triangles, each with three vertices and a normal vector. No colour, no units. The Library of Congress documents the binary layout: an 80-byte header, a 4-byte triangle count, then 50 bytes per triangle.

Worked example: file size for a figure with 200,000 triangles

  1. 80 + 4 = 84 bytes of header
  2. 200,000 × 50 = 10,000,000 bytes
  3. Total 10,000,084 bytes ≈ 10 MB. ASCII is several times larger because it stores numbers as text.

The unit problem: a 10 in an STL could be 10 mm or 10 inches. Most slicers assume millimetres, so a part designed in inches comes in 25.4 times too small. Fix it by scaling 2540% or with PrusaSlicer’s “convert from imperial units” command.

STL does not say its units. Every time you load a file from somewhere else, check its size in the slicer before printing.

3MF: the whole job in one file

3MF is an open standard from the 3MF Consortium (now also ISO/IEC 25422:2025). Inside is a ZIP package of XML following the Open Packaging Conventions. What it adds over STL:

  • Units in the file, from micron to metre, millimetre by default. No more 25.4× surprises.
  • Several parts with positions, so it opens laid out on the bed as you saved it.
  • Colour and materials through the Materials and Properties extension, for multi-colour work.
  • Print settings. PrusaSlicer uses 3MF as its preferred format and saves project files (parts + layout + settings) as 3MF; other modern slicers do the same.

Worth knowing: each slicer keeps its print settings in its own part of the project file. Open it in another vendor’s slicer and you get the geometry, but the settings may not all come along.

STEP: for handing over designs, not print jobs

STEP is the standard for exchanging designs between CAD programs. It stores true curved surfaces, so you can open it in Fusion, Onshape or FreeCAD and add holes, chamfer edges or measure accurately. You do not get the original designer’s feature history.

PrusaSlicer has opened STEP since version 2.5, converting it to a mesh on import. Handy when STEP is all you have, but the slicer, not you, chooses the conversion resolution.

Part makers often publish STEP models of boards, switches and connectors. Drop them into your CAD and design the case around them so it fits.

OBJ: from the graphics world

OBJ is a mesh format widely used in 3D graphics and scanning. It can reference a separate material file (.mtl). PrusaSlicer notes that material and texture information is ignored on import, so you get only the shape. Use it when the model comes from Blender or a scanner.

12-sided circle0.34 mm36-sided circle0.04 mm90-sided circle0.006 mmdeviation from a 10 mm radius circle
More sides means rounder, but past 36 it barely shows

Export resolution that keeps holes round

When a solid becomes a mesh, the program decides how many triangles to use. Fusion lets you set surface deviation (how far the mesh may stray from the real surface), normal deviation (angle), maximum edge length and aspect ratio, or pick a Low/Medium/High preset. FreeCAD and OpenSCAD have similar settings (OpenSCAD uses $fn for the number of sides on a circle).

Worked example: a cylinder of 10 mm radius. How far a flat side of the polygon sits inside the true circle = r × (1 − cos(180° ÷ N)), where N is the number of sides.

  1. N = 12: 10 × (1 − cos 15°) = 10 × (1 − 0.9659) ≈ 0.34 mm. The facets are visible and a screw hole gets narrower at the middle of each side.
  2. N = 36: 10 × (1 − cos 5°) = 10 × (1 − 0.9962) ≈ 0.04 mm, far smaller than a 0.4 mm line width. Invisible.
  3. N = 90: 10 × (1 − cos 2°) ≈ 0.006 mm, finer than an FDM printer can show. The file just gets bigger.

From these numbers: a surface deviation of roughly 0.01–0.05 mm is enough for an FDM printer with a 0.4 mm nozzle. Going finer only grows the file.

Common mistakes

  • Keeping only the STL and losing the source. You cannot edit the design later; you redraw it.
  • Exporting at low resolution. A 3 mm hole becomes a hexagon, the screw will not go in, and the printer gets the blame.
  • Not checking the size of a downloaded STL. It prints the size of a bean, or too big for the bed.
  • Sending an STL to someone who needs to modify the design. Send STEP.
  • Expecting 3MF settings to carry across every program. After switching slicer vendors, check the settings every time.

Previous lesson: Choosing CAD for 3D printing

Sources

FAQ

I downloaded a file and the part is tiny in the slicer.

It was probably designed in inches and exported as STL, which has no units, so the slicer read it as millimetres. Scale it by 2540% (×25.4) or use the slicer's inch-conversion command, as PrusaSlicer has.

What should I send a friend who wants to print my part?

Send 3MF if you want them to get your layout and settings. Send STEP if they need to modify the design. Add an STL for software that reads nothing else.

Is there a difference between ASCII and binary STL?

Same geometry, but binary is much smaller and is what almost everyone uses. Slicers read both. There is no reason to use ASCII unless you want to read the file by eye.

Circuits and code were tested on sample boards. Boards differ in pin layout, so check your board's pinout before you power anything.