Guides
GLB vs glTF: what's the difference, and which should you use?
GLB and glTF are the same 3D format in two packages. How they differ in files, size and editing, and which to choose for the web, AR and engines.
3 min read

Quick answer
What is the difference between GLB and glTF?
They are the same 3D format packaged two ways. A .gltf file is readable JSON that points to separate binary and image files, or embeds them as text. A .glb file packs the JSON, geometry and textures into one binary file. Use GLB to share or ship a model, and .gltf to inspect or hand-edit one.
One format, two containers
glTF 2.0 is an open 3D format from the Khronos Group. The specification defines one model structure (meshes, materials, textures, animation, scene hierarchy) and two ways to store it on disk. Nothing about the model changes between them. A viewer, engine or converter that reads one reads the other.
The .gltf form
A .gltf file is JSON: text you can open in any editor. It describes the scene and points to its heavy data in one of two ways:
- Separate files. A
.binfile holds the vertex data, and textures sit alongside it as PNG or JPEG. You get three or more files that must travel together. - Embedded data URIs. The binary data and images are written into the JSON as base64 text. That gives you one file, but base64 makes binary data about a third bigger, and the file is slower to parse.
The spec registers model/gltf+json as the media type.
The .glb form
A .glb file is binary glTF. It starts with a short header, then a JSON chunk with the same scene description, then a binary chunk with geometry and textures. It is one file with no base64 overhead. The media type is model/gltf-binary.
Side by side
- File count: GLB is always one. A .gltf is one (embedded) or several (separate).
- Size: GLB and separate-file .gltf are about the same. Embedded .gltf is larger.
- Readable: a .gltf you can open in a text editor. A GLB needs a tool.
- Hand-editing: easy in .gltf, for example to fix a texture path or rename a material. GLB needs converting first.
- Sharing and uploading: GLB wins. Nothing gets left behind.
- Web caching: separate-file .gltf can share one texture between models and cache it once. GLB bundles its own copy.
Which to use
- Sending a model to someone, uploading it, or using it in AR: GLB. Google's Scene Viewer and model-viewer both take it directly. See viewing 3D models on your phone.
- A web page with one model: GLB. See embedding a 3D model.
- A web app with many models that share textures: separate-file .gltf can save bandwidth.
- Debugging an export: .gltf, so you can read what the exporter wrote.
- Game engines: either. Godot and Unreal import both, and Unity reads both through glTFast. See the Godot and Unity guides.
Converting between them
Because the content is identical, converting loses nothing. In Blender, import either one and export with File › Export › glTF 2.0, choosing glTF Binary (.glb) or glTF Separate (.gltf + .bin + textures) as the format. Online 3D Viewer can also export glTF from the browser.
And glTF vs everything else
If your real question is glTF against FBX or OBJ, that is a different choice about features, not packaging. See glTF vs FBX and the 3D file formats overview.
Vi3W exports GLB, the one-file form, so a generated model opens in any viewer and uploads anywhere without missing pieces.
Last reviewed

