b2KIT

glTF / GLB 3D Viewer

View glTF and GLB 3D models with PBR materials, animations, and scene graph inspection.

Tested tool guide Tested browser tools Checked August 16, 2026

What glTF / GLB 3D Viewer does, with a checked example

Load a glTF or GLB file and this tool renders the 3D scene in the browser with WebGL, showing PBR materials, playing animation clips, and exposing the model's node hierarchy in a scene graph panel. The file is read entirely on your machine; nothing is uploaded. The surprise for most users: a glTF file contains no lights. The viewer supplies its own, so the same model shades differently here than in Blender or Maya, and a dark result is usually a lighting artifact rather than a broken file. Also, a plain .gltf is usually not one file: its geometry and textures commonly sit beside it as separate files.

Worked example

A concrete input and expected output from the current implementation.

Input

Save this as scene.gltf and load it:
{
  "asset": { "version": "2.0" },
  "scene": 0,
  "scenes": [ { "nodes": [0] } ],
  "nodes": [ { "mesh": 0 } ],
  "meshes": [ { "primitives": [ { "attributes": { "POSITION": 0 } } ] } ],
  "buffers": [ { "uri": "data:application/octet-stream;base64,AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAACAPwAAAAAAAA", "byteLength": 36 } ],
  "bufferViews": [ { "buffer": 0, "byteOffset": 0, "byteLength": 36 } ],
  "accessors": [ { "bufferView": 0, "componentType": 5126, "count": 3, "type": "VEC3", "min": [0, 0, 0], "max": [1, 1, 0] } ]
}

Expected output

One triangle is rendered in the default white material, with vertices at (0,0,0), (1,0,0), and (0,1,0). The scene graph panel lists Scene 0 with one node, one mesh, and one primitive: 3 vertices, POSITION only, no indices, no material.

The asset declares one scene, one node, and one mesh whose primitive defines only a POSITION attribute, so the viewer draws the three float32 vertices decoded from the base64 buffer as one non-indexed triangle using the default material. The accessor's min [0,0,0] and max [1,1,0] match the triangle's one-unit extent in X and Y.

How the result is produced

1

GLB container and JSON scene description

A .glb is one binary file: a 12-byte header (magic 'glTF', version, total length), then a JSON chunk describing scenes, nodes, meshes, materials, and animations, then a BIN chunk with vertex and index data. A .gltf file holds the same JSON as text and references external .bin and image files by URI. The viewer parses the JSON, resolves every bufferView and accessor, and uploads the resulting arrays to the GPU.

2

Rendering, animation, and scene graph

Materials use the glTF metallic-roughness workflow: base color, metalness, roughness, plus normal, occlusion, and emissive textures. Animations are keyframe tracks on node translation, rotation, and scale with linear, step, or cubic-spline interpolation, and can target morph weights. The scene graph panel shows the node hierarchy with per-mesh vertex and triangle counts, material references, and animation clips with playback controls.

Good uses

  • Confirming an export: after sending a model out of Blender, Maya, or a photogrammetry tool, load the .glb and verify geometry, textures, and material assignments survived.
  • Pre-delivery check: before handing a .glb to a client or game engine, walk the scene graph to confirm every expected mesh, animation clip, and skeleton are present.
  • Inspecting a model you received: read per-mesh vertex and triangle counts, list materials and textures, see whether images are embedded or external, and play each animation clip.

Limits and checks

  • Shading is not a file verdict. glTF defines no lights, so the viewer's lighting decides appearance: highly metallic materials often render near-black, and the same file can look noticeably different in another viewer. Evaluate geometry and material values, not pixels.
  • A .gltf with external references is not one file. Its .bin and texture URIs resolve relative to the .gltf location, so moving the .gltf alone or renaming assets breaks the model. Only a .glb is guaranteed to be self-contained.
  • Back faces are invisible by design. glTF materials default to single-sided rendering (doubleSided: false), so holes or vanishing faces usually mean the export never enabled double-sided, not that the viewer dropped geometry.

Common questions

The model renders black. Is the file corrupt?

Usually not. glTF files store no lights, so the viewer provides them, and a metallic-roughness material with high metalness or a dark base color reflects almost nothing without an environment map. Check the material's metallic and roughness values and try a brighter environment before concluding the file is broken.

What is the difference between .gltf and .glb?

A .glb is one self-contained binary that packs the JSON scene description and all vertex data into a single file, which makes it easiest to share. A .gltf is the same JSON as plain text that references external .bin and texture files, so it is easier to inspect or diff but breaks if the sidecar files move. Both load here.

References and verification

The example and behavioral notes were checked against the browser implementation. Standards and primary references below define the relevant format, formula, or platform behavior.

Related Tools