Get In Touch
hello@kashu.co
Ph: 1 (800) 716-0630

How to Animate Facial Expressions in After Effects: Part 1

Welcome to the first part of our three-part mini-series on character facial expressions in After Effects. Across this series, we’ll walk you through animating a character through four distinct emotional states, complete with smooth in-between poses and polished effects. 

By the end of Part 1, you’ll have mastered the transition from a cute, wide-eyed expression to a suspicious side-eye. You’ll also have a reusable animation workflow you can apply to any character.

Step 1: Design and Storyboard Before You Animate

Here’s a rule we live by: never open After Effects without a plan. It’s tempting to jump straight into keyframes, but without a design and a storyboard, you’ll end up figuring things out as you go. That’s exactly where projects stall.

Before touching the timeline, we created:

  • Four character pose designs representing distinct emotional states: cute, suspicious, annoyed, and angry.
  • A storyboard mapping the sequence and timing of all four scenes.
  • Three in-between poses bridging each emotional shift (these are the secret to smooth, believable motion).

The in-between poses are where the character anticipates what’s coming next. For example, between “cute” and “suspicious,” the character first looks down with a slightly lowered brow before snapping into the side-eye. That beat of anticipation makes the final pose land with weight and personality.

💡 Pro tip: An in-between pose doesn’t have to be a full illustration. Rough sketches or simple position notes are enough to guide your keyframes. The goal is clarity, not polish.

 

Step 2: Understand the Character Rig

Before animating, let’s break down how the character is built inside After Effects. Understanding the layer structure now will save you hours of confusion later.

The Eye Structure

Each eye is made up of four layers:

  • Pupil: the dark center, which we’ll scale down for the suspicious look.
  • Eye: the white of the eye, the base layer for each side.
  • Upper Eyelid: sits on top and moves down to blink or squint.
  • Lower Eyelid: sits below and moves up to meet the upper lid during a blink.

A critical detail: both eyelid layers share the same fill color as the background. This means when they move, they appear to cover the eye. This creates a natural blink or squint without any visible seams.

The Eyebrow Structure

The eyebrow is a single shape layer with no fill color. Only a stroke. It has four anchor points (start, end, and two in-between). Those extra mid-points are intentional: they give us the flexibility to create exaggerated brow shapes in later poses (like a straight-line annoyed brow or a sharply angled angry one).

Each eye and the eyebrow will eventually be controlled through null objects, which we’ll set up next.

Step 3: Build the Parenting Hierarchy

A clean parenting structure means you can move entire facial regions with a single keyframe. Here’s how we set ours up:

  • Create two null objects: name one “Eyes” and one “Eyebrows.”
  • Left eye group: Parent the left upper eyelid, left lower eyelid, and left pupil to the left eye layer. Then parent the left eye layer to the Eyes null.
  • Right eye group: Parent the right upper eyelid, right lower eyelid, and right pupil to the right eye layer. Then parent the right eye layer to the Eyes null.
  • Eyebrow: Parent the eyebrow shape layer to the Eyebrow null.

Now, moving the “Eyes” null shifts both eyes together, and moving the “Eyebrows” null controls the brow independently. This keeps your keyframes clean. You’re animating two nulls instead of seven individual layers per pose.

💡 Pro tip: Name your nulls clearly. When you’re 20 keyframes deep and need to adjust timing, you’ll thank yourself.

Step 4: Animate the Blink

A blink is the perfect first animation. It’s quick and immediately brings the character to life. Here’s the exact timing we used:

  1. Go to frame 10 on the timeline.
  2. Select both upper eyelid layers and add a position keyframe.
  3. Move to frame 13 (three frames later) and drag the upper eyelids down until the eye is closed.
  4. Select both lower eyelid layers. Add a position keyframe at frame 10, then at frame 13 move them up to meet the upper lids.
  5. Fine-tune so the eyelids meet cleanly in the center of the eye.
  6. Go to frame 20. Add a hold keyframe on all four eyelid layers.
  7. Move three frames forward, then copy and paste the original open-eye keyframes (from frame 10) onto all four layers.

💡 Pro tip: If your eyelids don’t align perfectly in the center, nudge them individually rather than settling for a wonky blink. Small adjustments here make a big difference in how polished the final animation feels.

Step 5: Transition from Cute to Suspicious

This is the core of Part 1: taking the character from a wide-eyed, innocent expression to a shifty, suspicious side-eye. The in-between pose happens at the 2-second mark, and the full transition lands at 4 seconds.

Set Initial Keyframes (1 second, 10 frames)

  • Eyes null: Add a position keyframe. This is the starting point before the eyes move down.
  • Eyebrow null (or eyebrow path): Open the eyebrow shape layer’s path property and add a path keyframe. This captures the current eyebrow shape.
  • Select all initial keyframes and apply Easy Ease (F9) for a smooth start.

Create the In-Between Pose (2-second mark)

  • Eyes null: Move the null down slightly. The character is now looking downward.
  • Eyebrow path: With the Pen Tool (G), select individual points on the eyebrow path and drag them downward. The brow takes on a slightly heavier, more serious shape. 
  • Pupils: Add a scale keyframe at the starting position (100%), then at the 2-second mark scale them down to roughly 60-70%. Smaller pupils immediately read as “suspicious” or “unsettled.”

💡 Pro tip: The pupils should arrive at their new size before the full eyebrow change. This sequencing matters. The eyes telegraph the emotion first, and the brow confirms it. Offset your pupil keyframes slightly ahead of the eyebrow path keyframes for a more natural read.

Land the Final Pose (4-second mark)

  • Eyes null: Shift the null to the left so the character is now looking off to the side.
  • Eyebrow path: Refine the points further. One brow might arch higher while the other lowers, creating asymmetry that sells the suspicious expression.
  • Pupils: Keep them at the reduced scale, or push them even smaller for emphasis.

Now scrub through the timeline. The character should blink, glance down with a lowering brow and shrinking pupils, then snap into a full side-eye. If any movement feels mechanical, adjust the velocity curves in the Graph Editor. A slight ease-out on the final pose can make it feel snappier.

Step 6: Add Background Color Control

A small but powerful detail: we wired the background color to an Expression Controls slider.

  • Create a new solid for the background.
  • Apply Fill if needed, then add a Color Control expression slider effect.
  • Link the color property to the slider using a simple expression. This lets you shift the background color across the timeline without digging through layer properties.

This becomes especially useful in Parts 2 and 3, where background color changes can reinforce shifts in mood (warm for cute, cooler or darker for suspicious and angry).

If you’d prefer to follow along with the full video walkthrough, check out the tutorial on our YouTube channel. You can also grab the free source files (designs and the completed Part 1 animation) by following us on Instagram and sending a DM with “Facial expressions”. This is perfect for reverse-engineering or playing along as you read.

 

Subscribe to our newsletter and never miss free After Effects templates.

    Author avatar
    Kashu Team
    We use cookies to give you the best experience.