KeyframeSequence to CFrame Animation Plugin

I made a plugin some time ago that converted KeyframeSequences to CFrame animations for personal use. I said to myself why not make it public so I made a poll and more people said they wanted to use it than not use it. I made it way more user friendly, added R15, and am releasing it now.

First you have to make a KeyframeSequence (it’s basically an animation), then open the plugin and select that KeyframeSequence. After you select the KeyframeSequence, click the button that says convert and a script will be made in the Server Storage, with the same name as the KeyframeSequence. That script is the CFrame animation. Copy paste everything in the script into a function on another script, call the function with the argument as a character and it will play just like an animation. To stop the animation you will have to create a BoolValue in the HumanoidRootPart, and it must be set to true before playing the animation. Just set the BoolValue to false and the animation will stop.

You might be asking, why use it? The benefits are that CFrame animation are harder to steal (if they are in a Server Script in ServerScriptService that is), you can send other people the animation and they can use it, and CFrame animations instantly load. The only problem with CFrame animations was that they were tedious and hard, and this plugin solves a part of this issue.

Even though this plugin makes the CFrame animations, it doesn’t do everything for you. If you want to recreate every animation into CFrame (which you would probably have to do, due to how CFrame animations work), you would need to code everything to work whenever it needs to work. This plugin basically just gets rid of part of the problem of CFrame animations, not the whole problem.

The plugin currently has a feature that moves the HumanoidRootPart with the Torso (meaning that if the torso moves to a place the HumanoidRootPart is also moved to that place). It also has a feature where the first time the first Keyframe is played, it will take half the amount of time for it to end which I can’t fully explain. Both those features can be disabled and the half amount of time for first Keyframe only works on KeyframeSequences that have looped set to true.

Everything has been tested and works for R6 but I haven’t tested much for R15, and when I tested R15 the animation, it was just one Keyframe so if you find any bugs please let me know. There is a little bit more info in the plugin itself if you go to Instructions/Extras. If you are using a custom R6 rig, enable R15. If R15 is enabled then the character that contains the KeyframeSequence must be in an idle stance when you convert the animation. If the animation has 1 frame gaps and is 60fps and put in a server script it might lag.

Here’s the plugin:

Please ask if you have any questions, report any bugs, and suggest if you have a suggestion.

discord server


I wont post more updates here if you want to keep up with this plugin, join this discord server

V1.1, V1.2, and V2

There are reasons to why they weren’t mentioned here separately, read to find out.


Just added an option where you can save the setting you have. Press the use presets button and it should say yes, and you would be using them.

Didn’t mention as soon as it was released because it barely added anything.

I added much more stuff than V1.1 in this version, it included additions and bug fixes.

  • R6 and R15 now use the same process instead of you having to choose one, but remember they need to be in the default pose before you convert.
  • Everything works for R15 now as before it just didn’t work (I tested on simple animations so there might be bugs, if you find any please report them.
  • You can disable animvalue and priority (they are the ones that stop the animation).
Bug Fixes
  • Fixed an issue where V1.1 saving, didn’t save everything properly.
  • Fixed an issue where some Keyframes and Motor6Ds weren’t found.
  • Fixed an issue where the Motor6D attached to the HumanoidRootPart wasn’t found properly.
  • Fixed the plugin reading the last Keyframes twice in first frame half time (this should really get a shorter name).

Didn’t mention when it was released because there were 2 big bugs that made the animation unable to stop and made the first keyframe be skipped (this bug was only on this version).

V2, This makes everything easier

There is an addition in this version that makes everything so much easier, it’s the first one I’m about to mention.

  • Made a thing that makes a local script with you choosing the animations for idle, walking, going up in the air (you could just say jumping but it activates even if you don’t jump), and falling (swimming, climbing, and sitting hopefully in a later version). With this, you can make CFrame animations for the stuff mentioned, without coding it. It also replicates to other clients (not the server just other clients) so it wouldn’t be just for you. To use this, click the button that says Movement, and it will ask you to select the idle animation, then press set, then select the walk animation, and so on. Note that after you finish with all the animations, don’t close the gui, press the set button which would say Save instead of Set. If you mess up and choose a wrong animation, press back or close the gui and you can restart. If you did it, saved, and want to revert, there will be 2 local scripts in StarterPack named “Animate” and “Replicate Animation”, 1 server script in ServerScriptService named “CFrame Animation Replicator”, and a remote event folder in Replicated Storage named “movementremotes”. Just delete these 4 things and it should revert.
  • Made the lines used when creating an animation less and more readable Imo.
  • Repositioned the gui a little bit.
Bug Fixes
  • Fixed the V1.2 bugs that ignored the first frame, and prevented the animation from being stopped.
  • Made the animation canceling much more accurate and faster.
  • Fixed an issue where the first frame half walk thing was always the same no matter the settings.
  • Fixed an issue where looped animations didn’t loop (this was probably a bug that was introduced in V1.2)

This is everything these 3 versions have, if you find any bugs please report them, if you have any questions then ask, if you have a suggestion then tell me.

1 Like