# ZIP bundles of 3D models

## On Go Bananas a ZIP carries one 3D model with the files it needs, such as a glTF with its .bin and textures or an FBX with its textures; it can't carry a game.

ZIP is the everyday archive format: one file that holds a folder of files, compressed. Many 3D models come as a folder (a model file, a buffer, a few texture images), and a ZIP keeps that folder together on the way up. Go Bananas opens the ZIP, finds the model, and turns it into one ready-to-use asset.

## What a ZIP is good for

Use a ZIP when your model is more than one file:

- **glTF with outside files:** a `.gltf` plus its `.bin` and texture images.
- **FBX with textures:** an `.fbx` plus its texture folder.
- **A character with separate animations:** several FBX files, such as a Mixamo character and its animation clips, merged into one model.

If your model is already a single [GLB](/formats/glb) file, upload the GLB directly; it doesn't need a ZIP.

A ZIP is **not** a way to upload a game or a sound pack. HTML, audio and other files inside a ZIP are deleted. Import games as [HTML](/formats/html), and upload sounds one by one.

## Uploading a ZIP to Go Bananas

You can upload 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 of the ZIP | 200 MB |
| Size once unzipped | 500 MB |
| Entries in the ZIP | 10,000 |
| Files kept | 500 |
| Folder depth | 10 levels |
| 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 |

The file must be a real ZIP. Paths that try to leave the folder and symbolic links are refused.

**What's kept inside.** Only these file types are kept:

| Kind | Extensions |
| --- | --- |
| Models | `.gltf` `.glb` `.bin` `.fbx` `.obj` `.ply` |
| Materials | `.mtl` |
| Textures | `.jpg` `.jpeg` `.png` `.webp` `.gif` `.bmp` `.tga` `.tiff` `.tif` `.dds` `.ktx` `.ktx2` `.basis` |
| Notes | `.json` `.txt` |

Everything else is deleted without a warning, including `.html` files and audio. Hidden files and the `__MACOSX` folder that Mac zips add are skipped.

**Which model you get.** A ZIP becomes **one** asset. The site takes the first match in this order:

1. **A `.gltf`:** converted to a single GLB together with its `.bin` and textures.
2. **A `.glb`:** copied as it is.
3. **An `.fbx`:** converted to GLB with its textures. If there are several FBX files, they're merged into one GLB: the largest is the model, and the others become its animations.
4. **An `.obj`:** only the `.obj` file is kept. Its `.mtl` and textures are dropped.
5. **A `.ply`:** processed as a Gaussian splat and packed into `.ksplat`.

If none of these is found, the upload fails with "No supported 3D model found in ZIP". Processing runs in the background, so the asset shows as processing for a while. When it's ready, you can open it in the built-in viewer.

**The name.** The model's name in games comes from the uploaded file's name without its extension. Renaming the asset changes it, and code that used the old name won't find it.

## Using the model in your game

The result is a normal model asset, so you use it like any [GLB](/formats/glb) (or [PLY](/formats/ply) splat).

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

> Use "robot" as the enemy; it patrols between the two towers and plays its walk animation.

**In code.** The model's address is in `window.GAME_ASSETS.models['name'].url`, and a converted model loads with three.js GLTFLoader:

```js
new THREE.GLTFLoader().load(GAME_ASSETS.models['robot'].url, (gltf) => {
  scene.add(gltf.scene);
});
```

## Tips and common problems

- **Zip the folder as your tool exported it.** A `.gltf` finds its `.bin` and textures by relative paths, so keep the subfolders.
- **One model per ZIP.** Only the first model found is kept, in the order above. Upload other models in their own ZIPs.
- **OBJ textures:** they're dropped even in a ZIP. Convert the model to GLB if it needs its textures.
- **"No supported 3D model found in ZIP":** check the model file is in the ZIP with one of the extensions above, and not inside a nested ZIP.
- **Very large textures** make games slow on phones. 1024×1024 pixels or less is a good size.

## From ChatGPT or Claude

The Go Bananas app in ChatGPT and the connector in Claude can't send ZIP files. Ask for an upload link and you'll get a link to the game's page, where you can upload the ZIP in the editor.

## Related

- [glTF files](/formats/gltf)
- [GLB files](/formats/glb)
- [OBJ files](/formats/obj)
- [FBX files](/formats/fbx)
- [PLY splats](/formats/ply)
- [SPZ splats](/formats/spz)
- [HTML game files](/formats/html)
- [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)
