Skip to content
3DToolBench

Convert GLB to glTF

GLB and glTF are the same standard in two wrappers. GLB is binary and packed; glTF is JSON you can open and read. This turns the first into the second so you can look inside.

Drag a 3D file here, or.

This page is set up for GLB files. Other formats we can read work here too.

The file is read on your own computer. It is never uploaded.

Add a file to switch this on.

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.

Same data, different wrapper

A GLB is a small header followed by a JSON block and a binary block, all in one file. A .gltf is that JSON on its own, with the binary either alongside it in a .bin or written into it. Nothing about the model changes between the two.

The glTF written here embeds its geometry and its texture images rather than producing a .bin and a folder of pictures, so you get one file. That is bigger than the GLB it came from — encoding raw bytes as text always is — but there is nothing to keep track of and nothing to lose.

What this is actually useful for

Reading. Open the .gltf in a text editor and you can see the meshes, the materials, the node tree and the accessor layout. When a model behaves oddly in a viewer, this is the fastest way to find out why.

It is also what some pipelines ask for by name — a build step that patches material values, a validator, a tool that only takes JSON.

What survives, and what does not

The materials come through as materials rather than being flattened into a colour: the base colour texture, the normal, roughness, metalness and occlusion maps, and the numbers around them. The texture coordinates come with them, so the pictures land where they are meant to.

The mesh itself is rebuilt rather than copied byte for byte, because this is a geometry converter and everything that passes through it is welded, checked for winding and re-shaded on the way. Animation and skinning are not carried, and neither are glTF extensions the original may have used.

So if you need a byte-faithful unpack of a GLB with every extension exactly as it was, a command line tool built for that is the right choice. This gives you a readable, self-contained glTF of the model, which is a different and simpler thing.

Embedded, or a .bin and a folder: what the specification allows

glTF permits three ways of storing the numbers a model needs. They can sit in a separate .bin file beside the JSON, which is what most exporters write. They can be embedded in the JSON as base64 data URIs, which is what this converter writes. Or they can be inside a GLB container, which is where you started.

All three are valid glTF 2.0 and every loader reads all three. The choice is about handling rather than about capability: a .bin is the most efficient to serve over a network because a browser can cache and range-request it, embedding is the easiest to move around because it is one file, and GLB is the smallest.

Embedding is the right default here because you asked for a .gltf, and a .gltf that silently depends on a second file you did not know about is the worst of the three for someone reading it. The cost is size — base64 adds about a third — and it is a cost worth paying for a file you are going to open and inspect rather than serve to visitors.

What survives, and what does not

Kept in the glTF file

  • The exact shape of every mesh
  • Object names
  • Textures: the images, the coordinates that place them, and the material around them
  • The scale, unchanged: both formats are in metres

Lost on the way

  • Animation, skinning, cameras and lights
  • glTF extensions the original file may have used

How to convert GLB to glTF

  1. Drop the .glb file in

    Everything the model needs is already inside it, so nothing else is required.

  2. Leave the units alone

    Both formats are metres by specification. This conversion changes the wrapper, not the numbers, unless you deliberately set something else.

  3. Download the .gltf

    One self-contained JSON file. The geometry and any images are embedded as base64 rather than written out beside it.

  4. Open it in a text editor

    This is what you converted it for. `meshes`, `materials`, `nodes` and `accessors` are the four arrays that explain most of what a model is doing.

GLB and glTF compared

GLB and glTF compared, row by row
PropertyGLB.glbglTF.gltf
File contentsOne binary file: a small header, the same JSON as glTF, then all the buffers and images.JSON, normally pointing at separate .bin geometry and image files beside it.
GeometryTriangles, with skinning weights and animation channels alongside them.Triangles, with skinning weights and animation channels alongside them.
UnitsMetres, fixed by the specification.Metres, fixed by the specification. This is unusually helpful.
Colour and textureFull physically based materials, with the texture images packed inside the file.Full physically based materials: base colour, metalness, roughness, normal maps.
Separate objectsA 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 byThe Khronos Group, 2015, as the single-file packaging of glTF.The Khronos Group, 2015. Version 2.0 arrived in 2017 and is what everything writes.
Written byBlender, Sketchfab, Substance Painter, and every tool that ships models to the web.Blender, Substance Painter, Sketchfab and every web 3D pipeline.

Questions

Do I get a separate .bin file or a texture folder?
No. The geometry and the images are embedded in the .gltf, so it is a single file that works on its own.
Why is the glTF larger than the GLB?
Because the same numbers are written as text instead of raw bytes. Expect roughly a third more. That is the cost of being readable.
Are my textures inside the .gltf?
Yes. The images that were packed inside the GLB are written into the .gltf itself, along with the coordinates that place them, so the one file holds everything.
Can I convert it back?
Yes, glTF to GLB does the reverse and packs it into one binary file again.
Is this the same as unpacking the GLB byte for byte?
No. The mesh is rebuilt on the way — welded, checked for winding and re-shaded — and glTF extensions the original used are not carried. For a faithful unpack, use a command line tool built for that. This gives you a readable, self-contained glTF of the model.

Where to go next