GLB to GLTF Converter - Extract & Export 3D Models Online
Convert GLB binary files to GLTF JSON format instantly. Extract buffers, textures, and geometries with full data integrity. Free browser-based 3D model converter.
Drop GLB file here or click to browse
Maximum file size: 100 MB
About
GLB (GL Transmission Format Binary) stores 3D scenes in a single binary blob, embedding JSON metadata, geometries, textures, and animations. When debugging assets or integrating with text-based pipelines, you need the human-readable GLTF variant. This converter parses the GLB container structure - validating the 0x46546C67 magic number, extracting the JSON chunk (type 0x4E4F534A) and binary chunk (type 0x004E4942) - then rebuilds the output as standard GLTF. Binary buffers can be embedded as Base64 data URIs or exported as separate .bin files. The parser enforces 4-byte chunk alignment per the Khronos specification, preventing corruption in WebGL runtimes that assume aligned memory access. Risk: Manual hex editing or improper chunk splitting breaks asset references. This tool validates chunk integrity and preserves buffer byte offsets.
Formulas
GLB File Structure:
Header = MagicNumber + Version + TotalLength
where MagicNumber = 0x46546C67 (4 bytes), Version = 2 (4 bytes), TotalLength = file size in bytes (4 bytes)
Chunk Structure:
Chunk = ChunkLength + ChunkType + ChunkData
ChunkLength (4 bytes, little-endian) = byte length of ChunkData
ChunkType (4 bytes) = 0x4E4F534A (JSON) or 0x004E4942 (BIN)
Base64 Encoding Overhead:
EncodedSize = OriginalSize × 43
If OriginalSize = 1 MB, then EncodedSize ≈ 1.33 MB
Chunk Alignment:
PaddedLength = ceil(ChunkLength4) × 4
JSON chunks padded with 0x20 (space), BIN chunks with 0x00
Reference Data
| Property | GLB (Binary) | GLTF (JSON) | Notes |
|---|---|---|---|
| File Extension | .glb | .gltf | GLTF may have .bin sidecars |
| Magic Number | 0x46546C67 | N/A | ASCII "glTF" |
| Version | 2 | 2.0 | Both use GLTF 2.0 spec |
| JSON Chunk Type | 0x4E4F534A | N/A | ASCII "JSON" |
| Binary Chunk Type | 0x004E4942 | N/A | ASCII "BIN\0" |
| Chunk Alignment | 4 bytes | N/A | Padding with 0x20 or 0x00 |
| Buffer Storage | Embedded | External or Data URI | GLTF allows both |
| Typical Size | Smaller | Larger (Base64 overhead) | ~33% increase with Base64 |
| Use Case | Web delivery | Debugging, editing | GLB for runtime, GLTF for dev |
| Texture Embedding | Yes | Optional | Data URIs or file references |
| Animation Data | Binary accessors | Binary or JSON | Keyframes in buffers |
| Node Hierarchy | JSON chunk | JSON root | Same structure |
| Material Definitions | JSON chunk | JSON root | PBR parameters |
| Khronos Validator | Supported | Supported | github.com/KhronosGroup/glTF-Validator |
| Three.js Loader | GLTFLoader | GLTFLoader | Same loader for both |
| Babylon.js Support | Yes | Yes | SceneLoader.ImportMesh |
| Blender Export | Native | Native | File → Export → glTF 2.0 |
| Compression | Draco, KTX2 | Draco, KTX2 | Extensions for both |
| Morph Targets | Supported | Supported | Blend shapes in accessors |
| Skinning | Supported | Supported | Joint matrices in buffers |
| Lights | Extension | Extension | KHR_lights_punctual |