Free online glTF to GLB converter
glTF to GLB — the conversion that changes nothing
Drop a .gltf and download a .glb, packed in this tab with nothing uploaded. This is the one page here with no trade-off to explain: GLB is not a different format but the same glTF in a binary container, so the scene, the materials, the names and the metres all arrive unchanged and the scale factor is exactly one. What you gain is a single file instead of a set of them, usually about a quarter smaller, because embedding data in JSON requires base64 and base64 is expensive.
- 100% free
- No signup
- Nothing lost
- Smaller file
- Nothing uploaded
Drag a file anywhere on this page to open it. F fits the view, W switches shading, G the grid, R spins it.
How to convert glTF to GLB
Three steps, and no decisions in the middle.
Drop the .gltf
Either packaging. Self-contained, the buffers are already in the JSON. Split, the .bin and the textures are the pieces that will go inside the GLB, so drop them with it — the folder or a zip does the same — and packing them is exactly what this page then does.
Nothing is decided on your behalf
There is no scale factor here and no loss to report. GLB is glTF: identical JSON, identical geometry, identical metres. The only change is that the JSON and the buffers are laid end to end in one binary container instead of being written as text with the numbers spelled out.
Download the .glb
Typically around a quarter smaller than the file that went in, because base64 encoding costs a third in size and disappears here. This is the file to put on a web server or hand to somebody.
Technical specifications
| Reads | .gltf — self-contained, with buffers inline or base64-embedded |
|---|---|
| Writes | .glb — the binary container defined by the same specification |
| Unit | Metres both sides; scale factor 1 |
| Kept | Everything — geometry, materials, textures, names, hierarchy |
| Lost | Nothing; this is packaging, not translation |
| Typical size | About a quarter smaller, because base64 is no longer needed |
| File size | No fixed limit — past 100 MB you are told what it will cost this tab, then it opens |
Frequently asked questions
Is GLB a different format?
No. It is glTF in a binary wrapper — the specification defines both and calls them the same format. A GLB is a short header followed by two chunks: the JSON that a .gltf would contain, and the binary buffer it would otherwise reference. Every loader that reads one reads the other, and no viewer will show you a difference.
Then why bother?
Because one file is a category better than several. A .gltf with a companion .bin and four textures is five things that must stay together, keep their relative paths and all be uploaded; a .glb is one attachment that cannot arrive half-broken. It is also smaller, since embedding binary data in JSON requires base64 and base64 costs 33% on top of the bytes.
Does anything get lost?
Nothing. This is the rarest kind of conversion — a repackaging rather than a translation. Materials, textures, node names, hierarchy, animation channels, extensions: all of it is the same data written a different way. Nothing rescales either, because both sides are metres by specification.
Why does my file say it needs an external .bin?
Because that is the split form of glTF and the geometry really is in the other file. Give it the other file: select the .bin along with the .gltf, drop the folder they live in, or drop a zip of the lot. All of it is read in this tab, and packing those pieces into one binary is precisely what a GLB is.
Can I go back to .gltf afterwards?
Yes, and just as losslessly. The distinction is packaging, so unpacking is available whenever you want to read the JSON or edit it by hand. That is the practical rule: keep .gltf while you are working on the file, ship .glb when you are done.
Is anything uploaded?
No. The JSON is read and the binary container assembled in this tab.
About why one format ships in two shapes
When Khronos designed glTF they had two audiences in mind and could not serve both with one layout. A web server wants the pieces separate: the browser fetches the JSON first, starts parsing while the geometry is still arriving, caches a shared texture once across twenty models. A person sending a file wants it whole. So the specification defines both, with a rule that the binary form contains exactly what the text form would reference.
In practice the split form has aged less well than expected, because most models are not served by a hand-tuned pipeline — they are attached to a message, dropped into a viewer, or handed to a framework that expects one URL. GLB has quietly become the default, to the point that many tools now write nothing else. The .gltf form remains genuinely useful for one thing: it is text, so you can open it, read the node tree, and fix something with an editor.
If you are going the other way and need the scene in a format outside the glTF family, OBJ takes the geometry and the UVs, and USDZ is what an iPhone opens in AR.
Where the packing happens
Every number on this page is worked out by JavaScript running in the tab you are reading it in. The model you open is read straight off your own disk — it is never uploaded, logged or kept, which is also why these tools carry on working after you disconnect from the network.
One clause specific to this page: packing files together is exactly the sort of work that gets pushed to a server, and a server is where a file stops being yours. The container is assembled locally, out of bytes that were never sent anywhere.