GLB vs glTF vs FBX vs OBJ vs STEP: which 3D format to use
What GLB, glTF, FBX, OBJ, STL and STEP each store, and which to pick for client review, CAD, 3D printing or the web, with what MeshMarkup does with each one.
For sending a 3D model to a client or putting it on the web, use GLB: one file carries the geometry, materials and textures, in metres, and every modern viewer reads it. Use STEP for engineering and CAD, because it keeps exact surfaces, the assembly and real units. Use STL or 3MF for 3D printing. FBX and OBJ are fine for moving models between 3D apps, but they often leave textures behind as separate files, which is why a model can arrive grey.
What each format stores
| GLB | glTF | FBX | OBJ | STL | STEP | |
|---|---|---|---|---|---|---|
| Geometry | Triangle mesh | Triangle mesh | Mesh | Mesh | Triangles only | Exact CAD surfaces (B-rep) |
| Materials | PBR, standardised | PBR, standardised | Yes, app-specific | Basic, in a separate .mtl | None | Colours only |
| Textures | Inside the file | Separate image files (or embedded) | Usually separate files, can be embedded | Separate image files | None | None |
| Units | Metres, by definition | Metres, by definition | Recorded in the file | None | None | Recorded in the file |
| Hierarchy and names | Yes | Yes | Yes | Flat object groups | No | Full assembly tree |
| Files to send | 1 | Usually 3 or more | 1 plus textures | 2 plus textures | 1 | 1 |
| Made for | Delivery, web, AR | Delivery, web | Exchange between DCC apps | Simple exchange | 3D printing | Engineering, manufacturing |
GLB is the binary form of glTF. They hold the same thing; a GLB packs the JSON, geometry and images into one file, while a .gltf is a JSON file that usually points at a separate .bin (the geometry) and one image per texture. If you only send the .gltf, the other files are missing.
Which one to pick
For client review and the web: GLB
GLB is the format built for delivering finished 3D models. It's a single file, its materials use the same physically based model every real-time viewer uses, and its unit is always metres, so sizes are right on arrival. MeshMarkup stores every model as GLB, so a GLB goes up without any conversion. Draco-compressed GLB files, which are much smaller, open too.
Most 3D apps export it: Blender, 3ds Max, Maya, Cinema 4D, SketchUp, Substance Painter and KeyShot among them. There's a guide for each app under Import from your 3D app, starting with Blender.
For CAD and engineering: STEP
STEP describes the exact mathematical surfaces, not triangles, and keeps the assembly with part names, colours and real units. It's what every CAD program can write and read, from SolidWorks and Fusion to Inventor, CATIA and Onshape. For a review, MeshMarkup turns it into a mesh in your browser. See open a STEP file online. IGES is an older CAD exchange format that works the same way.
For 3D printing: STL or 3MF
STL is the long-standing printing format: triangles and nothing else, with no colour and no unit. 3MF is the modern replacement, with a unit, colours and several parts in one file. Either opens in MeshMarkup. An STL has no materials, so it shows in grey, and no unit, so its measurements may be off; a 3MF is converted to real size from the unit it records. See measure a 3D model.
For moving models between 3D apps: FBX or OBJ
FBX keeps meshes, hierarchy, materials and units, and is the usual route out of 3ds Max, Maya and Cinema 4D. OBJ is simpler and nearly universal, but has no units, a flat structure, and keeps materials in a separate .mtl file with textures alongside. Both are fine for sending to MeshMarkup as long as the textures come too: zip the model with its texture files.
Why zips matter
FBX, OBJ, DAE and multi-file glTF models name their textures instead of containing them. Send the model file on its own and the viewer has no images to load, so it comes in grey or untextured.
The fix is to put the model and its files in one .zip:
- OBJ: the .obj, its .mtl, and the texture images.
- glTF: the .gltf, its .bin, and the texture images.
- FBX or DAE: the model and its texture images.
A zip with several model files of the same kind (an assembly exported part by part, such as body.stl, arm.stl and legs.stl, or several STEP parts) opens as one model, with each part named after its file. Up to 60 parts per zip. If a zip holds a GLB next to its source file, the GLB is used. Plain .zip only; .rar and .7z aren't read. Or skip all of this by exporting a GLB, which carries its textures inside. More in model looks grey.
What MeshMarkup does with each format
Everything is converted to GLB in your browser, before anything is uploaded, so your original file stays on your computer and your client only ever receives the GLB.
| You upload | What happens |
|---|---|
| GLB | Used as is |
| glTF | Zip it with its .bin and textures; it's packed into a GLB |
| FBX | Converted; the unit in the file is applied, so centimetre files come in at the right size |
| OBJ | Converted, with its .mtl and textures if they're in the zip |
| STL, PLY | Converted; shown in neutral grey (PLY vertex colours are kept) |
| STEP, IGES | Converted with OpenCascade, in metres, with part names and colours |
| 3DM (Rhino) | Converted with Rhino's own library; the model's units are applied; curves and annotations are dropped |
| 3MF, DAE, 3DS | Converted |
| .blend, .max, .ma, .mb, .c4d, .skp, .sldprt, .sldasm, .ipt, .iam, .f3d, .CATPart | Not readable outside their own programs. MeshMarkup tells you which menu exports a format it can open |
Models are shown as they are; animations aren't played. The free viewer uses the same conversion, so it's a quick way to check a file before you upload it. See upload 3D models for the upload itself.
Quick answers
- GLB or glTF? GLB, unless a pipeline specifically wants separate files. One file can't lose its textures on the way.
- FBX or OBJ? FBX, if your app exports it well: it keeps units and hierarchy. OBJ when nothing else works.
- STEP or STL for a client? STEP. It keeps colours, part names and true size, and an STL keeps none of them.
- Can I send a native file? No. Export one of the formats above first. The viewer names the right menu if you try.
Was this guide helpful?
Related guides
Get feedback on the model, not on a screenshot
Upload a model, send one link, and your client clicks the exact spot. Free to start — no card.