Convert glTF to GLB
A .gltf is JSON that usually points at other files. A .glb is the same model packed into one binary file with nothing hanging off it. This is the conversion to do before you publish a model anywhere.
Drag a 3D file here, or.
This page is set up for glTF files. Other formats we can read work here too.
The file is read on your own computer. It is never uploaded.
Your file is read by your own browser and never sent to a server. There is no upload, no account and no copy of your model anywhere but on your computer.
Bring the companion files with you
A .gltf on its own is often not the whole model. It normally refers to a .bin holding the geometry, and sometimes to image files. There is no server here to fetch them from, so drag them in together — select the .gltf and the .bin at once, or drop the whole set on the page.
If the .bin is missing, the tool says so by name rather than failing with something unhelpful. A .gltf with its geometry already embedded needs no companion and works on its own.
Why GLB is what you publish
One file cannot arrive incomplete. There is no second file to forget, no relative path to break when the model moves, and it is smaller because the numbers stay binary instead of becoming digits. Every web viewer, AR quick look and game engine importer takes GLB.
The scale does not change: both formats are defined in metres, so the numbers go across as they are unless you deliberately change the unit boxes.
What comes across
Shape, object names, materials and textures. Duplicate points are joined and normals are rebuilt with a thirty degree crease angle, so the GLB shades cleanly even if the glTF it came from did not.
The images are packed into the GLB itself, which is the whole point of the format: whatever the .gltf kept beside it — a .bin, a folder of pictures — ends up inside the one file, provided those files were dropped in with it. Drag the .gltf, the .bin and the images in together and nothing is left behind.
Animation and skinning are not carried. This tool works on geometry and the materials wrapped around it.
What a relative path in a .gltf actually means here
A .gltf refers to its companions with a URI: `"uri": "scene.bin"`, or `"uri": "textures/wood.png"`. In a browser loading from a server, those are resolved against the address the .gltf came from and fetched over the network.
There is no server in this conversion and no network request is made, which is the point of the whole site. Files are matched by name against what you dropped in. So a .gltf asking for `textures/wood.png` is satisfied by a file called `wood.png` among the ones you selected — the folder part is ignored, because your file picker gives us names rather than a directory tree.
The practical consequence is that two different pictures with the same name in different folders cannot both be supplied. That is rare, and when it happens the tool names the file it could not resolve rather than writing a GLB with a silently missing texture.
What survives, and what does not
Kept in the GLB file
- The exact shape of every mesh
- Object names
- Textures and materials, packed into the single file
- The scale, unchanged: both formats are in metres
Lost on the way
- Animation, skinning, cameras and lights
- Images that were not dropped in with the .gltf — nothing can fetch those
How to convert glTF to GLB
Select the .gltf and everything beside it
The .gltf, its .bin, and every image file, all at once. This is the step people miss, and it is why a converted model arrives grey or fails outright.
Check what was found
If a companion file is missing it is named rather than skipped quietly. A .gltf with its geometry already embedded needs nothing else and converts on its own.
Leave the units and axis alone
Both formats are metres and Y-up. Nothing needs converting between them; this is a repackaging.
Download the .glb
One binary file, usually about a third smaller than the .gltf and .bin together, with the images packed inside it.
glTF and GLB compared
| Property | glTF.gltf | GLB.glb |
|---|---|---|
| File contents | JSON, normally pointing at separate .bin geometry and image files beside it. | One binary file: a small header, the same JSON as glTF, then all the buffers and images. |
| Geometry | Triangles, with skinning weights and animation channels alongside them. | Triangles, with skinning weights and animation channels alongside them. |
| Units | Metres, fixed by the specification. This is unusually helpful. | Metres, fixed by the specification. |
| Colour and texture | Full physically based materials: base colour, metalness, roughness, normal maps. | Full physically based materials, with the texture images packed inside the file. |
| Separate objects | A scene graph of named nodes, each with its own position and rotation. | A scene graph of named nodes, each with its own position and rotation. |
| Published by | The Khronos Group, 2015. Version 2.0 arrived in 2017 and is what everything writes. | The Khronos Group, 2015, as the single-file packaging of glTF. |
| Written by | Blender, Substance Painter, Sketchfab and every web 3D pipeline. | Blender, Sketchfab, Substance Painter, and every tool that ships models to the web. |
Questions
- It says the .bin file is missing. What do I do?
- Select the .gltf and the .bin together, or drag both onto the page at once. The .gltf normally keeps its geometry in that second file, and without it there is no model to convert.
- Will the GLB be smaller?
- Usually about a third smaller than the .gltf plus .bin it came from, because nothing has to be written as text.
- Do the textures get packed in?
- Yes, as long as the image files are dropped in along with the .gltf. Select the .gltf, its .bin and its images together and they all end up inside the one GLB. A picture the .gltf names but that was not handed over cannot be fetched — nothing here looks around your computer for it.
- Is anything uploaded?
- No. The files are read in your browser and the GLB is built there. Nothing leaves your computer.
- My .gltf refers to textures in a subfolder. Does that work?
- Yes, as long as you select the image files too. The folder part of the path is ignored and files are matched by name, because a file picker hands over names rather than a directory tree.