# GLB files in browser games

## GLB is the best format for 3D models on Go Bananas: one file holds the mesh, materials, textures and animations, and the site uses it as it is.

GLB is the binary version of glTF, the open 3D format made for real-time apps like games and web pages. A single `.glb` file packs the geometry, materials, textures and any animations together, so nothing can go missing on the way. Most 3D tools and model stores can export or download GLB.

## What GLB is good for in games

GLB is the format to reach for when you have a choice. It loads fast in the browser, keeps its textures and colors, and carries skeletons and animations for characters.

- **Characters:** rigged and animated characters (walk, run, jump, idle) come through with their animation clips.
- **Props and buildings:** trees, cars, weapons, houses, furniture.
- **Whole levels:** a room or a small map exported as one model.

Other 3D formats end up as GLB anyway. FBX files are converted to GLB, with their textures shrunk to at most 512×512 pixels. A standalone glTF is converted to a self-contained GLB. OBJ is kept as it is but has no materials or textures here, so GLB is the better choice when your model has color. For photo-real scanned scenes, see [PLY](/formats/ply) and [SPZ](/formats/spz) splats.

## Uploading GLB to Go Bananas

You can upload a GLB in three places:

- **Create panel:** press the 📎 button or drag the file onto the chat.
- **Assets tab:** press **Upload Asset**.
- **Editor:** in the Assets tab press **Upload New**, press the 📎 in the editor chat, or drag the file onto the editor chat.

You need to be signed in with a verified email to upload.

| Limit | Value |
| --- | --- |
| Size per file | 200 MB |
| Total storage | 100 MB for free accounts created since May 5, 2026; 1 GB for Pro subscribers and older accounts |
| Uploads | 20 an hour per account |

Failed and deleted uploads don't count toward your storage. The site checks that the file really is a GLB (it must start with the `glTF` signature) and refuses empty files.

**What the site does with it.** A GLB is kept unchanged. The site also reads it to learn about the model:

- the names of its animations;
- its height and the scale it needs;
- whether it is lying on its side and needs turning upright;
- how far it sits above or below the ground;
- whether it is a Mixamo character.

The AI gets these details when it writes your game, so it can place, scale and animate the model correctly without you measuring anything. Large GLB files (100 KB and up) also get compressed copies, so they download faster.

When the model is ready you can open it in the built-in 3D viewer and orbit around it. Asset cards show a thumbnail.

**The file name matters.** The name without `.glb` becomes the model's name in games: `knight.glb` is `"knight"`. If you rename the asset later, the name changes too, and code that used the old name won't find it. If two models share a name, the newest one wins.

## Using GLB in your game

**Ask the AI.** In the create box or the edit box, type `@` and pick your model from the list. It inserts the model's name in quotes:

> Make "knight" the player character, and let him run with the arrow keys.

The AI already knows the model's size, orientation and animation names.

**In code.** Every game gets a `window.GAME_ASSETS` object with your models, images and audio. A model's address is in `GAME_ASSETS.models['name'].url`. Go Bananas games use three.js r128 for 3D, with GLTFLoader:

```html
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/loaders/GLTFLoader.js"></script>
```

```js
const loader = new THREE.GLTFLoader();
let mixer;
loader.load(GAME_ASSETS.models['knight'].url, (gltf) => {
  const knight = gltf.scene;
  scene.add(knight);
  if (gltf.animations.length) {
    mixer = new THREE.AnimationMixer(knight);
    mixer.clipAction(gltf.animations[0]).play();
  }
});
// in your animation loop: if (mixer) mixer.update(delta);
```

`getAssetUrl('knight')` also returns the address; it looks through models, then images, then audio.

## Tips and common problems

- **Keep models light for phones.** A few thousand to tens of thousands of triangles per character, and textures of 1024×1024 pixels or less, keep games smooth on mobile.
- **Export animations in the GLB.** If you need several moves, export them as separate clips in the same file. The AI sees their names.
- **Draco-compressed GLB files** need an extra decoder in three.js. If a model won't load, export it again without Draco compression.
- **Model invisible or tiny?** Check the scale in your 3D tool before export, or ask the AI to "make the knight twice as big". The site's size detection usually handles this.
- **Deleting a model removes it at once**, including its thumbnail and compressed copies, so games that use it can no longer load it. A model can't be deleted while it is still processing.
- **Remixes keep their models.** A remix of your game can load the models your game uses.

## From ChatGPT or Claude

The Go Bananas app in ChatGPT and the connector in Claude can't send 3D files. Ask for an upload link and you'll get a link to the game's page, where you can upload the GLB in the editor. Once it's uploaded, you can ask the AI in chat to use it.

## Related

- [glTF files](/formats/gltf)
- [OBJ files](/formats/obj)
- [FBX files](/formats/fbx)
- [PLY splats](/formats/ply)
- [SPZ splats](/formats/spz)
- [ZIP bundles of 3D models](/formats/zip)
- [All file formats](/formats)
- [Making 3D games](/guides/3d-games)
- [How to make a video game](/guides/how-to-make-a-video-game)
- [Making games work on phones](/guides/games-on-phones)
