Keyframe Presets
  • Hey Adam, great script! I'm using it for character animation, and it makes my job a lot easier. It would be even better with the import/export feature!

    and is it possible to make the script work with shape paths keyframes?
  • Support for shape path keyframes has been added to Version 1.1. Also added, is the ability to copy/paste presets between layers. See the Description for more details.
  • Version 1.3 has been released. This adds import/export functionality.
  • Holy crab, what a brilliant script! Huge time saver and greatly appreciated! There are however some limitations I stumbled upon:
    - When I export a set of presets and the resulting file is bigger than approx. 1750 kB, the script is unable to import it again. (A workaround is to export two smaller sets of presets and then import both into the script.)
    - When I open AE and import a set of presets, the "Paste/Delete/Delete All Presets"-buttons are not functional until I select some keyframes and click "Copy Preset". This only applies to the first set of presets I import after opening AE, and the script works flawlessly after that first glitch.

    I use CS 5.5, and use the script with Shape Paths.

    Thanks again!
  • Hi Lasse,

    Glad you like the script. Thanks for letting me know about the limitations. I'll take a look at them over the course of the next week and see if I can get them fixed.

  • Hi Lasse,

    I've got some time now to dig into these bugs. I am not able to replicate your problem with the Paste/Delete buttons not being functional. I have opened up After Effects, imported presets, and then clicked on Paste. Everything seems to be working fine. Are you doing things in any different order?
  • Also, I am able to import preset files greater than 2 MB. Is the script giving you an error when importing, or is After Effects just hanging. Is there any way to you could attach your preset file, so I could try and troubleshoot it?
  • I tested the new version, and the error with the first import after startup is now gone!

    However, I seem to encounter some trouble with combining two presets, ie. importing two presets and exporting it as one. When I try to import I get the message: "Sorry, format of preset file is incorrect. Missing the following properties: Preset.PresetDetails.PresetProperty.Keyframe.KeyframeInterpolation.keySpatial"

    This happens with both Shape Layer keyframes, and I tried it with Position and Rotation keyframes as well.

    (I am not ruling out that there might be a conflict with another script or something else. My CS 5.5 is a pretty old installation, and perhaps this might have an impact.)

    Combining presets wasn't a problem in 1.5, unless the file size of the exported preset exceeded ≈1.7 MB. I've now tried to export and import preset files exceeding 2 MB, and imported them without any issues! But combining presets doesn't work anymore, which was a somewhat practical thing to be able to do.

    Also, in 1.5 I could use the weird nordic letters Æ Ø and Å in the preset-names, but now the letters gets replaced with Æ Ø and Ã…respectively upon import. But this is odd; If the first preset name has normal letters and the next preset name has nordic letters, the nordic letters change upon import. But if the first preset has nordic letters in it, everything works ok. Not that this is a major issue at all, but it's just weird and perhaps worth mentioning.

    EDIT: I converted the preset file from "UTF-8 without BOM" to "UTF-8" in Notepad++ and the nordic letters are working upon import.

    Anyhow, I don't think I can fully emphasize on how much of a help this script has been. I've recommended it a lot :)
  • Hi Lasse,

    I'm glad you're finding the script so useful, and thanks for recommending it.

    I should have some time later today to check out the importing bug you found, thanks for letting me know about it. When you only import one preset file, does everything work correctly? Is it only an issue after you have already imported one, and try to import a second preset file?

    The exported preset file that gets made by the script is encoded as UTF-8 to make sure all languages will work. I'll looking into why it's getting set as UTF-8 without BOM. But thanks for letting me know the solution to that encoding problem.

  • Hi Lasse,

    I have just released a new version of the script (v1.9). This fixes the import/export/re-importing error as well as the error with importing UTF-8 characters. Thanks for the bug reports.

  • hi Adam,
    thanks for such a helpful scripts,
     i just cant get it to work in my cs4 or cs6. i am only able to copy, save, export and import. but nothing happens when i paste.
    i will be really grateful if you could maybe tell me   what i must be doing wrong because i followed your simple instructions closely.

  • Hi Kojo,

    I'm sorry you're having problems with the script. I'll take a look into it as soon as I can. What version of Windows or Mac are you running?

  • i am running on windows 8 pro

    thanks for your reply.
  • hi Adam
    i tested the script on my Adobe CC and it worked perfectly, but still having issues with my cs4 and cs6
    just to let you know.
  • Ok, thanks for letting me know. I'll test more thoroughly with CS6 and figure out a fix to the issue.
  • Hi Adam,

    Thanks for creating the script, I'm hoping it'll be a real time saver! 

    I have managed to install without any problems, I'm able to copy and create a preset, the only issue I'm having is the paste function, when I press nothing seems to happen. All other buttons such as delete and import etc all work fine.

    I'm working on an iMac - OSX Yosmite & AE CC2014

    Hope you can help - Cheers!
  • Hi Stephen,

    I'm sorry you're having an issue with the script. Is there any chance you can send me a private message and attach the After Effects file so I can take a look?

  • There is a bug fix released for Keyframe Presets (version 1.12). Please update if you have not already done so. This will fix any problems where pasting presets would not work.
  • Where presets are stored on the computer?
    The idea - it would be good to ignore the layer names to transfer the keys from one layer to another. if necessary.
  • Hi Mike,

    That's a good idea as an option in the interface. I'll look into to adding that to the script.

  • very nice job!
  • Thanks Siha2, I'm glad it's helping.
  • Can you give me email? or some way to message you, I want send you tips for this script.
  • Siha2, please click on my user name and you should be able to send me a message.
  • There has been another update to Keyframe Presets (v1.15)

    This version will let you ignore layer names when pasting presets so you are able to paste to different layers.

  • I need one function that copy and paste the object in the position keyframes without move the object, but only add the moviment to their position. It's possible?
  • Hi Leonardo,

    Sorry, I'm not sure I understand what you are looking for. Do you want to copy and paste keyframes on the same layer? Are you trying to combine the value of the copied keyframe with the current value and offset the position?

  • Hi Adam,

    I've just tried to import presets into the latest version of After Effects 2015.1 release ( using the latest Keyframe Presets and I'm getting this error:

    Sorry, format of preset file is incorrect.
    Missing the following properties:

    The preset works correctly on older versions of After Effects.

    If you could advise me on whats wrong, that would be great.

  • Hi Adrian,

    Sorry you're having trouble with the script. I haven't come across that error before, but I'll do some more testing with the latest After Effects update and try to figure out what the problem is.

    What type of properties were you animating?

    Is there any chance you could attach the preset file/After Effects file so I could test?

  • Hi Adam,

    Thanks for the quick response. The properties being animated were rotation and position on a character rig.


  • Hi Adrian,

    Thanks for the file. One other question, which version of Keyframe Presets made the preset file?
  • There has been an update for this script. This should help importing preset files that were made with previous versions of the script.

    Adrian, if you're still having trouble with your file, please send me a private message on here, and I'll help you get it working.
  • Hi

    I have CS6, KP v1-16. I can't paste presets ..... I have few layers where is keyfames on position property. Copy presets work well but paste not. I get message "This preset expects the following selected layers:". 
    I must have checked Ignore layer names and select right layers.
    Old version was great, there I just select all layers with ctrl+A and paste presets, and they was added to right layers. New versions are bad :(
    This selecting right layers is frustrating because I need put keys to different group of layers, and every time searching right layers arrrrgh.
    It will be great if i select all layers and paste or not select just paste and script know which preset is for which layers.
  • Hi Siha2,

    I'm sorry you're having trouble with the script. Which version of the script do you have that is working how you want?

    Version 1-16 should work like this:
    1) Select the keyframes you want to copy and make a preset

    2a) If you want to paste to the same layers:
    1. Do not check Ignore Layer names
    2. You can have no layers selected, 
    3. Or all layers selected

    2b) If you want to paste to different layers
    1. Check Ignore Layer Names
    2. Select the layers that you want to paste the keyframes to

    Which part is not working for you?

  • Hey Adam,

    For me it only works if I select the layers and check ignore layer names.

    If I try to just paste on the same layers, it does not work for me. I have unchecked ingore layer names and I have tried selecting all layers or none.

    If this works, I would be on happy fellow :)

    running on cc 2015.3

    just checked, it's the same in cc14
    running on win10

    //comment - it works perfectly fine with only 1 layer, the paste problem just appears with multiple layers.
    //further comment - it works perfectly fine with multiple layers if each layer has only 1 variable animated (only size, only pos, only rot - and so on) if more values are animated like rotation AND pos it doesn't paste
    //furhter comment ones again. With only one layer, multiple values work fine
  • Hi Daniel,

    I'm sorry you're having problems with the script. Thanks for the detailed comments, that should help getting the bug sorted out.

    I'll get this sorted out as soon as I can.

  • Hi Daniel,

    Everything seems to be working on my end when I try this. I've tried with multiple properties, multiple layers, and having the layer names unchecked.

    Would it be possible for to attach a simple project that you have that isn't working with the script?

  • Actual test results : 
    1 Layer_presets

    (1) 1 L - P
    (1) 1 L - S
    (1) 1 L - R
    (2) 1 L - PS
    (2) 1 L - PR
    (2) 1 L - SR
    (3) 1 L - PSR (X)
    2 Layer_presets

    (2) 2 L - P / P
    (2) 2 L - P / S
    (2) 2 L - P / R
    (3) 2 L - PR / P (X)
    (3) 2 L - PS / P (X)
    (3) 2 L - RS / P (X)
    (4) 2 L - PS / PS
    (4) 2 L - PR / PR
    (4) 2 L - SR / SR
    (4) 2 L - PSR / P
    (5) 2 L - PSR / PS (X)
    (6) 2 L - PSR / PSR (X)
    3 Layer_presets 

    (3) 3 L - P / P / P
    (3) 3 L - S / S / S
    (3) 3 L - R / R / R
    (3) 3 L - P / P / S
    (3) 3 L - P / S / R
    (4) 3 L - PS / P / P (X)
    (4) 3 L - PS / S / R (X)
    (5) 3 L - PS / PS / P (X)
    (5) 3 L - PS / SR / R (X)
    (6) 3 L - PR / PR / PR
    (6) 3 L - PS / PR / SR
    (7) 3 L - PSR / PS / PS (X)
    (8) 3 L - PSR / PSR / PR (X)
    (7) 3 L - PSR / PSR / P (X)
    (9) 3 L - PSR / PSR / PSR (X)

    It seems like there might be some looping issue in the script, if you take a look at the results, it seems like the number of transformations (PSR) used in the presets is relevant depending on the amount of Layers that we copied from. 
    a) If we have used 1 Layer, you can copy only 1 or 2 transformations (doesnt matter which ones), otherwise the script doesn't work
    bIf we have used 2 Layers, you can copy only 2 or 4 transformations (doesnt matter which ones), otherwise the script doesn't work
    c) If we have used 3 Layers, you can copy only 3 or 6 transformations (doesnt matter which ones), otherwise the script doesn't work
    As you can see, there is a pattern to it, it would be really amazing if you could take a bit of your time to look at it and fix the issue, this script seems to be a huge time saver and I would really love to use it in some of our work.

    Thanks a lot again!

    I am really looking forward to your feedback and possible fix,

    Best regards,

  • Hello Adam, 

    thank you for your fast response.
    You can download a simple project that I prepared for you here.

    I placed a simple AE (CC 2015) project in the Zip, followed with 3 different preset files which were made by your script for testing purposes(you can load them and test them by yourself).

    I did test the whole thing by following rules:

    a) It was important that I didn't check the "Ignore Layer Names".
    b) I have made a comp with 3 simple solids, all of them named differently (White Solid 1,White Solid 2,White Solid 3) and placed some basic animation in there for all transformations (PSR)
    c) I tested the behavior of copying and pasting keyframes under different circumstances (results are below)
    1) Copy keyframes from only one layer and only one transformation (i.E. position)
    2) Copy keyframes from only one layer and two transformations (i.E. position + rotation) etc etc.
    3) I tried to combine different scenarios in order to test it properly
    4) I did those test also with a combination of 2 Layers and 3 Layers in order to be sure what is causing the trouble
    d) I also managed to look through the saved preset files which were generated by your script, it seems like the saving process is working correctly. All keyframes data for each of the transformations (PSR) is being saved correctly, there must be some bug in the script and handling itself.


    Explanation to the results shown below - 
    a) The number in the parentheses at the beginning means how many transformations (P = Position / S = Scale / R = Rotation) were used in the preset - i.E. if number 5 - that means we had a combination of 5 transformations (i.E P+S+A+R+S)
    b) "1 L", "2 L", "3 L" means how many layers were involved in the preset
    c) i.E. "(4) 2 L - SR / SR" means -> 4 transformations copied from 2 layers -> 1 layer had S-scale and R-rotation saved / 2nd layer had S-scale and R-rotation saved and the preset did work
    d) if there is a "(X)" on the end, that means the preset was not working and did throw an error like 
    "This preset expects the following selected layers:
    White Solid 2
    White Solid 1
    White Solid 3"
  • Hi Daniel,

    Thanks for all the detailed notes. I'll take a look at it this week, and hopefully have it fixed up soon.

  • Hi Daniel,

    I believe I have fixed the bug. Please download the latest version and try again. You should not need to re-export the presets, just use the existing ones you had.

  • Hello Adam,

    I did a brief test and it does seem like it's working correctly! Thanks a lot for that, it's a lifesaver :)

    I will definitely do thorough testing and if something pops up, I will get back to you :)

    PS: There was some behavior that I couldn't reproduce (happened in the older version). It is probably going to be difficult to find out what it caused, but sometimes the preset export didn't work correctly and I had to restart the program to make it work again. It did export a file, but the file was empty. So let's say that I overwrite a file with my presets saved before and it will be overwritten by another empty file, I would lose all of my presets, so there is at least that to keep in mind.

    If you have an idea what it causes you could look at it, but it's mostly just a thing that I wanted to point out, I can get around it easily (never overwrite a file, just create a new one) 

    So again thanks a lot for your fast feedback, that was really, really helpful! :)

    So I wish you a nice day and continue doing the great work Adam!

    Best regards,

  • Hi Daniel,

    Glad to hear it fixed the problem you were having.

    Thanks for letting me know about the export preset issue, I haven't come across that before. I'll take a look into it, but if you do come across it again consistently, please don't hesitate and let me know.

  • Would there be a way to access this script though another script? 

    I would like to save a few presets, then have a script go through and paste each preset at matching maker names.
  • Edit: I got it to work! I was confused. After selecting "All Layers" instead of "Selected Layers" it's doing just what I want.

    Hi Adam!

    I'm having some trouble - when I click Paste Preset it seems to ignore the "Ignore Layer Names" checkbox. Error window says it's expecting a particular layer name. Any help? Works fine if I paste to the correctly named (source) layer.



  • Hi Mike,

    Glad you got it working on your end, and it's able to do what you want!

  • Hi Adam,

    Great product! It's an integral part of my workflow. I have one question or perhaps a feature request. Is there a way to save a keyframe preset with relative values (position, specifically) vs. absolute? I would love to be able to apply "boiler plate" animation to objects without having to reposition them.


  • Hi Mike,

    That's an interesting idea. Are you referring to the keyframe values being a relative difference to the anchor point of the layer? So that the size of the specific layers wouldn't matter? Or a relative position based on the resolution of the composition?

  • +1 i think to below. I think this example is the same.

    An option to inherit (relative sounds similar to below) initial parameters and paste based on this before the timeline slider might be useful if possible.

    For example if you have a shape you have scaled and positioned that now at say 70% scale. Your pre-set maybe be called "Scale out" - So scale out 100% to 0% when you stored it.. If when pasting the stored key frames at the time marker it could intuitively know that the 100% should be adjusted to 70% so taking the last value before the time slider that could be handy. This would mean that your pre-sets could have more use and not be too restricted.


    Same would be good to apply to other values but in different ways. For example Rotation. Say the item was already rotated 180 degrees. But your rotation is 0-180, it would be good again like the above adjust the keyframes based on the initial value so 180-360. Obviously direction dependant but i'd usually write that in the name for the pre-set. "Rotate 180 Clockwise" etc.

    The reverse one before, i made a shortcut on a toolbar, but again if there was a little extra button when pasting like the below that could be useful and time saving if you store many pre-sets.

  • Hi Chris,

    Thanks for the detailed suggestions. So would your idea be for an option that would let you paste keyframes in "Relative Mode"?

    So that every keyframe is just an offset from whatever the prior keyframe is on the property?