Back to Tools

Motion Studio Pro

Design complex keyframe-based CSS animations with real-time visual playback

KEYFRAME ENGINE
Bounce
Pulse
Rotate
Shake
Visual Output

                

Design an animation and get the CSS

Writing @keyframes by hand means guessing values, saving, refreshing and repeating. This generator lets you set the keyframes in a list of small forms, watch a preview object move in real time, and then copy production-ready CSS. It focuses on the properties designers use most: movement along the horizontal axis, scale, rotation and opacity.

Using the keyframe editor

  1. In Animation Configuration, set the Duration and Delay in seconds and choose a Timing Function: Ease, Linear, Ease In, Ease Out or Elastic (a bounce-style cubic Bezier).
  2. Optionally start from a template. The Quick Templates are Bounce, Pulse, Rotate and Shake, and each one replaces the current keyframes.
  3. Under Keyframes (0% - 100%), edit each row: position in percent, scale, rotation in degrees, horizontal offset in pixels and opacity between 0 and 1.
  4. Press Add Keyframe to insert another step, or the trash icon to delete one.
  5. Click Run & Generate Animation. The preview icon restarts and loops, and the code appears underneath.
  6. Use Copy CSS to copy everything.

Keyframes are sorted by position whenever the list redraws, so you can enter them in any order.

What the output contains

You receive a @keyframes block named customAnim, followed by an .element rule that applies it with your duration, timing function and delay. Every step uses one transform line combining translateX, scale and rotate, plus an opacity line. The animation is set to repeat forever, which makes it easy to judge in the preview. If you want it to play once, change infinite to 1 in the copied code.

Where it is handy

  • Loading indicators and pulsing call-to-action buttons.
  • Attention shakes for form errors or notification badges.
  • Subtle hover or entrance effects for cards and icons.
  • Learning how keyframe percentages and easing change the feel of motion.

Points to remember

The name customAnim and the selector .element are placeholders. Rename them before adding the code to a real stylesheet, especially if you paste more than one animation. Changes typed into the keyframe fields are applied when you press Run & Generate, so click it after editing to see the update. Only the properties in the form are available, so effects like colour changes, vertical movement or skew need to be added to the copied code by hand.

For smooth performance, transform and opacity are also the properties browsers animate most cheaply, which is one more reason this set works well for interface motion. The editor runs in your browser as JavaScript.

Related Tools




Frequently Asked Questions

Which properties can I animate?
Each keyframe controls horizontal movement in pixels, scale, rotation in degrees and opacity. They are combined into a transform declaration plus an opacity declaration. Other properties need to be added manually to the copied code.
How do I make the animation play only once?
The generator always outputs infinite so the preview keeps looping. After you copy the code, change infinite in the animation line to the number of repeats you want, such as 1.
What do the quick templates do?
Bounce, Pulse, Rotate and Shake each replace the keyframe list with a ready-made sequence and immediately regenerate the CSS and preview. You can then edit any step of the template to fine-tune the result.
Can I rename the animation?
The tool always names it customAnim and applies it to a class called .element. Rename both in your own stylesheet after copying, and update the animation property so the names still match.
Why did my edits not appear in the preview?
Keyframe field changes are stored as you type but the preview and code refresh when you click Run & Generate Animation. Press it again after adjusting values to see the latest version.
Support Chat
We typically reply within minutes

Hello! 👋 Before we start, please tell us your name.