v0.2.0-beta · For After Effects 2023+

Shape motion one curve at a time.

Pendulum is a CEP panel for After Effects that lets you shape keyframe easing with a visual speed graph. Drag the handles. See the motion. Skip the math.

Free & open source GPL-3.0 macOS · Windows
speed curve · drag the orange handles
What it does

A curve editor that lives where you already work.

Pendulum sits in an After Effects panel. No round-tripping to the graph editor, no copy/paste math from Stack Overflow.

Drag to design

Grab the orange influence handles on the speed graph and drag them to sculpt acceleration and deceleration. Drag the canvas itself to adjust both handles at once.

Auto-apply easing

With auto-apply enabled — the default — your curve is sent to After Effects the moment you release the mouse. Toggle it off if you prefer to click Apply manually.

Ghost curves

When keyframes are selected, Pendulum draws their existing easing behind your active curve as a translucent reference. Compare before and tweak after.

Presets & favorites

Save any curve as a preset thumbnail. Drag presets into favorites to color-code, rename, and reorder them. Build a personal library that persists across sessions.

Anchor point grid

A 3×3 grid lets you snap a layer's anchor point to any standard position without shifting it in the composition. Works on 2D, 3D, parented, and separated-dimension layers.

Null creator & scripts

Create controller nulls at the visual center of selected layers, auto-parented. Plus drop-in .jsx scripts — like wiggle with sliders or split text — that appear as buttons in the panel.

Install

Get it running in under a minute.

Grab the latest ZXP from GitHub releases, or clone the repo and side-load it.

01 · RECOMMENDED

Install with ZXP Installer

Download com.pendulum.cep.zxp from the latest GitHub release. Open it with the free ZXP Installer to install automatically into After Effects.

Download from GitHub →
02 · MANUAL

Manual install (unsigned)

Unzip the .zxp file and copy its contents to your CEP extensions folder. Enable unsigned extensions with a registry/plist flag, then restart After Effects.

Open on GitHub →
After installing: open After Effects, then go to Window → Extensions → Pendulum. The panel will dock like any other.
Docs

Getting started.

Everything you need to know, in the order you'll need it.

Opening the panel

After installing, launch After Effects and choose Window → Extensions → Pendulum from the menu bar. The panel will dock into your workspace like any other. We recommend parking it next to your Timeline — it's where you'll spend most of your time with it.

Drawing your first curve

The graph shows a speed curve — velocity over time between two keyframes. Two orange handles sit on the baseline:

  • In handle (left): controls the ease-out of the starting keyframe — how the motion leaves the first key. Further right = more gradual acceleration.
  • Out handle (right): controls the ease-in of the ending keyframe — how the motion arrives at the second key. Further left = more gradual deceleration.

Each handle ranges from 0% to 100% influence, matching After Effects' own influence percentage.

Dragging on the canvas (not directly on a handle) adjusts both handles at once: vertically tightens or loosens the curve globally; horizontally shifts emphasis between ease-in and ease-out.

The cubic-bezier(...) readout below the canvas shows the current control points. Click it to copy — useful for CSS easing or reference.

A tall narrow peak = a fast, snappy move. A wide gentle hump = a slow, smooth move.

Applying to keyframes

Pendulum operates on selected keyframes across all selected layers. If no specific keyframes are selected within a property, it targets all keyframes on that property. Hold keyframes are always skipped.

  • Auto-apply on (default): easing is sent to After Effects the moment you release the mouse after dragging.
  • Auto-apply off: click the Apply button to send the current curve manually.

The entire operation is a single undo step (“Pendulum: Apply Easing”). Press ⌘Z / Ctrl+Z to revert.

Ghost curves

When you have keyframes selected in After Effects, Pendulum reads their current easing and draws it behind your active curve as a translucent overlay. Ghosts fade in smoothly when the selection changes.

Up to 4 ghost curves display at once, one per selected property, each in a fixed color cycle (white, orange, light blue, lavender). When your active curve's peak velocity aligns closely with a ghost's peak, a dashed vertical line appears to help you match timing across properties.

Saving presets

Once you have a curve you like, click the + button in the preset bar to save it as a thumbnail. When ghost curves are visible, a second save button appears — click it to save all visible ghost curves as individual presets.

Presets persist between After Effects sessions and are stored in the panel's local storage. The bar scrolls horizontally when you have many presets.

Maximum 20 presets. When the limit is reached, the oldest preset is automatically removed to make room.

Favorites

Drag any preset into the favorites area below the preset bar to pin it for quick access. Favorites can be renamed (double-click the name), color-coded (click the color dot), and reordered by dragging. They persist alongside your settings.

Anchor point grid

The 3×3 grid on the right side of the panel repositions a layer's anchor point to any of 9 standard positions (top-left through bottom-right). Positions are calculated from the layer's visible content bounds, not the comp dimensions.

When the anchor point moves, Pendulum compensates the layer's Position value so the layer does not visually shift. Works on 2D and 3D layers, parented layers, and separated dimensions. Cameras and lights are skipped.

Null creator

The Null Creator button creates a null object in the active composition. With layers selected, the null is placed at the average visual center of the selection and those layers are automatically parented to the null. Without a selection, the null lands at the comp center. Nulls are named Ctrl_01, Ctrl_02, etc.

Settings

Open the settings panel by clicking the gear icon in the bottom-right corner.

  • Behavior: toggle auto-apply on or off.
  • Colors: customize the graph, playhead, and max-speed colors.
  • Timing: adjust ghost fade duration, playhead polling, and selection polling.
  • Ghost Curves: set stroke and fill opacity independently.
  • Data: export or import your settings as JSON, or reset to defaults.

Settings are saved automatically and persist between sessions.

Changelog

What's new.

Every release, in reverse order. Subscribe via GitHub releases for notifications.

v0.2.0-beta.2 Apr 10, 2026

Polish & fixes

  • fixed Export, scrollbar, and debounce duplication issues.
  • fixed Script bugs and focus-stealing issues.
  • added Split-text script and match-size script.
  • changed Preset bar now supports horizontal wheel scrolling.
v0.2.0-beta.1 Apr 2026

Favorites, settings & scripts

  • added Favorites system with color-coding, renaming, and drag-to-reorder.
  • added Settings panel with colors, timing, ghost opacity, and export/import.
  • added Auto-update system with GitHub releases integration.
  • added Drop-in user script system with JSDoc metadata.
  • added Cubic-bezier copy/paste support.
v0.1.0-beta Apr 2026

Initial beta

  • added Interactive speed-graph curve editor with draggable handles.
  • added Apply easing to selected keyframes across all selected layers.
  • added Ghost curves, playhead tracking, and preset thumbnails.
  • added Anchor point grid and null creator.
FAQ

Questions people ask.

Which versions of After Effects are supported?
Pendulum is built as a CEP 11 panel and is tested on After Effects 2023+. Older versions may work but aren't officially supported.
Is it really free?
Yep. Pendulum is GPL-3.0 licensed and free forever. If it saves you time, starring the repo helps more people find it.
Can I share my presets with teammates?
Presets and favorites are stored in the panel's local storage and are local to your machine. Settings can be exported/imported as JSON from the gear menu, but presets themselves aren't included in that export yet.
Does it work with expressions or only keyframes?
Pendulum applies to keyframe interpolation. If you need a curve inside an expression, copy the cubic-bezier() readout from the editor and paste the four numbers into your own bezier() expression.
I found a bug / want a feature.
Open an issue on GitHub. Pendulum is actively maintained and PRs are welcome.
Why is it called Pendulum?
Good motion has swing — a sense of weight, of easing in and out of rest. A pendulum is the simplest system that has it.