Set Up VRChat Avatar Lip Sync
VRChat can drive an avatar's mouth from speech using viseme blend shapes, a jaw bone, a jaw blend shape, or an animator controlled by the built-in Viseme parameter. The correct setup depends on the facial controls already present on the model.
Inspect the face mesh and rig before changing the VRC Avatar Descriptor.
- Find the model's viseme shapes, mouth-opening blend shape, or mapped jaw bone.
- Select the matching LipSync mode and assign its required fields.
- Build and test the avatar with live microphone input in VRChat.
Video creator: DedZedOffishal
The VRC Avatar Descriptor currently exposes five lip-sync choices: Default, Jaw Flap Bone, Viseme Blend Shape, Jaw Flap Blend Shape, and Viseme Parameter Only. VRChat recommends Viseme Blend Shape when the model contains suitable viseme shapes.
Identify the Model's Mouth Controls
Select the face's Skinned Mesh Renderer and inspect its blend shapes in the Unity Inspector. Then inspect the Humanoid rig if the avatar may use a jaw bone.
| What the model contains | Descriptor mode |
|---|---|
| A full set of speech mouth shapes | Viseme Blend Shape |
| One bone that opens the jaw | Jaw Flap Bone |
| One blend shape that opens the mouth | Jaw Flap Blend Shape |
| A custom animator designed to react to speech | Viseme Parameter Only |
| An unknown setup you want the SDK to inspect | Default, then use Auto Detect! |
Do not assign a mode because its name sounds suitable. Confirm that the referenced mesh, blend shape, or bone exists on the avatar.
How the Five Modes Work
Default
With Default selected, use Auto Detect! in the Avatar Descriptor. VRChat then attempts to detect a supported setup and changes the active mode.
After detection:
- Read the selected mode.
- Check every populated field.
- Confirm that the SDK selected the intended face mesh and controls.
- Test the result in VRChat.
Auto detection does not replace verification, particularly when an avatar contains multiple face meshes or similarly named blend shapes.
Viseme Blend Shape
This mode maps detected speech sounds to blend shapes on a Skinned Mesh Renderer.
Use it when:
- the face mesh contains a suitable viseme set
- the shapes produce distinct mouth poses
- the Avatar Descriptor can reference that face mesh
VRChat uses Oculus-style visemes for this mode. The descriptor may detect shape names automatically; otherwise, assign the correct model shape to each visible viseme field.
Jaw Flap Bone
This mode rotates a single jaw bone according to speech volume.
Use it when:
- the model has a jaw bone
- that jaw bone is configured in the Unity Humanoid rig
- rotating it opens the mouth without distorting the rest of the face
The result follows voice amplitude rather than a full sequence of phoneme-specific mouth shapes.
Jaw Flap Blend Shape
This mode drives one mouth-opening blend shape from speech volume.
Use it when:
- the face mesh has one reliable open-mouth shape
- the shape does not move unrelated parts of the avatar
- the descriptor references the correct renderer and blend shape
This can provide basic speech movement on a model without a complete viseme set.
Viseme Parameter Only
This mode exposes speech information for a custom animation controller instead of directly driving a mesh or jaw control.
VRChat's built-in Viseme parameter is:
| Lip-sync behaviour | Parameter value |
|---|---|
| Oculus viseme output | Integer from 0 to 14 |
| Jawbone or jaw-flap volume | Integer from 0 to 100 |
The built-in parameter is read-only and VRChat updates it automatically. Add it to the relevant playable-layer Animator Controller only when the controller is intentionally designed to react to those values.
Viseme Parameter Only requires working knowledge of Unity Animator Controllers and VRChat playable layers. It is not required for normal Viseme Blend Shape or jaw-flap configuration.
Configure Viseme Blend Shapes
- Select the avatar root.
- Find the VRC Avatar Descriptor in the Inspector.
- Open the LipSync section.
- Select Viseme Blend Shape.
- Assign the face
Skinned Mesh Renderer. - Use automatic detection if the model's names are supported.
- Inspect every assigned shape.
- Manually correct any field that points to the wrong shape.
Preview each shape
On the face renderer:
- Expand the BlendShapes list.
- Move one slider at a time.
- Confirm that the expected part of the mouth moves.
- Reset the slider to its original value.
- Check that facial-expression shapes do not remain enabled during the inspection.
This catches swapped assignments and modelling problems before the avatar is built.
Preserve the Silent Shape
VRChat documents a special import concern for the silent or rest shape, commonly labelled SIL. Unity can remove blend shapes that contain no vertex movement.
If the source SIL shape is completely empty, correct it in the modelling application so that it changes at least one vertex by an imperceptibly small amount. Re-export the model and confirm that Unity imports the shape before configuring the descriptor.
Do not substitute an unrelated facial expression simply to fill the silent-shape field.
Configure a Jaw Flap
Jaw Flap Bone
- Select the model FBX in the Project window.
- Open its Rig import settings.
- Confirm that the model uses a valid Humanoid configuration.
- Select Configure and check the jaw mapping.
- Return to the VRC Avatar Descriptor.
- Select Jaw Flap Bone.
- Assign the intended jaw bone.
- Build and test normal, quiet, and loud speech.
Jaw Flap Blend Shape
- Select the face
Skinned Mesh Renderer. - Preview the intended open-mouth shape.
- Reset its value.
- Select Jaw Flap Blend Shape in the descriptor.
- Assign the face renderer and the mouth-opening shape.
- Build and test the response to speech volume.
Check Expression-Layer Conflicts
Lip sync and facial expressions may animate properties on the same face mesh. Inspect the avatar's FX controller when:
- the mouth freezes while a gesture is held
- a facial toggle keeps the lips closed
- a mood expression replaces every viseme
- a reset state continually writes mouth blend shapes
In Unity's Animation window, inspect the property bindings in the relevant clips. A clip that continuously writes the same blend shape as lip sync can change or suppress the visible result.
Fix the animation design rather than duplicating viseme fields or adding another face renderer.
Test in the VRChat Client
Use VRChat SDK → Show Control Panel → Builder to build the avatar. A local Build & Test Your Avatar build is sufficient for initial checks and is visible only to you.
Run this test sequence:
| Test | What to inspect |
|---|---|
| Microphone idle | The mouth returns to the expected rest pose |
| Quiet speech | Movement begins without abrupt facial distortion |
| Normal speech | Mouth shapes remain visible and follow the voice |
| Loud speech | Jaw or blend shapes do not exceed the intended pose |
| Gesture held | Hand gestures do not unexpectedly disable speech movement |
| Facial toggle active | Expression toggles and lip sync combine as designed |
| Mirror view | The movement reads clearly from the front and side |
| Remote view | Another user can see the expected result after an online upload |
Also confirm that the microphone is enabled and receiving input in VRChat. A correct avatar cannot animate from speech when the client has no voice input.
Performance Considerations
VRChat notes that the cost of blend shapes depends partly on how much of a mesh they affect. Keeping facial blend shapes on a dedicated head or face mesh can reduce the amount of skinned geometry affected by each shape compared with placing the same shapes across a full-body mesh.
Check the complete avatar in the SDK Builder. Lip-sync configuration is only one part of the reported performance rank.
Troubleshooting
The mouth does not move when I speak.
Confirm that VRChat receives microphone input, then check the descriptor mode and its assigned renderer, blend shapes, or jaw bone. Rebuild the avatar after correcting the setup.
Auto Detect selects the wrong face mesh.
Select Viseme Blend Shape manually, assign the intended face renderer, and inspect every viseme field. Avatars with multiple renderers can require manual assignments.
The wrong mouth shapes appear during speech.
Preview the blend shapes on the assigned renderer and compare them with the descriptor fields. Correct swapped or unrelated assignments, then reset all preview sliders before building.
The SIL shape is missing from Unity.
Inspect the source model. Unity can remove an empty blend shape on import, so give the silent shape an imperceptibly small vertex change in the modelling application and export the model again.
A facial expression stops lip sync.
Inspect the FX animation clips active during that expression. Remove or redesign bindings that continually write the same mouth properties unless suppressing lip sync is intentional.
The jaw opens too far or in the wrong direction.
Verify the jaw bone mapping or preview the jaw blend shape on the renderer. Correct the rig or source shape rather than compensating with an unrelated descriptor mode.
Lip sync works in Unity previews but not after building.
Confirm that the tested avatar is the newest build, verify the descriptor assignments on the active avatar root, and check microphone input in VRChat. Unity blend-shape preview alone does not test VRChat speech input.
The custom Viseme animator never changes state.
Add the built-in Viseme integer parameter to the intended playable-layer controller, then inspect transition conditions for the documented value range. Do not add it as a writable expression-menu control.
Next Steps
- Use a Mixamo character as a VRChat avatar
- Create an avatar object toggle
- Set up VRChat PhysBones
- Review the avatar optimization checklist
- Return to the Avatar Creation guides
Official References
- VRChat: Creating Your First Avatar
- VRChat: Animator Parameters
- VRChat: Playable Layers
- VRChat: Avatar Performance Ranks
Topics: VRChat avatar lip sync, viseme blend shapes, jaw flap, Avatar Descriptor, Viseme parameter