Applies a choppy, stop-motion-style wiggle with custom controls for speed and intensity.
// Set how many times per second the wiggle should update (also controls choppiness)
frameRate = 2;
// Set how much the property should move each wiggle
movementAmount = 10;
// Freeze expression updates to the custom frame rate
posterizeTime(frameRate);
// Apply the wiggle using same rate and movement values
wiggle(frameRate, movementAmount);
Use this on Position, Rotation, Scale, or any property that supports wiggle.
Works especially well for:
Giving characters or text that jittery stop-frame feel
Making motion look more handmade or analog
Adding playful shake to titles or graphics
This version gives you full control:
frameRate
sets how often the wiggle updates and how many times it wiggles per second.
movementAmount
controls how intense that wiggle is (e.g., how far it shakes).
posterizeTime()
limits the frame updates, so the result looks more like stop-motion than smooth animation.
wiggle()
uses the same frameRate
value, so the randomness matches your update rate.
Just copy the full expression code from the top of this page. Then Alt-click (or Option-click on Mac) the stopwatch on the property you want to animate. Paste the code into the editor and that's it. If you’re not sure which property to use, check the "Where to Apply" section above.
First, make sure your project is using the JavaScript engine (go to File > Project Settings > Expressions). Also double-check for missing characters, and see if the code requires parenting a layer. If so, there will be a comment in the code explaining what needs to be connected.
Take a look at the "How It Works" section on this page. It explains each part of the expression in plain language so you can understand how everything works together.
Yes, absolutely. Most expressions include easy-to-edit variables near the top and comments that guide you on what to change. You can also link sliders or checkboxes using Expression Controls if you want more control in the timeline.
Yes, you can use it on any property with a stopwatch. That includes Position, Scale, Opacity, and also effect settings like Blur or Tint.
In most cases, yes. These expressions are designed to adapt to your comp’s resolution and frame rate. If anything specific needs adjusting, it’ll be noted in the code or in the "How It Works" section.
Explore more expressions in this category
Makes a wiggle loop perfectly every few seconds—great for looping titles, GIFs, boomerangs, or repeatable motion in templates.
Adds wiggle to just one axis (X, Y, or Z), leaving the others untouched. Great for controlled random movement.