NewLip sync API

Lip sync chart: 15 mouth shapes for animation, with ARKit values

A free lip sync chart of the 15 standard mouth shapes (visemes), rendered on a real 3D character, with example words, the shorter 10-shape animation chart, ARKit blend shape values and what we measured in real speech.

By Yevhenii Kiselov, founder · 6 November 2026 · 8 min read

This lip sync chart shows the 15 mouth shapes most animation tools and game engines use. Each one is rendered on Riya, our 3D character, so you can see the real lips, teeth and jaw rather than a cartoon sketch. You're welcome to use it as a reference.

Lip sync chart showing 15 mouth shapes on a 3D character: rest, M B P, F V, TH, T D, K G, CH J SH ZH, S Z, N L, R, AA, EH, EE IH, OH and OO, each with example words
The 15 mouth shapes, posed with ARKit blend shapes. The values are in the table below.

What is a viseme?

A viseme is the mouth shape you see when someone makes a sound. A phoneme is the sound itself. English has around 40 phonemes but far fewer visemes, because many sounds look the same from the outside: P, B and M sound different, yet the lips simply close for all three.

That's why a mouth chart has fewer shapes than the language has sounds, and why an animator can draw convincing speech from a short list of poses.

The 15-shape viseme chart

This set comes from Meta's Oculus Lipsync, and VRChat avatars use the same 15. The last column gives the Oculus name, which is what you'll see in those tools.

Shape Sounds Example words What the mouth does Oculus name
Rest silence (pauses) Lips together, relaxed sil
M B P m, b, p map, bat, pie Lips fully closed PP
F V f, v fan, van Lower lip tucks under the top teeth FF
TH th think, that Tongue tip shows at the teeth TH
T D t, d top, dog Teeth nearly together, tongue hidden DD
K G k, g cat, go Jaw slightly open, back of the tongue raised kk
CH J SH ZH ch, j, sh, zh chair, joy, she Lips pushed forward, teeth visible CH
S Z s, z see, zoo Teeth together, lips spread SS
N L n, l no, lot Jaw slightly open, tongue behind the top teeth nn
R r red, run Lips slightly rounded RR
AA ah, a, u car, cat, cup Jaw open: the widest shape aa
EH e, ay bed, say Mid open, lips a little wide E
EE IH ee, i see, sit Narrow, lips spread ih
OH oh, aw toe, law Rounded and open oh
OO W oo, w you, book, we Tight round lips ou

The shorter chart for 2D animation

Traditional 2D lip sync uses fewer drawings. The classic chart, usually credited to the animator Preston Blair and still built into tools such as Moho, has about 10 shapes. Here's how it lines up with the 15 above:

Classic mouth Covers In the 15-shape chart
A / I ah, eye AA
E eh, ee EH, EE IH
O oh OH
U oo OO W
W / Q w, qu OO W
L l, th N L, TH
M / B / P m, b, p M B P
F / V f, v F V
"Etc" c, d, g, k, n, r, s, y, z T D, K G, S Z, N L, R, CH
Rest silence Rest

Fewer still can work. Rhubarb Lip Sync uses 6 basic shapes plus 3 optional ones. For a simple cartoon, keep these five or six before anything else: closed (M/B/P), open (AA), wide (EE), round (OO), F/V and rest. At the other end, Azure's speech service reports 22 viseme IDs, which is more detail than most characters can show.

The chart as ARKit blend shape values

For a 3D character with ARKit blend shapes, these are the poses in the image above. We set them by hand on Riya, so treat them as starting points: every rig's shapes have a different strength. Values run from 0 to 1, and a name like mouthStretch means both its Left and Right shapes.

Shape ARKit values
Rest all 0
M B P mouthPress 0.12
F V mouthRollLower 0.85, mouthUpperUp 0.4, jawOpen 0.06
TH tongueOut 0.42, mouthLowerDown 0.2, mouthUpperUp 0.1, jawOpen 0.08
T D mouthLowerDown 0.25, mouthStretch 0.2, mouthUpperUp 0.1, jawOpen 0.1
K G jawOpen 0.2, mouthStretch 0.15, mouthLowerDown 0.1
CH J SH ZH mouthFunnel 0.6, mouthPucker 0.25, mouthUpperUp 0.25, mouthLowerDown 0.25, jawOpen 0.06
S Z mouthStretch 0.35, mouthLowerDown 0.3, mouthUpperUp 0.2, mouthSmile 0.15, jawOpen 0.02
N L jawOpen 0.13, mouthLowerDown 0.15, mouthStretch 0.15
R mouthFunnel 0.35, mouthPucker 0.35, mouthUpperUp 0.1, jawOpen 0.06
AA jawOpen 0.5, mouthLowerDown 0.15, mouthStretch 0.15
EH mouthStretch 0.35, jawOpen 0.25, mouthLowerDown 0.2, mouthSmile 0.15, mouthUpperUp 0.1
EE IH mouthStretch 0.4, mouthSmile 0.35, mouthLowerDown 0.2, mouthUpperUp 0.15, jawOpen 0.08
OH mouthPucker 0.45, mouthFunnel 0.42, jawOpen 0.15
OO W mouthPucker 0.95, mouthFunnel 0.4, jawOpen 0.06

One ARKit detail catches people out: jawOpen also opens the lips. If the jaw is still open during M, B or P, raise mouthClose to about the same value, or the lips won't meet. Test this on your own rig too: on Riya, mouthPress above about 0.3 actually parts the lips and mouthClose barely moves them, so her closures use a jaw near 0 with a little mouthRoll. To play a whole sentence rather than single poses, see lip sync in three.js.

What real speech looks like: our measurements

A chart shows each shape at its clearest. Real speech rarely gets there. We ran our custom lip sync model over 340 test sentences it hadn't seen, about 8,500 sounds in a natural-paced AI voice, and averaged the result at the middle of each sound. The model is tuned to Riya's face, so read these as a guide rather than universal constants.

Shape Median length Average jawOpen Strongest average curve
AA 87 ms 0.19 mouthStretch 0.26
EH 100 ms 0.17 mouthStretch 0.25
OH 100 ms 0.09 mouthPucker 0.28
EE IH 67 ms 0.07 mouthShrugUpper 0.21
OO W 41 ms 0.02 mouthPucker 0.60
F V 43 ms 0.03 mouthRollLower 0.78
CH J SH ZH 53 ms 0.02 mouthFunnel 0.59
M B P 50 ms 0.01 mouthRollLower 0.23
S Z 50 ms 0.01 mouthShrugUpper 0.28
T D 33 ms 0.05 mouthShrugUpper 0.25
TH 28 ms 0.04 mouthShrugUpper 0.24

Three things stand out:

  • Sounds are very short. One frame at 30 fps lasts 33 ms, so most consonants here get only one or two frames, and vowels two or three. There's no time to hold a pose.
  • The jaw opens far less than charts suggest. The average jawOpen on an "ah" was 0.19, and 0.35 on the longest ones. A character whose jaw swings to 0.5 on every vowel looks like it's chewing.
  • Only a few shapes have a strong signature. F/V, OO and CH stand out clearly. T, D, S, N and similar sounds look much alike, and their shape mostly comes from the vowels around them. Animators call this coarticulation: the "s" in "see" and in "soon" look different because the lips are already moving towards the next vowel.

Five lip sync mistakes to avoid

  1. Flapping on every syllable. Open and close the mouth less often than you think, and let neighbouring shapes blend.
  2. Lips that don't meet on M, B and P. Viewers notice this first. Even a one-frame closure reads as correct.
  3. A weak F and V. The lower lip touching the top teeth is one of the few consonants people can actually lip-read.
  4. Late mouth shapes. Lips move before the sound. Start shapes a frame or two early; in our system, lips start rounding about 100 ms before a rounded sound.
  5. Copying the chart at full strength. Use the chart for the shape's direction, then scale it to how long the sound lasts.

How many mouth shapes do you need?

It depends on the style:

  • 5 to 6: simple cartoons, motion graphics and small on-screen characters.
  • About 10: traditional 2D animation.
  • 15: games, VRChat avatars and most viseme-based 3D characters.
  • Blend shape curves: realistic 3D faces. Instead of switching between fixed poses, 29 ARKit curves change every frame, so the shapes flow into each other.

If you're keyframing by hand, this chart is all you need. If your character has to say things nobody has animated, such as an AI assistant's live answers, you need the curves generated automatically. Our lip sync API produces them from text or audio, and you can compare the kinds of AI lip sync first.

Lip sync API

ARKit mouth curves fitted to your own model, from text and audio. Free trial with 30 minutes of speech.