3D file format guide
GLB vs glTF vs OBJ vs USDZ
The four formats you'll meet most often in web and AR. Short version: use GLB for the web and Android AR, USDZ for native iOS AR, treat glTF as the underlying standard GLB packages, and treat OBJ as a legacy interchange format to convert from.
At-a-glance comparison
| Format | What it is | Packs textures? | Android AR | iOS AR | Web 3D | Typical size |
|---|---|---|---|---|---|---|
| GLB | Binary glTF — one self-contained file | Yes (embedded) | Yes (Scene Viewer) | No (needs USDZ) | Yes | Small–medium |
| glTF (.gltf) | JSON scene + external .bin & textures | No (external files) | Yes (if assets resolve) | No (needs USDZ) | Yes | Small (multi-file) |
| OBJ | Legacy text mesh + optional .mtl | No (separate .mtl/maps) | Convert first | Convert first | Via conversion | Large (text) |
| USDZ | Apple's AR package (USD zipped) | Yes (embedded) | Not native | Yes (Quick Look) | Limited | Small–medium |
"Convert first" means the format must be converted (for example OBJ → GLB, as the viewer here does in-browser) before AR.
GLB — the web/AR default
GLB is the binary form of glTF: a single file that bundles geometry, materials,
animations, and textures together. Because it is self-contained, it is the easiest
format to drag-and-drop, host, and pass to a viewer. It powers Android AR through
Scene Viewer and is the standard input for Google's <model-viewer>.
If you only keep one format, keep GLB.
glTF — the standard underneath
glTF ("GL Transmission Format") is an open Khronos standard sometimes called "the JPEG
of 3D." The .gltf variant is human-readable JSON that references external
binary (.bin) and image files. That multi-file nature makes plain
.gltf awkward to drag-and-drop, since the loader needs every referenced
file. For distribution, the same data is almost always shipped as a single GLB.
OBJ — legacy interchange
OBJ is an old, widely supported text format for mesh geometry, with materials in a
companion .mtl file and textures as separate images. It has no animation
support and no AR support of its own, and its text encoding makes files large. It is
still common as an export/interchange format, which is why the
viewer here converts OBJ to GLB
in the browser before display.
USDZ — native iOS AR
USDZ is Apple's AR delivery format — a zipped package built on Pixar's Universal Scene Description. It is what iOS Quick Look uses to place models in the real world from Safari. The catch for a browser tool: USDZ generally cannot be generated in-browser from an arbitrary GLB, so client-side tools (including this one) provide interactive 3D on iOS rather than native Quick Look AR. Production pipelines such as WEARFITS export both GLB and USDZ so that AR is automatic on both platforms.
Quick recommendations
- Embedding a product on the web + Android AR: ship GLB.
- Native AR on iPhone/iPad: also ship USDZ alongside the GLB.
- You were handed an OBJ: convert it to GLB (do it in the viewer).
- Authoring/exporting from a 3D tool: export GLB; keep
.gltfonly if you need to edit the JSON.
Once you've picked a format, make sure the file is actually fast to load — see the guide to optimizing 3D models for web & AR for polygon budgets, Draco/meshopt compression, and KTX2 textures.
Last updated June 2026 · Photo-to-3D AR Viewer editorial
Frequently asked questions
Which 3D format should I use for the web and AR?
Use GLB. It is the binary form of glTF that bundles geometry, materials, animations,
and textures into one self-contained file, loads directly in Google's
<model-viewer>, and powers Android AR through Scene Viewer. If you
only keep one format, keep GLB.
What is the difference between GLB and glTF?
glTF is the open Khronos standard; the .gltf variant is human-readable
JSON that references external .bin and image files. GLB is the same data
packaged as a single binary file. Because plain .gltf needs every
referenced file present, GLB is preferred for distribution and drag-and-drop.
Can I use AR on iPhone with a GLB file?
Native iOS AR uses Quick Look, which needs a USDZ file rather than a GLB. USDZ generally cannot be generated in-browser from an arbitrary GLB, so client-side tools show interactive 3D on iOS. Production pipelines such as WEARFITS export both GLB and USDZ so AR is automatic on Android and iOS.
What should I do if I was handed an OBJ file?
OBJ is a legacy text mesh format with no animation or AR support of its own, and its text encoding makes files large. Convert it to GLB before use — the viewer on this site converts OBJ to GLB in the browser using three.js.