glTF to GLB Converter

Pack a glTF model into one GLB file right in your browser. Add the .gltf together with its .bin and picture files (pick them together, open the folder, or drop the ZIP they came in), and the converter copies every buffer and every picture into the GLB byte for byte. Nothing is decoded or compressed again, so the geometry, animations, materials, extensions and even compressed meshes stay exactly as they were. Before you download, the GLB is read back and every accessor and picture is compared with the original, and three.js reads both files to check they show the same model. Missing pictures and web addresses are kept as links and named. Drop a .glb instead to get the .gltf + .bin back. Nothing is uploaded.

100% private — everything runs in your browser. Everything runs in your browser; your glTF files are never uploaded.

100% private — runs in your browser
Drop a .gltf with its .bin and pictures, a folder, a ZIP, or a .glbPick all the files together, open the folder, or drop the ZIP it came in. A .glb is unpacked to .gltf + .bin.

Loading the 3D engine…

File details

How the GLB is made

The .bin data and the picture files are copied into the GLB byte for byte. Nothing is decoded, compressed again or resized, and the rest of the .gltf (materials, animations, extensions) is kept as it is.

Runs in your browser: your .gltf, .bin and picture files are read on your device and never uploaded, and web addresses inside the file are not fetched. The 3D engine (three.js) loads from the jsDelivr CDN for the 3D view and the read-back check. You may use what you make here, including commercially, with no credit needed. The rights in your own models stay as they were.

How to convert a glTF to GLB

  1. Drop the .gltf with its .bin and textures on the box, open the folder, or drop the ZIP; or click Try a sample.
  2. Check the list of files the .gltf refers to: every one should say found.
  3. Look at the check line and the 3D view of the GLB as read back.
  4. Click Download GLB. To go back, drop a .glb and download the .gltf + .bin.

What you can use it for

  • Turn a model exported as separate files into one file for a website, AR or a game engine
  • Send a model as one attachment instead of a folder
  • Pack a model before uploading it somewhere that accepts only GLB
  • Keep compressed meshes and custom extensions exactly as they were while packing
  • Unpack a GLB to edit its JSON by hand, then pack it again
  • Check that a .gltf has all its files before you share it

What goes from the .gltf into the GLB

In the glTFIn the GLB from this converter
.bin files (one or several)Copied byte for byte into the GLB’s one binary chunk, each on an 8-byte boundary
Buffers embedded as data URIs (base64 text)Decoded once to the original bytes and stored as binary
PNG, JPEG, WebP, KTX2 and AVIF pictures (files or data URIs)Copied byte for byte into new buffer views, with their type set from the bytes
Pictures that are missing or web addressesKept as links and named in the notes (web addresses are not fetched)
Accessors, buffer views, sparse dataUnchanged; buffer views move with their buffer
Meshes, materials, nodes, animations, skins, camerasUnchanged
Extensions and extras (Draco, meshopt, KHR_* and custom)Unchanged, compressed data still compressed

A GLB is a 12-byte header, the glTF JSON padded with spaces, and one binary chunk padded with zeros, all on 4-byte boundaries, as the glTF 2.0 specification sets out. The page writes exactly that and nothing else.

What our test files give

Test fileWhat it checksSize of the .gltfGLBBuffers packedPictures packedKept as linksAccessors the sameRead back the same
crate.gltfCrate: .gltf + .bin + 2 pictures in a sub-folder (one name with a space), interleaved data, 3 extensions2.9 KB (.gltf only)3.2 KB1204 of 4Yes
flag.gltfTwo .bin files, a sparse morph target and an animation1.3 KB (.gltf only)1.4 KB2005 of 5Yes
embedded.gltfBuffer and pictures embedded as data: addresses3.5 KB (.gltf only)3.2 KB1204 of 4Yes
leaf.gltfWebP picture (EXT_texture_webp) with a PNG fallback1.6 KB (.gltf only)5.0 KB1204 of 4Yes
links.gltfOne picture missing and one web address (both kept as links)1.6 KB (.gltf only)2.5 KB1024 of 4Yes

Computed by the converter’s own packer from our own glTF test files. Each GLB was read back three ways: by our own byte-level check, by three.js, and by the open-source glTF-Transform library, and all three found the same accessors, pictures and extensions as the original .gltf.

Inside the GLB

PartBytesWhat it holds
Header12“glTF”, version 2 and the total file length
JSON chunk header8Length and the type JSON
JSON chunkthe glTF JSON, padded with spaces to a multiple of 4Everything from the .gltf, with one buffer and no file names for packed data
BIN chunk header8Length and the type BIN
BIN chunkthe data, padded with zeros to a multiple of 4Every .bin in order (8-byte aligned), then every packed picture (4-byte aligned)

Layout from the glTF 2.0 specification’s GLB file format section. Our crate test file: 3,244 bytes as a GLB.

GLB to glTF

DropYou get
model.glbmodel-gltf.zip with model.gltf (readable JSON) and model.bin
Pictures inside the GLBKept inside model.bin, so no index changes
Read backPacking the two files again gives the same JSON and the same bytes

Next steps

Turn the GLB into a print file with GLB to STL and check it in the STL viewer. Tidy the .gltf JSON with the JSON Formatter, or shrink big textures first with the Image Compressor.

Sources

Sources: Khronos Group: glTF 2.0 Specification, GLB file format (header, JSON and BIN chunks, 4-byte padding); glTF 2.0 Specification: URIs (relative paths, data URIs).

More free tools

Working with 3D models?

View, convert and make 3D files with free tools that run privately in your browser, with no sign-up and no watermark.

See all free tools →

Frequently asked questions

Is this glTF to GLB converter free?

Yes. There is no sign-up, no watermark and no limit on how many models you pack. Everything runs in your browser, so your files never leave your device.

Is anything lost when packing?

No. A GLB is the same glTF in one binary file, so the converter copies the .bin data and the picture files in unchanged and keeps the rest of the JSON as it is. The only changes are the ones the GLB format needs: the buffers become one, and pictures get a buffer view and a type instead of a file name. The page checks this byte by byte before you download.

What files do I need to add?

The .gltf and every file it names: usually one .bin and some PNG or JPEG pictures. The page lists each file the .gltf refers to as found, missing or embedded. Picking the whole folder or dropping the ZIP is easiest, because the files keep their folder paths.

What if a texture is missing?

The GLB is still made, and the missing picture is kept as a link to its file name, so it can be added later; the page names it. A missing .bin stops the conversion, because the geometry is in it.

Are extensions kept?

Yes, all of them, including ones this page does not know, because nothing in the JSON is rewritten except buffers and picture links. Draco or meshopt compressed meshes, texture transforms, KTX2 or WebP pictures and custom extras stay as they were.

Will the GLB be smaller?

About the same size as the .gltf and its files together, because the data is copied as it is. A .gltf with embedded data stores it as base64 text, about a third larger than binary, so that kind gets smaller. The geometry and pictures are not compressed further; to make the file smaller, compress the textures or meshes in a 3D app first.

Can I turn a GLB back into glTF?

Yes. Drop the .glb and download a ZIP with the .gltf and its .bin. The pictures stay inside the .bin, as in the GLB, and packing the two files again gives the same data.

Does it work with glTF 1.0?

No. GLB here is glTF 2.0, the version almost every app exports today. Open an old glTF 1.0 file in an app that exports glTF 2.0 first.

Why are there two .bin files in my model?

Some exporters write one .bin per mesh or animation. A GLB holds one buffer, so the converter joins them in order (each on an 8-byte boundary) and moves every buffer view with it; the page says if a buffer name was dropped.

Are my glTF files uploaded?

No. The .gltf, .bin and picture files are read and packed by JavaScript in your browser, so they never leave your device, and web addresses inside the file are not fetched. Only the 3D engine itself (three.js) is loaded from a public CDN, for the 3D view and the check. There is no sign-up and no watermark.