A free, open-source easing-graph panel for After Effects. Shape a cubic-bézier curve, then apply it to the temporal ease of your selected keyframes — with a preset library you can save, import, and share.
- Bézier graph — drag the handles or type the four values directly.
- Copy / paste
cubic-bezier(x1, y1, x2, y2)— round-trips with CSS, code, and other easing tools. - Apply to selected keyframes — sets native After Effects temporal ease (influence + speed). Non-destructive: your keyframes stay editable, no expressions added.
- Preset library — built-in eases plus your own saved curves.
- Share libraries — export your presets to a
.jsonfile and import someone else's.
- Grab a free ZXP installer — Anastasiy's Extension Manager or the aescripts ZXP Installer.
- Download
Kurve_<version>.zxpfrom the Releases page. - Quit After Effects, drag the
.zxponto the installer (click through the "unverified publisher" note — it's self-signed and safe). - Launch After Effects → Window → Extensions → Kurve.
Full steps in INSTALL.md. Requires After Effects CC 2018 or newer.
- Select two or more keyframes on any property in the timeline.
- Shape the curve (drag handles, type values, paste a
cubic-bezier(), or pick a preset). - Click APPLY.
Each consecutive pair of selected keyframes gets the curve applied to the ease between them, so you can ease a whole run at once.
Native ease means no overshoot. Because Kurve writes real keyframe ease (not expressions), a single ease can't overshoot past a keyframe's value — so bounce / elastic / back curves aren't reproduced. Standard power/smooth eases are exact.
No build step — it's plain HTML/JS + ExtendScript.
- Dev install: enable unsigned extensions (
PlayerDebugMode), then runsync.ps1to copy the folder into AE's CEPextensionsdirectory. See INSTALL.md. - Package a release:
./package.ps1signs a.zxpwith Adobe's freeZXPSignCmd(path set at the top of the script).
| Layer | File | Role |
|---|---|---|
| Panel UI | client/index.html |
Bézier graph, presets, bridge (HTML/CSS/JS in a CEP panel). |
| Engine | host/kurve.jsx |
ExtendScript — converts the curve to per-keyframe temporal ease and drives the AE DOM. |
| Manifest | CSXS/manifest.xml |
CEP extension manifest. |
The panel calls the engine over the CEP bridge
(__adobe_cep__.evalScript('KV_fn(...)', cb)); the engine returns "OK|msg" /
"ERR|msg" strings.
MIT © Kyle Sullivan