Skip to main content

Don'ts of Avatars and Optimization

Easy Optimization in Unity

Watch these two videos, and install the following two add-ons:

d4rkAvatarOptimizer - effortlessly and non-destructively optimizes avatars in Unity on upload. Sizable performance gain for essentially no extra work.

Avatar Performance Tools - Makes it easy to see what is taking up the most VRAM in an avatar, and thus what textures should be downscaled.

Duinrahaic's Avatar Optimization Thread

Don’ts of Avatars


Don’t put automatically playing audio on your avatar (like music that plays when it loads in). That audio will also replay any time a player reloads avatars, like every time they change their safety settings. It’s one of the most obnoxious components you can put on an avatar, it’s completely unsolicited, and everyone in the world hears it at an equal unspatialized volume, so please don’t use it.

Don’t put real-time lights on your avatar.

Avoid gratuitous particle effects; they are extremely obnoxious, tank the framerate, and are often nausea, epilepsy, and anxiety inducing.

DO NOT PUT FULL SCREEN WARPING EFFECTS ON YOUR AVATAR. This is the single worst component type you can apply to an avatar, as it is usually unsolicited and the effect is literally sickening, as in nausea, epilepsy, and anxiety inducing.


Avatar Optimization Tips

Use D4rksAvatarOptimizer!
Read the limits
Read the documentation
Use the Blender CATS Plugin (or it's unofficial updated version that works with newer versions of Blender)!
Pumkin’s Avatar Tools can make it super easy to remove unnecessary stuff from your avatar!

Avatar download size

  1. On each texture file (image, typically .jpg or .png), in the inspector window,
    under compression, select normal quality (if it isn’t already)
  2. Enable crunch compression
  3. Click apply

(You can do this with multiple textures selected to expedite the process)


Polygon count

The total number of triangles on your model via decimation. You can either use quick decimation via CATS (or it's unofficial updated version that works with newer versions of Blender), or for better results you can use CATS to separate the model (like by loose parts) and apply decimate modifiers to those parts individually.


Material Count

The easiest way to reduce this is by having d4rkAvatarOptimizer do it for you in Unity. Just add the d4rk avatar component to the root of your avatar and adjust the settings, and it will tell you how many materials it will reduce.

The following instructions using CATS are if you are working with your model in Blender.

Combine identical materials via CATS Optimization dropdown, Material tab.
Create atlases of different materials. This will merge multiple textures/materials into one (reducing draw calls & increasing performance).


Bone count

The fewer the better. You can reduce the number of bones by merging their weights into their parents. Many MMD models come with far too many bones on parts like clothing than is optimal for VRChat. CATS has a bone merging section.


Dynamic bones (no longer supported, replaced with PhysBones)

Dynamic bones are from a paid Unity add-on (superseded by PhysBones, which basically do the same thing) that allows for bones to delay their return to their neutral position using physics. It is used for things like hair or animal ears.


PhysBone component

This is put on the parent bone of the to-be-affected child bones. The fewer the better. For example, if you want dynamic/phys bones on your hair, you can put a single dynamic bone component on the head bone (and exclude all the non hair bones) instead of putting a separate dynamic bone component on each chain of hair bones.


PhysBones collider

Allows collision of dynamic bones on your own avatar. 

Note that the collider shape is a capsule, not a sphere.

The colliders can be easily removed though Pumkin’s Avatar Tools.


Quest Optimization

You can view all of the restrictions here.
Quest Content Optimization

The Sins of Avatar Stats (review)

  • Absurd material counts (USE d4rkAvatarOptimizer, or MERGE SAME MATERIALS IN CATS, COMBINE DIFFERENT MATERIALS USING THE MATCOMBINER IN CATS)

  • Unassigned PhysBones collision checks

  • Gratuitous PhysBones colliders / collision checks

  • Gratuitous PhysBones components

  • Gratuitous PhysBones(PhysBone count (MERGE THESE CHAINS VIA CATS!!!)

  • Seizure-inducing (or other obnoxious and unsolicited) effects

  • Absurd polygon count

  • Absurd particle count

  • Realtime lights (especially per pixel and shadow casting lights)