Avatar Optimization Checklist For VRChat Creators

Use this checklist before you upload or update an avatar. The goal is not to make every avatar tiny at all costs. The goal is to avoid the biggest problems that make avatars heavy, blocked on mobile, or painful to maintain.

Recommended Setup

Fix the largest avatar performance costs before adding more toggles, outfits, or effects.

  1. Check the SDK avatar stats before upload.
  2. Reduce materials, texture memory, mesh count, and expensive components first.
  3. Create a dedicated Android version if Quest visibility matters.
VRChat note

VRChat performance rank affects how other users see your avatar, especially on mobile. The rank is a useful warning system, but it is not a perfect measurement of real-world performance. Use it as a guide, then inspect the actual stats.

Biggest Offenders First

If you only have time for one optimization pass, start with the items that usually move the needle most:

Area Why it matters First fix
Materials more material slots usually means more draw calls reduce and atlas where practical
Texture memory large textures consume memory quickly lower import size and compress carefully
Skinned meshes each renderer adds overhead merge compatible clothing/accessories
PhysBones and contacts dynamics can get expensive fast reduce affected transforms and colliders
Particles and trails effects can multiply in crowds remove or simplify cosmetic extras
Unsupported mobile components can break or disappear on Android build a dedicated mobile-safe variant

Do not spend an hour deleting tiny hierarchy objects while the avatar still has dozens of materials and oversized textures.

Quick Decision

Situation Best move
You only care about PC Optimize anyway, because poor structure still creates performance and maintenance problems.
You want Quest or mobile users to see the avatar by default Aim for a mobile-friendly version that stays at Medium or better, because mobile blocks Poor and Very Poor avatars by default.
Your avatar has multiple outfit pieces, materials, and add-ons Consolidate meshes and materials before you keep adding features.
You are close to upload but the avatar rank is weak Fix the biggest offenders first: meshes, materials, textures, PhysBones, contacts, and unsupported mobile components.
You cannot finish Android support today Generate or configure an impostor so mobile users get a better fallback.

Upload Checklist

  • Check the avatar stats in the VRChat SDK build panel before upload.
  • Review the in-client avatar stats screen after upload so you can confirm the actual performance rank.
  • Compare PC and Android stats separately if the avatar supports both.
  • Keep the rig and hierarchy clean before adding extras, toggles, and effects.
  • Merge accessory meshes into the main avatar where possible instead of stacking extra renderers.
  • Reduce material slots aggressively. Fewer materials usually means fewer draw calls and less rendering overhead.
  • Atlas textures when practical so the avatar needs fewer materials and less texture memory.
  • Keep avatar textures modest. For Android or Quest variants, treat 1024x1024 as the practical ceiling unless you have a very strong reason not to.
  • Remove unused materials, hidden meshes, duplicate bones, and old test objects before publish.
  • Recheck PhysBones, contacts, constraints, and particles after every feature pass because those counts creep up fast.

PC vs Android Decision

Goal Practical target
PC-only showcase avatar Still reduce obvious waste so friends and event hosts are more likely to show it
Cross-platform avatar Make a dedicated Android version instead of hoping the PC version translates
Event avatar Prioritize a reliable rank and lower visual noise over maximum effects
Public avatar Make stats readable and avoid surprises for users on lower-end hardware

Android support is not just a build checkbox. It usually requires mobile shaders, stricter component choices, lower texture memory, and fewer expensive systems.

Mobile And Quest Checklist

  • Build a dedicated Android or Quest version if cross-platform visibility matters.
  • Use only VRChat/Mobile avatar shaders on Android or Quest variants.
  • Do not rely on cloth, lights, audio sources, rigidbodies, colliders, joints, or avatar cameras for mobile behavior. Those components are disabled on Android.
  • Keep PhysBone, contact, and constraint usage comfortably under mobile limits instead of aiming right at the ceiling.
  • Treat Very Poor as a real visibility risk on mobile, not just a warning label.
  • If the avatar still will not be cross-platform soon, generate an impostor so mobile users can still see a better fallback than the default robot.
  • Confirm mobile upload status after publishing, not just before upload.
  • Keep the Android version visually intentional rather than a broken copy of the PC version.
Help! My avatar rank is Poor or Very Poor.

Start with material slots, texture memory, skinned mesh count, PhysBones, contacts, and unsupported mobile components. These usually move the rank more than tiny hierarchy cleanup.

Help! The rank looks bad but the avatar feels fine to me.

The ranking system is a warning, not a perfect real-world profiler. Still inspect the individual stats, because other users may block or hide the avatar based on rank and platform defaults.

Help! Quest users cannot see my avatar properly.

Build a real Android variant with mobile shaders and mobile-safe components. A PC avatar upload alone is not the same as Quest compatibility.

Help! I do not have time for a mobile version.

Generate an impostor if mobile support is not ready. It gives mobile users a better fallback than seeing a generic replacement avatar.

Help! My avatar has too many outfit toggles.

Hidden outfit pieces can still contribute to project complexity and worst-case stats. Consider separate avatar variants, merged meshes, or fewer always-present systems.

Help! My textures are the main problem.

Lower import sizes first on less important maps, compress carefully, and atlas related materials where it does not destroy quality. Keep high resolution only where players inspect closely.

High-Value Fixes In Rough Order

  1. Reduce skinned mesh count. For most avatars, one main skinned mesh is the cleanest target.
  2. Reduce material count. One material is ideal for mobile-oriented versions, and two can still be workable in some cases.
  3. Lower texture memory. Large textures usually cost more than creators expect.
  4. Remove unsupported or expensive mobile components.
  5. Reduce PhysBone scope, collider overlap, and contact count.
  6. Simplify particles, trails, and extra animators.
  7. Check download size, uncompressed size, and texture memory after the visible fixes.
  8. Re-test the avatar in VRChat and confirm the rank you actually shipped.

Maintenance Checklist

After each new outfit, toggle, or dynamics pass:

  • re-open avatar stats
  • check material slots again
  • check texture memory again
  • check PhysBone and contact counts
  • test the expression menu
  • save a working backup before the next large change
  • document new package or shader dependencies

Final Review Before Publish

  • Confirm the avatar still looks acceptable after optimization.
  • Test both the PC and Android or Quest variants if you support both.
  • Reopen the avatar stats after the last upload and confirm the rank you actually shipped.
  • If mobile support is not ready yet, decide whether to ship with an impostor now instead of leaving mobile users with a worse fallback experience.
  • Confirm the avatar still works after clearing temporary test objects and unused assets.

Helpful follow-up pages

Official References

Related Navigation