Motion graphics are always fun to watch, but creating them can often take hours of work. Luckily there’s this thing called ‘expressions’, which are basically blocks of code. These codes tell your layers how to behave and act. So with some creative codes, we can make stunning animations in seconds!

If you’re new to after effects, we suggest to first watch our introduction and then come back for these expressions.

The expressions below are all covered in the tutorial above and you can simply copy/paste them to your project!

## Bounce Expression

First create an animation (ie. scale 100 to 120% or position from left to right). Next apply bellow’s expression to the property you’ve key-framed to make the animation bounce.

```
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time){
n--;
}
}
if (n == 0){
t = 0;
}else{
t = time - key(n).time;
}
if (n > 0 && t < 1){
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
amp = .06;
freq = 3;
decay = 5.0;
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{
value;
}
```

## Wiggle Expression

Can be applied to any property, but works great on the **position** to create a natural camera movement.

`wiggle(1,50);`

## Squash and Stretch Expression

Apply it to the scale attribute of any object. Works best on icons or bullet points.

```
maxDev = 13; // max deviation in pixels
spd = 30; //speed of oscillation
decay = 1.0; //how fast it slows down
t = time - inPoint;
x = scale[0] + maxDev*Math.sin(spd*t)/Math.exp(decay*t);
y = scale[0]*scale[1]/x;
[x,y]
```

## Motion Tail Expression

First animate the position of an object. Then apply bellow’s expression to the **position**:

```
delay = 5; //number of frames to delay
d = delay*thisComp.frameDuration*(index - 1);
thisComp.layer(1).position.valueAtTime(time - d)
```

And this code to the **opacity**:

```
opacityFactor = .75;
Math.pow(opacityFactor,index - 1)*100
```

Now simply duplicate that entire layer (CTRL + D / CMD +D) a couple of times.

## Timer Up or Down Expression

Create a text layer and apply the expression to the **source text** attribute.

```
//Define time values
var hour = Math.floor((time/60)/60);
var min = Math.floor(time/60);
var sec = Math.floor(time);
var mili = Math.floor(time*60);
// Cleaning up the values
if (mili > 59){ mili = mili - sec*60; }
if (mili < 10){ mili = "0" + mili; } if (sec > 59){ sec = sec - min*60; }
if (sec < 10){ sec = "0" + sec; } if (min >= 59){ min = min - hour*60; }
if (min < 10){ min = "0" + min; }
// no hour cleanup
if (hour < 10){ hour = "0" + hour; }
//Output
hour + ' : ' + min + ' : ' + sec + ' : ' + mili;
```

## VideoBlocks

This video was supported by Videoblocks, an easy to use site full of stock footage, vector images, stock photos, music, sound effects and more.

Jordy – that countdown timer expression is amazing – but I can’t figure out how you made an 8 hour timer when AE has a 3 hour duration limit.

Make (3 + 3 + 2) Time Videos and link them in Premier with Music

Thank you jordy. I really like the after effects and cinecom.net. I wish your all the best and do yours things.

WE LOVE CINECOME.NET

sdsadsf

how can expression study for making

we need an advance course on after effects.

Thank you professor.

Awesome sir

this is good

You and jannik (yannik) had ripped the software

super goooooooooooood bro

Thanks for this great resource! Just curious… I tried copying and pasting the expression for Squash and Stretch, which I was very excited to use. But in After Effects, it produces an error in Line 1 of the code: “expression result must be of dimension 2, not 1”. Also, I see a dialog box with the same message, saying the expression is disabled. I have no idea what this error means or how to fix it… I’m not knowledgeable enough about After Effects. I wonder if this is perhaps because After Effects has been updated since this article was written? Maybe it used to work but no longer does? Or maybe there’s a typo in it? Has anyone else had this issue? And how do I edit the code so that it works? Thanks so much!

I had this same issue. No luck fixing so far.

The correct code is:

maxDev = 13; // max deviation in pixels

spd = 30; //speed of oscillation

decay = 1.0; //how fast it slows down

t = time – inPoint;

x = scale[0] + maxDev*Math.sin(spd*t)/Math.exp(decay*t);

y = scale[0]*scale[1]/x;

[x,y]

Hi Jordy,

I have seen your lots of tutorials

I have been wanting to figure out a countdown for a while. This is such a wonderful blessing. Thank you!

I really like your works I enjoy watching at your tutorials

Hi Jordy,

I want to be like you.

Am a Ghanaian studying graphic design in college.

Jordy Top werk ook eens laten weten dat er fans zijn in België, altijd lachen als je de intro doet.

Ik volg je al even top hoe je alles brengt, en uw team doet ook goed hun best!

BDW rondel noemen ze in de US washer, keep up the good work, and as always stay creative.

I have seen your lots of tutorials. I am after effects artist want to know all expression but don’t know where will I get it. and I do live action short films too.

what should I do for more clear sound without noise?

I have seen your lots of tutorials. You have amazing work. I am after effects artist want to know all expression but don’t know where will I get it. and I do live action short films too.

what should I do for more clear sound without noise?

I came across this webpage. It has a list filled with expressions and people can add more themselves.

Maybe this is usefull for some of you.

http://exdb.filmage.nl

i loved your expressions thanks for sharing us

guud stuff *thumbsupp

Hi jordy,

I m ae student I want learn all expression in Ae.please send me tutorials videos and also guide us with ur new techniques of Ae videos.

Thank you & Regards

Rohit tandel

Thank’s Jordy, that’s amazing

Thanks sir for helping us.

Jordy

Enjoyed your demo but having trouble getting countdown and couple others to work. The countdown expression in your demo is different than the script you listed. Can’t get either to work. The listed on just shows 00 and no countdown.

Oops, was a little typo. Should work now 🙂