The 3D file format you pick decides what survives the round trip. Geometry always makes it. Colour, units, materials and structure usually do not. Here is what each of the common formats actually stores, and when to reach for it.
The comparison at a glance
| Format | Geometry | Colour & materials | Units | Typical use |
|---|---|---|---|---|
| STL | Triangles only | None | None | Printing exchange, the universal fallback |
| OBJ | Triangles, quads, n-gons | Via .mtl sidecar |
None | General interchange between modellers |
| PLY | Triangles, point clouds | Per-vertex colour | None | 3D scanning, photogrammetry, research |
| glTF / GLB | Triangles, scene graph | PBR materials, textures, animation | Metres | Real-time rendering, web, AR, games |
| 3MF | Triangles, multiple objects | Colour, materials, properties | Explicit | Modern 3D printing |
STL: the lowest common denominator
STL is a flat list of triangles, each with three vertices and a normal vector. There is no colour, no material, no unit, no object hierarchy and no shared vertex table — a corner touched by six triangles is written out six times.
That crudeness is the reason for its survival. Every CAD package, slicer, printer and viewer written in the last thirty years reads STL, and there is nothing in the specification to disagree about. It comes in a compact binary variant and a human-readable ASCII variant that is several times larger; see binary vs ASCII STL for the byte layout and the detection trap that comes with it.
Use it when you need something that will definitely open on the other end.
Avoid it when you care about colour, multiple parts, or file size.
OBJ: text-based interchange
OBJ is a readable text format that supports quads and n-gons instead of
triangulating everything, keeps a proper shared vertex list, and stores texture
coordinates and normals. Materials live in a companion .mtl file that
references image textures — which is the format's main practical weakness,
since sending someone an OBJ means sending a folder, not a file.
Use it when moving models between modelling packages and you want to keep UVs and quad topology.
Avoid it when you need one self-contained file, or animation.
PLY: the scanning format
PLY was designed to store arbitrary per-vertex attributes, and the one everyone uses is per-vertex colour. Photogrammetry and structured-light scanners output it because it can carry a coloured point cloud as naturally as a triangle mesh. Both ASCII and binary variants exist.
Use it when working with scan data or vertex-coloured meshes.
Avoid it when the destination is a slicer, which will ignore the colour anyway.
glTF and GLB: built for rendering
glTF is the modern runtime format — a scene graph with nodes and transforms, PBR materials, textures, skinning and animation, designed to be loaded straight into a GPU with minimal parsing. It is JSON plus binary buffers; GLB packs all of it into one binary file, which is what you almost always want to ship.
It is the right format for a web viewer, a game engine, an AR quick look or a product configurator. It is the wrong format for printing: it is a description of how something should look, not a watertight solid.
Use it when the model will be rendered in real time.
Avoid it when the model is going to a printer.
3MF: what STL should have been
3MF is a ZIP archive containing XML. It stores units explicitly, so the scale ambiguity that plagues STL disappears. It supports colour and materials, multiple objects with their positions on the plate, and vendor extensions that carry actual print settings — which is why Bambu Studio, PrusaSlicer and OrcaSlicer use it as their project format. Compression typically makes it a fraction of the size of the equivalent STL.
Use it when both ends of the workflow support it, which today means any current slicer.
Avoid it when you are handing a file to someone whose software you cannot verify.
A short decision rule
- Sending a part to be printed, recipient unknown → STL
- Sending a part to be printed, modern slicer on both ends → 3MF
- Multi-colour or multi-material print → 3MF
- Model going into a website, game or AR → GLB
- Model moving between modelling packages with UVs → OBJ
- Scan or point cloud with colour → PLY
Checking a file before you commit to it
Whatever the format, the questions before printing are the same: are the dimensions right, is the mesh watertight, and how much material will it take. Mes3D opens all the formats above — plus FBX, DAE, 3DS and AMF — directly in the browser and answers those three questions without uploading anything.