The creative and mograph community is an amazing thing to be a part of. It is one of constant learning and knowledge sharing. I have always believed that by sharing your own knowledge and resources we are making ourselves better as a whole, so here are a few of my must have plugins, need-to-know expressions and go to places/people for inspiration and help!

Last updated: November 2019


After Effects is a great programme for motion graphics but it has it's limitations. Luckily, there's extra tools out there created by some very talented people that can really help push your projects to the next level. Here's a little list of scripts and plugins I tend to use quite frequently (or have used in the past and highly recommend!):


They can be quite daunting but you can do some pretty powerful things in After Effects using expressions. Personally I really don't know enough about them or how to write them myself, and certainly can't claim any ownership of the below, but here's some of the most useful one I tend to use.


I use this expression in almost every mograph project I do. It is a version by Harry Frank who I can't thank enough for adapting it to be as easy to use as this. Essentially, Inertial Bounce creates a bouncing motion of any parameter from one keyframe to the next, based on it's velocity. Modify “amp” for how much bounce there is (note: I tend to leave this as is!). The “freq” variable is the frequency, or how frequently the bounce occurs. The “decay” is like friction, a higher value means the bounce comes to a stop quicker.

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


Apply to any parameter to add a constant randomness. It can be controlled by changing the numerals in the brackets. The first one determines the speed (frequency) of the wiggle, and the second will alter the amount (or amplitude). I often pick whip one of these value to a slider control in order to animate the wiggle as and when required!




Loop expressions do exactly what you would expect really. However, there's a lot more to the loop expression than simply looping something infinitely. These expressions can be used to help a lot when working on walk cycles, HUD elements, repeating background designs, and much more! I've listed some examples of the loop types I often use below.

  • loopOut(“cycle”);
  • loopOut(“pingpong”);
  • loopOut(“offset”);

Check out this post by School of Motion to get a much more in-depth breakdown of the different types of loop expressions and how they work.



There's loads of application for this but I tend to use this if I'm creating any quick mockups of web pages and want to add a quick paralax feel to the scrolling. Basically apply this expression to the position parameter of a layer that is parented to something else. It will, as expected, follow it's parent's position but on a delay dictated by the amount specificied.

delay = 0.2;
parent.fromWorld(toWorld([0,0,0],time- delay));



Thank the great Dan Ebberts for this one. Apply as you would a regular Wiggle expression but set the loopTime to the length of the loop you require in seconds. 

freq = 1;
amp = 110;
loopTime = 3;
t = time % loopTime;
wiggle1 = wiggle(freq, amp, 1, 0.5, t);
wiggle2 = wiggle(freq, amp, 1, 0.5, t - loopTime);
linear(t, 0, loopTime, wiggle1, wiggle2)


*Currently curating, please bear with me.