# IMPORTANT: Optimization Notes

If your file is larger than \~50mb it will be hard for us to compress it and will perform badly on mobile devices. It will also be slow to load.

### **Tips to Reduce File Sizes and Improve Performance** <a href="#tips-to-reduce-file-sizes-and-improve-performance" id="tips-to-reduce-file-sizes-and-improve-performance"></a>

* Separate the parts of your mesh that deform with shapekeys (i.e. separate your ARKit face from all other meshes), and remove un-needed vertex attributes like extra UVs + vertex colors – you'll have a much smaller file.\ <br>

  <figure><img src="/files/KHWXW5V5NhUGRshkxd7f" alt=""><figcaption></figcaption></figure>
* All other meshes should be combined if possible to reduce draw calls for performance.
* If you can reduce material count that will also reduce the number of draw calls.

### **Textures:** <a href="#textures" id="textures"></a>

* **Format:** WebP typically compresses better than other formats.
  * Note: The blender VRM exporter doesn’t support WebP, but you can use [tinyPNG](https://tinypng.com/) or JPG format to reduce texture size without changing texture dimensions. Hallway automatically converts to WebP on the web!
* **Unused Pixels:** VRAM and compression is better if unused pixels are black instead of some shade of grey or white.
* **Alpha Channel:** If you don’t need an alpha channel, don’t include it, that can save 25% on size.

### **Non-square/non-power-of-two textures waste VRAM:** <a href="#non-square-non-power-of-two-textures-waste-vram" id="non-square-non-power-of-two-textures-waste-vram"></a>

* GPUs **pad** texture dimensions to meet block/tiling alignment, wasting memory on unused space.
* Square, **power-of-two** textures (512x512, 1024x1024, 2048x2048, etc) often avoid these issues and save VRAM.
* **Mipmaps** add extra overhead (each level also gets padded).
* **Compression** is less efficient or may fail for NPOT (Non-Power-Of-Two) sizes.

| ![](/files/fef1fa669cb5bc05c4abf81f003ef8cfcb00b8be) | ![](/files/bbf8752d99dccca1ecd1f77c5d8b3014f74ea592) |
| :--------------------------------------------------: | :--------------------------------------------------: |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hallway.gitbook.io/embed/characters-for-embed/3d-custom-avatar-requirements/important-optimization-notes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
