GLB and glTF Viewer
Open a .glb, or a .gltf selected together with its .bin and texture files, and the scene is drawn with three.js on your device. Beside it sit the node tree with each node's transform, the meshes, materials and animations, and a list of what could not be shown: a texture at a web address (never fetched), a file you did not select, or an extension the viewer does not draw. Pause an animation and seek to an exact time, then export that pose as STL or OBJ, the view as PNG, or the whole scene packed into one GLB.
Drop a GLB, or a glTF with its files
Select a .glb, or a .gltf with its .bin and textures, all at once, or
- Nodes
- waiting
- Triangles
- waiting
- Scene size
- waiting
- Listed
- waiting
Open a scene to turn it around, read its parts or export it.
Select a .glb, or a .gltf together with its .bin and texture files, or drop them all at once. A scene may read up to 256 MB of files, draw up to 12,000,000 triangles in up to 50,000 nodes, and decode textures up to 8,192 pixels a side and 128 million pixels in all. Nothing is uploaded, and no web address in a file is fetched. This browser remembers only the light setting and the wireframe switch.
Try the edge cases
Scenes written for this page. Each goes through the same reader as files of your own.
- block-stack.bin is reported missing by name; nothing is drawn and nothing is fetched
- bounds x -1 to 1, y 0 to 2, z -1 to 1: 2 x 2 x 2 m
- Top turned 112.5°, the same pose on every seek
Common questions
- How do I open a glTF file that has a separate .bin file and textures?
- Select the .gltf together with its .bin and image files in the file picker, or drop them all at once. The viewer matches each file the .gltf names by its file name. If a .bin it needs is missing, it names the missing file and its size and draws nothing. A missing texture is listed, and the materials that use it are drawn without it.
- Does the viewer download textures or buffers from web addresses in the file?
- No. Nothing is fetched. Before three.js reads the scene, it is repacked on your device into a GLB with no addresses left in it. A texture at a web address is listed with its address and the material is drawn without it. A buffer at a web address stops the scene from opening, with the address named, because the geometry is in it.
- Can I convert GLB to STL or OBJ?
- Yes, for the triangle geometry. STL and OBJ are written from the pose on screen, so a paused animation is exported as posed, with skinning and morph targets applied. Neither format holds animation, materials or textures, and each export says which of those it left out; lines and points are not written. OBJ keeps one named object per part. Up to 5,000,000 triangles are written.
- Which glTF extensions does it show?
- Those three.js draws without a decoder fetched from elsewhere: the material extensions for clearcoat, sheen, transmission, volume, IOR, specular, iridescence, anisotropy, dispersion, emissive strength, bump and unlit, plus texture transforms, mesh quantization, WebP textures, GPU instancing and punctual lights. Draco and meshopt compression, KTX2 and AVIF textures, material variants and any other extension are listed as not shown. A file that requires Draco or meshopt compression cannot be drawn, and the viewer says so.
- How large a scene can it open?
- A scene may read up to 256 MB of files, draw up to 12,000,000 triangles in up to 50,000 nodes, and decode textures up to 8,192 pixels a side and 128 million pixels in all. A texture past those limits is listed and left undecoded. A scene past the others is refused with the number that was too large.
- Can I play an animation and stop it at an exact time?
- Yes. Choose the animation, then Play or Pause, drag the time slider, or type a time in seconds and press Seek. The pose depends only on the time, so seeking to the same time always gives the same pose, and the selected node's translation, rotation, scale and bounds are shown for that moment.
- Why does the model look different from another viewer?
- Lighting and color are a rendering choice. Studio light uses a generated room reflection and one lamp, Plain uses a sky light and one lamp, and File lights uses the punctual lights stored in the file, when it has eight or fewer, with a faint fill. Node transforms, bounds and triangle counts do not depend on the light: they are read from the file's own data.
The scene is drawn with three.js from the files you select, on your device: a buffer or image at a web address is never fetched and is named, and an extension or material effect the viewer cannot show is listed. Node transforms, bounds and triangle counts are read from the file's own data in glTF units (meters). STL and OBJ exports keep only triangle geometry at the pose on screen and list the animation, materials and textures they leave out.