CoursesTeachers
Sign inStart today
Articles

Why your After Effects wiggle looks wrong

What the two numbers in wiggle(frequency, amplitude) mean, why a low frequency looks natural, and fixes for nulls, seeds, loops and single axis wiggles.

Andre EllisEditor21 Oct 2026·8 min read
Blue cover with wavy white lines and scattered dots, titled Why Your Wiggle Looks Wrong, tagged After Effects, Expressions and Perlin Noise

Your wiggle most likely looks wrong because the frequency is too high. The first number in wiggle(frequency, amplitude) is wiggles per second, and most real movement changes direction slowly. Drop the first number below 1, keep the second one small, and the same expression goes from earthquake to handheld camera.

You found wiggle in a tutorial, typed it in, and it looked chaotic: too jumpy, too digital, like a mistake. You turned it down and it still felt wrong. You're not doing it wrong. You just need to know what the numbers mean, and why wiggle can feel organic at all. That second part carries over to the other noise-based tools in After Effects.

How to add a wiggle expression

  1. Select the layer and press P to show its Position.
  2. Alt-click (Option-click on a Mac) the stopwatch next to Position. An expression field opens in the timeline.
  3. Type wiggle(2, 30) and click outside the field.
  4. Preview. The layer drifts around its position with no keyframes.

Wiggle works on any property with a stopwatch: Position, Rotation, Scale, Opacity, even an effect's slider.

What the two numbers mean

// wiggle(frequency, amplitude)
wiggle(2, 30)

// frequency = wiggles per second
// amplitude = distance in pixels
  • Frequency is wiggles per second. wiggle(2, 30) changes direction about two times a second.
  • Amplitude is how far the value drifts from where it started, in the property's own units: pixels for Position, degrees for Rotation, percent for Scale and Opacity. Adobe describes it as roughly the average size of the wiggle, so treat it as a typical distance, not a hard limit. Some swings go further.
  • Wiggle adds to the value that is already there. If Position has keyframes, the layer follows its path and drifts as it goes.

Wiggle takes three more optional arguments: octaves, an amplitude multiplier and a time. They come up below.

Why your wiggle looks wrong

The frequency is too high

Many beginners crank both numbers up so they can see it working. The result looks like an earthquake, and it reads as a bug, not a design choice.

Things with weight change direction slowly: a handheld camera, a balloon on a string, a leaf on water. The eye reads slow drift as mass. Rapid changes read as buzz: a phone vibrating, a fault in the wiring, a nervous character. So the fix is counterintuitive: lower the frequency dramatically. The lower the frequency, the more natural and deliberate the motion reads.

Starting points:

  • Handheld camera: wiggle(0.8, 15)
  • A subtle floating element: wiggle(0.3, 8)
  • A buzz or vibration, when you want one: a high frequency with a tiny amplitude, such as wiggle(15, 3)

Frequency also runs into your frame rate. At 24 frames per second, wiggle(10, 80) leaves two or three frames for each wiggle, and the eye reads that as jitter, not movement.

Try this now

Open any comp, add wiggle to a layer's Position, and set it to wiggle(1, 20). Then change only the first number to 0.3. Watch what happens to the feel of the motion. That is the difference between restless and intentional.

Then duplicate the layer. Set one copy to wiggle(10, 80) and the other to wiggle(0.8, 15), and preview them side by side. Same layer, completely different feel.

The amplitude does not match the size of the thing

Amplitude is in pixels, not a share of the frame. Eighty pixels is a small drift for a full frame background and a wild swing for a small icon. Judge the amplitude against the element and the frame it sits in.

Scale wiggles each dimension separately

On Scale, wiggle moves width and height independently, so the layer squashes and stretches. To keep it in proportion, use the first value for both:

v = wiggle(1, 10);
[v[0], v[0]]

Every layer wiggles on its own

Each layer's wiggle follows its own path, because After Effects ties the result to the layer and the property. Put the same expression on ten layers and they drift apart like ten separate objects. If they should move as one, use a null.

The pro move: parent to a null

Instead of putting wiggle on each layer, put it on a null object, then parent your layers to the null. You get one place to control the motion across the whole comp, and one switch to turn it off when you need a still frame for a client.

// On the NULL's position property:
wiggle(0.8, 15)

// Parent all your layers → null
// One expression controls everything
// One toggle turns it all off
  1. Choose Layer, New, Null Object.
  2. Add the wiggle to the null's Position.
  3. Set each layer's Parent to the null, with the pick whip or the Parent menu.
  4. To switch the wiggle off, click the expression's enable switch (the equals sign next to the property).

Go one step further and give the null two Slider Controls (Effect, Expression Controls, Slider Control). Rename them Frequency and Amplitude, then use:

freq = effect("Frequency")("Slider");
amp = effect("Amplitude")("Slider");
wiggle(freq, amp)

Now you can keyframe the amplitude: ease it up from 0 for a shake that builds, and back to 0 for a camera that settles. At 0 the wiggle stops.

Wiggle other properties

Rotation

wiggle(0.5, 4) on Rotation gives a gentle sway of a few degrees. Move the anchor point to where the object would pivot first: a sign hanging from a hook wants its anchor point at the hook.

Opacity

A flicker comes from a higher frequency on Opacity. Set the layer's Opacity to around 70 so the wiggle has room both ways, then keep the result inside the valid range with clamp:

clamp(wiggle(8, 30), 0, 100)

One dimension only

To wiggle Position horizontally and leave the vertical alone, take the first value from the wiggle and keep the second from the property:

w = wiggle(1, 20);
[w[0], value[1]]

For vertical only, swap them: [value[0], w[1]]. On a 3D layer, Position has three values, so keep the third as well: [w[0], value[1], value[2]]. You can also right-click Position, choose Separate Dimensions, and put a plain wiggle on X Position alone.

Choose your wiggle with seedRandom

Wiggle is not truly random. The same layer and property give the same wiggle on every preview and every render, because After Effects seeds it from the layer, the property and an offset. That is also why a copy on another layer moves differently. seedRandom sets the offset, so you pick which version you get:

seedRandom(42, true);
wiggle(1, 20)

// Seed 42 picks one version of this wiggle.
// Change the number to try another.

This helps when a swing lands on the wrong frame, or when the layer drifts off screen at the moment the logo appears. Try other numbers until the path works, and note the seed you liked so you can get back to it.

Two layers, same world: for elements that wiggle independently but feel like they belong together, give them the same frequency and amplitude. Each layer already has its own path, and the seed lets you choose which one. Matching settings make them move like they share one physical space.

Make a wiggle loop

A wiggle never repeats, so a looping piece (a GIF, a background loop) jumps where the end meets the start. The fix blends two wiggles sampled one loop apart, so the last frame lands where the first began:

freq = 1;
amp = 20;
loopTime = 4; // loop length in seconds
t = time % loopTime;
w1 = wiggle(freq, amp, 1, 0.5, t);
w2 = wiggle(freq, amp, 1, 0.5, t - loopTime);
linear(t, 0, loopTime, w1, w2)

Set loopTime to the length of your loop. The fifth argument is the time wiggle samples. At the start of each loop the result is w1 at time 0; by the end it has blended fully into w2, which is the same wiggle sampled at time 0 again. Adobe's expression reference points to Dan Ebberts' explanation of this method on his site.

Add detail with octaves

The third argument, octaves, layers finer wiggles on top of the main one. In Adobe's own example, wiggle(5, 20, 3, 0.5) adds two more levels of detail at 10 and 20 wiggles per second, with sizes of 10 and 5 pixels. The fourth argument sets how much smaller each level gets. For a camera, two or three octaves add a small tremor on top of the slow drift:

wiggle(0.8, 15, 3, 0.4)

Under the hood: why wiggle feels organic

Wiggle does not pick a fresh random number every frame. It reads smooth noise: values that flow from one to the next, so nearby moments get nearby values. That is the kind of noise Ken Perlin developed after working on Tron (1982). It earned him an Academy Award for Technical Achievement in 1997.

True randomness looks terrible in motion. A value that jumps to a new random number every frame flickers, and a camera shaking that way looks broken. Smooth noise is why wiggle can feel like a real camera even though it is generated.

You can see the shape of it. Select the property, open the Graph Editor and turn on Show Post-Expression Graph. A low frequency draws long, rolling curves; a high frequency draws a dense scribble. That picture is the feel you see in the preview.

Effects such as Fractal Noise and Turbulent Displace are built on the same idea: smooth noise, layered at several sizes. Their Complexity setting plays the role of wiggle's octaves, with more layers adding finer detail. Understand how wiggle behaves and you can predict them too.

Wiggle beside generated motion

Ask a chat assistant for a wiggle expression and it will write one. Ask a video generator for a handheld camera and you get a clip that drifts. Whether the drift suits the shot is still your call.

Generated motion usually arrives baked into the clip. If the shake is too busy, you describe it again and hope the next try is calmer. An expression is two numbers you understand, and you change one of them on purpose. What you just read is also how you judge a generated clip: a camera that changes direction four times a second reads as buzz, whoever made it.

For us, the feel is the work. Tools that produce motion are one more way to reach it, and they change, as After Effects has. If you know why a low frequency reads as weight, you get more out of each new one, and you can see when a plain wiggle on a null is the better answer.

One exercise for this week: find a generated clip with a handheld look, or shoot a few seconds on your phone. Put a wiggle on a null over a still image and adjust the frequency until the two feel the same. Write down the numbers you landed on.

Starting values to copy

  • Handheld camera: wiggle(0.8, 15) on a null, with the layers or the camera parented to it
  • Floating element: wiggle(0.3, 8)
  • Gentle sway: wiggle(0.5, 4) on Rotation
  • Flicker: clamp(wiggle(8, 30), 0, 100) on Opacity
  • Buzz: wiggle(15, 3) for a short burst

Next step

Wiggle sits on top of the basics: keyframes, transform properties and parenting. The After Effects Fundamentals lesson in Motion Design Crash Course covers all three.

Keep going

Motion Design Crash Course

See the course

More articles

  • A beginner's guide to motion graphics
  • A realistic roadmap for learning motion design
CoursesTeachersArticlesSign in[email protected]

© 2026 Jumpstart, a Kilter Creative company. All rights reserved.TermsRefundsPrivacy