Format Reference
STL vs OBJ vs 3MF vs GLB vs PLY
The five mesh formats every maker, web developer and CAD engineer eventually has to choose between. Skip the spec sheets — here's the decision in 30 seconds.
TL;DR
- Printing single-color? STL.
- Printing with Bambu AMS or multi-material? 3MF.
- Putting a 3D model on the web? GLB.
- Moving between Blender / Maya / CAD? OBJ.
- 3D scan / photogrammetry? PLY.
Decision matrix
| Format | 3D printing | Web / Game | Materials | File size | Best for |
|---|---|---|---|---|---|
| .stl | Universal — every slicer reads it | Geometry only, no textures | None (mesh + normals only) | Medium (binary) / huge (ASCII) | 3D printing |
| .obj | Most slicers accept it | Supported but verbose | Optional via .mtl sidecar | Larger than STL, text-based | CAD / DCC interchange |
| .3mf | Modern standard (Bambu / Prusa / Orca) | Rarely used outside printing | Yes — colors, units, slicer metadata | Compact (zip + XML) | Multi-color or AMS prints |
| .glb | Not for printing — too much extra data | Web3D standard (PBR, animations) | Full PBR + textures embedded | Compact, binary | Web / AR / VR / games |
| .ply | Not typical | Limited | Per-vertex color (great for scans) | Compact (binary) | 3D scanning, point clouds, research |
By use case
You're a 3D-printing hobbyist
→ STL for single-color, 3MF for AMS / multi-color
STL is read by every slicer on the planet; switch to 3MF only when you need colors, multiple plates, or per-object print settings.
You're building a web product that shows 3D models
→ GLB
Single binary, embedded PBR materials, native browser support via <model-viewer>. Three.js, Babylon.js and Sketchfab all default to glTF/GLB.
You're moving meshes between Blender / Maya / Cinema 4D
→ OBJ — or FBX/USD if you need animation
OBJ is the lowest-common-denominator interchange for static meshes. Every DCC tool imports and exports clean OBJ.
You scanned an object with a phone or LiDAR rig
→ PLY
PLY natively stores per-vertex color and normals, which is exactly what a photogrammetry / structured-light pipeline outputs.
You're prototyping a CAD part that will be 3D printed
→ Export to STL from CAD; archive STEP separately
STL freezes geometry as triangles — perfect for slicing, useless for editing. Keep the parametric STEP around so you can iterate.
Format deep dives
.stl
1989The 3D printing lingua franca
- Triangle mesh + face normals. Nothing else.
- Two encodings: binary (compact, recommended) and ASCII (human-readable, huge).
- No unit information — millimeters by convention but not enforced. Some files import as meters by accident.
- Will outlive us all. Universal slicer support means it's never going away.
.obj
1990sThe DCC interchange workhorse
- Plain text. Vertices, faces, optional UVs and normals.
- Materials live in a separate .mtl file — easy to lose during conversion.
- Supports n-gons and quads, unlike STL which is triangles-only.
- Universally supported by Blender, Maya, 3ds Max, Cinema 4D, ZBrush.
.3mf
2015STL, modernized for the AMS era
- Zip archive containing XML descriptions plus mesh data — extensible by design.
- Stores color, material, units, build plate, and slicer-specific settings inline.
- Default save format in Bambu Studio, PrusaSlicer, OrcaSlicer.
- Tool ecosystems differ — Bambu's .3mf is not always cleanly readable by Prusa and vice versa.
.glb
2017The Web3D PBR binary
- Binary glTF — geometry, materials, textures, animations, all in one file.
- Designed by Khronos Group as the 'JPEG of 3D' for the web.
- First-class support in three.js, Babylon.js, <model-viewer>, AR Quick Look (iOS), Scene Viewer (Android).
- Slightly heavier than STL for the same geometry, but compresses well with Draco / meshopt.
.ply
1994 (Stanford)The scanning and research format
- Designed at Stanford for storing scanned models (the famous Stanford Bunny is PLY).
- First-class per-vertex color and normals — perfect for photogrammetry pipelines.
- Both ASCII and binary variants. Binary recommended for anything non-trivial.
- Rarely used outside academic / scanning contexts, but still the cleanest format for vertex-colored meshes.
FAQ
Does STL store colors?
No. The official STL spec contains triangle vertices and face normals only. A non-standard 'color' extension exists in some CAD tools but is ignored by most slicers — treat STL as monochrome.
Is 3MF replacing STL?
Slowly. 3MF fixes STL's weaknesses (units, colors, metadata) and is now the default in Bambu Studio and PrusaSlicer. STL persists because of inertia and universal compatibility — both will coexist for years.
Can I 3D-print a GLB file?
Not directly — slicers don't read GLB. Convert GLB → STL or 3MF first. Textures and materials are dropped; only geometry survives.
Why is my OBJ file so much larger than the STL of the same model?
OBJ is text by default. Each vertex and face takes more characters than the binary STL encoding. If size matters, convert to binary STL or compressed GLB.
What about FBX, USD, IGES, STEP?
FBX/USD are animation/asset pipelines (game and film). STEP/IGES are CAD parametric formats — they store features, not just meshes. None are interchangeable with the five mesh formats above; they need a different conversion pipeline.
Convert between any of these
All conversions run 100% in your browser. No upload, no signup.