3D printing · Meshes · CAD drawings
Five formats show up constantly in 3D printing and they are not interchangeable. Some describe a shape; one describes machine instructions. Knowing which is which explains most of the confusion — including why a model sometimes arrives 25 times too small, and why you cannot simply open a g-code file in CAD.
Nothing is uploaded, stored, or seen by anyone
Drop a file here, or click to browse
stl · 3mf · obj · ply · amf · dxf · svg · gcode
STEP export merges coplanar triangles into real planar faces, so flat surfaces come through as single selectable, dimensionable planes and CAD imports them quickly. Curved surfaces stay faceted, and there are no parametric features — a mesh has no record of them. Simplify is optional here; leave it off for the most accurate dimensions.
Working
A flat list of triangles and nothing else. No units, no colour, no materials, and every corner written out separately even when six triangles share it. The missing units are the important part: a file exported in inches and opened as millimetres arrives 25.4 times too small, which is the single most common sizing complaint in 3D printing. STL persists because everything reads it.
A zipped XML container with an indexed vertex pool, real units, and room for colour, materials and build-plate placement. Files are typically a third the size of the equivalent STL, and the unit ambiguity disappears entirely. PrusaSlicer, Bambu Studio, Cura and Orca all read it natively. If your tools support it, prefer it.
A text format from computer graphics, indexed like 3MF and widely supported by renderers, game engines and sculpting tools. It carries texture coordinates and material references that slicers ignore. Common when a model came from Blender or ZBrush rather than CAD.
An XML format designed as STL's successor before 3MF arrived, with units, materials and curved-triangle support. Technically capable, but 3MF won adoption. You will occasionally receive one; converting it is straightforward.
This is the odd one out, and the source of a great deal of confusion. G-code contains no geometry whatsoever. It is a list of machine instructions — move to this coordinate, extrude this much filament — produced by a slicer that discarded the model once it was done. This is why you cannot open g-code in CAD, and why recovering a model from it means reconstructing the shape of the deposited material rather than reading geometry back out.
You design or download a model as STL, 3MF or OBJ. A slicer reads that model, works out the toolpaths, and writes g-code for your specific printer and settings. The printer reads only the g-code. Each step discards information: the slicer throws away the model, and the g-code knows nothing about holes, fillets or dimensions — only where the nozzle went.
Use 3MF where your tools support it, for the units alone. Use STL when something in the chain insists on it, and note the units elsewhere. Keep OBJ for models that came from a rendering or sculpting tool. Keep the g-code only as a record of a print — it is not a backup of your model, and treating it as one is how people end up needing to reconstruct one.
See all supported formats — meshes, 2D drawings and g-code, all converted in your browser.
Printers read g-code, which a slicer produces. The models you download or design are usually STL or 3MF; the slicer converts those into g-code for your specific printer and settings.
Prefer 3MF where your tools support it. It stores units, colour and materials, and produces smaller files. STL stores triangles only and no units at all, which is why models sometimes arrive the wrong size.
Almost always units. STL records no unit, so a file exported in inches and opened as millimetres comes in 25.4 times too small. 3MF states its units and avoids the problem entirely.
Not directly, because g-code contains no model. It records nozzle movements and extrusion amounts only. You can reconstruct an approximate solid from the deposited material, which is what the g-code to STL converter here does.
Both describe triangles. OBJ is indexed, so shared vertices are stored once, and it can carry texture and material references. STL repeats every corner and stores geometry only. OBJ usually indicates a model from a rendering or sculpting tool.
If a file will not convert, or the result looks wrong, I would rather hear about it. Include the format and roughly what you were doing — that is usually enough to reproduce it.