Skip to main content

Basic Upload

Below is a (DATED) alternative guide utilizing Pumkin’s Avatar Tools[].

  1. Install the VRCSDK and Pumkin’s Avatar Tools by importing the package into your Unity project (drag it from Windows Explorer into the Project window at the bottom). New options will appear on the top row of Unity: VRCSDK>Show Control panel & Tools>Pumkin’s Avatar Tools.

  2. Import your avatar’s FBX file and all of its textures.

  3. Right click in the Project window. Select Create>Material. In the Inspector window, change the shader to either VRChat>Mobile>Toon Lit or VRChat>Mobile>Standard Lite. Duplicate (Ctrl+D) this material enough times until you have a material for every texture.

  4. Click on an empty material, and drag a texture to it in the Inspector window. Do this for all your textures.

  5. Click on the FBX file in the Project window. In the Inspector, click rig, and under the dropdown select humanoid (if the avatar is a humanoid) and click apply.

  6. Under the Materials tab of your FBX, click and drag the materials into their material slots, then click apply.

  7. Drag the FBX into the Scene window. Reset the transform by clicking (the gear icon) and clicking Reset Transform. [This will center the avatar and set its scale to 1].

  8. At the top bar, go to Pumkin>Tools>Avatar Tools. Click “Select from Scene” and then “Quick Setup Avatar”. Also click “Fill Visiemes” and “Fill Eye Bones”.

  9. At the top bar, open VRCSDK>Show Control Panel. Login, go to the builder tab, auto-fix all the red errors and click “Build and Publish for Windows”.

  10. Wait a bit and it will bring up a window like this:(If the image isn’t correct you can go to the Scene tab, drag around the VRCCam and return to the Game tab).
    Fill in what you need and you’re done!

You can change your avatar's size/scale through Pumkin's tools!
If you scale without the tools don't forget to re-position the viewpoint!

Setting a solid color background is easy! Under the camera component, change Clear Flags to “Solid Color” and click the color box to pick a custom color!
You can also more easily make interesting custom avatar PFPs through Pumkin’s Avatar Tools!

Upload an image as an avatar’s profile pic by importing an image, and in the Inspector change Texture Type from "Default" to "Sprite" and the camera from "Perspective" to "Orthographic".

(Uploading an avatar can be quite confusing for a beginner. I hope to make a concise video tutorial in the future after gathering feedback. I will also explain errors some users may encounter and how to overcome them.
It will likely be aimed toward complete beginners, teaching only what you need to know for first uploading pre-made avatars in Unity, and then frankensteining them in Blender. It will follow best practices and by the end your avatar should have an excellent performance rating [light-green star].)

(There is also a beginner’s guide to uploading your first avatar[] in the VRChat Documentation. I find it insufficient, and it is also now partially outdated because it pertains to the superseded Avatars 2.0.)


If your avatar has unshaded purple-pink sections:

  1. Find the material (the file with the sphere thumbnail)

  2. Change the shader (the dropdown near the top) to a different one( like Poiyomi, VRChat>Mobile>Standard Lite or VRChat>Mobile>Toon Lit

It is caused by Unity looking for a custom shader that isn’t there.
You could change it to your own custom shader or Unity’s standard, but VRChat’s shaders are simple, optimized, and look identical even when people have shaders blocked in their safety settings, so it’s best to use them first.

Later you can decide whether a more fully fully featured shader (Silent’s, Xiexie’s or Poiyomi) is worth using instead; of course, these shaders are more complex and require learning and toying with their features to maximize their potential.
BTW Silent’s Cel Shader is a rewrite of Cubed’s Cel Shader (which is depreciated).

You will probably want to unmap your jaw in your avatar’s rig. Click on the FBX, go to the rig tab, configure, head, select the bone assigned to the jaw and press delete, then click apply.

Ensure that the ARMATURE of your model (not your model) is set to an XYZ scale of 1,1,1.

Converting and uploading to Quest

You can do it VRChat's way[], which requires maintaining two separate projects, or you can use my one project method.

  1. Duplicate your avatar

  2. Press F2 and append "Quest" to the name in the hierarchy

  3. Import EasyQuestSwitch[]

  4. In it set all the materials and set them to switch to VRChat/Toonlit shader for Quest

  5. Under the Upload tab of the VRCSDK window, "Switch Build Target to Android" (this will take a while)

  6. Use Pumkin's Avatar Tools to remove incompatible components from the avatar (like Dynamic Bones and constraints)

  7. Open the VRCSDK window, fix any other errors and upload!

  8. Switch back to Windows build in the VRCSDK window when done

Video guide of how to make Quest optimized avatar

Alternatively you can use the "Bake" settings in the Blender CATS plugin to get a quicker but inferior Quest Optimized avatar. Quest optimized avatars can be used as fallback avatars for non-Quest compatible avatars.