Skip to content

About

One dockable After Effects panel: smart precomp, auto text boxes, fades with 7 easings, animated arrows, 9-point anchor pad, grids, color swatches, lightning FX and background preview renders, free forever.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LazyMotionToolkit β€” All-in-One Motion Graphics Suite for After Effects

LazyMotionToolkit β€” The All-in-One Motion Graphics Suite for After Effects

Everything you need for rapid motion design workflows in Adobe After Effects β€” free forever.

Smart boundary-aware precomposing, dynamic auto-sizing text boxes with animated carets, math-curved fade animators, animated arrowhead paths, interactive 9-point anchor alignment, procedural lightning FX, and background H.264 preview rendering β€” all in a single dockable ScriptUI panel.

LazyMotionToolkit in action: smart precomping, text boxes, head to line, anchor rigging, lightning, and background render

Download LazyMotionToolkit Adobe After Effects License: MIT Windows and macOS

Download & Install Β· Key Features Β· The manual Β· Trouble? Β· What's New in 1.12 Β· Development & Tests

Developed by Raisul Sohan Β· Version 1.12 Β· Free & open source (MIT) Β· Changelog

Need help or have suggestions? Email me at lettertosohan@gmail.com or visit raisulsohan.com.


πŸ†• What's New in 1.12

  • Official Brand Logo & Visual Overhaul. Embedded the official Sleeping Cat on Diamond Keyframe logo mark directly into the ScriptUI panel header.
  • Hero Brand Banner & Animated Demos. Full high-resolution brand banner (assets/banner.png & assets/banner.svg), interactive feature demo GIF, and 60fps MP4 video added to documentation.
  • LazyLord-style Documentation Layout. Streamlined header with quick access links, release badge, and video presentation.

πŸ†• What's New in 1.11

  • Head to Line drew the wrong shape, and now does not. Every "Triangle" was really a three-pointed star turned inside out. After Effects numbers a polystar's Type the other way round from what the code assumed, spells its roundness match names Roundess with one n, and puts Shape Direction at property 1 so every numeric fallback was off by one -- which is how ticking Round ended up writing 15 into the inner radius.
  • A second click changes the head instead of stacking one behind it. Pick Triangle, change your mind, pick Circle: you get a circle. The Head Size and Offset Angle you had set come back with the new shape, and a head you renamed is still recognised.
  • Stagger can move keyframes instead of layers. Keys only leaves the layer bars alone and steps the animation apart -- for layers that run the whole comp. Easing, hold keys, spatial tangents and roving keys all survive the move.

πŸ†• What's New in 1.10

  • Stagger. Step the selected layers apart in time, top to bottom, by however many frames you like. It adds spacing rather than rebuilding your timing, so it is safe to run on a stack that is already animated, and a negative number closes the spread up again. Rev works from the bottom.
  • Null + Parent. One null on top, centred on the selection, everything hanging off it. A layer whose own parent is also selected keeps that parent instead of being flattened onto the null.

πŸ†• What's New in 1.9

  • The arrowhead actually turns now. Head to Line asked After Effects for ADBE Rotation, which does not exist on a 2D layer; the failure was swallowed, so every head ever made sat on the end of its line pointing right, whatever the line did. Its opacity never followed the line either. Both work, and all eight head shapes are covered by a new test.
  • Auto Box is about a third cheaper per frame. The size and the centre each measured the text separately. Only the size needs smoothing, so the centre measures once now: 939 ms down to 657 ms over 100 frames on the same box. Long paragraphs also turn their own smoothing down, which takes a 600-character block from the slowest thing in the comp to 10.8 ms a frame.
  • Box colour, caret colour and reveal ease are in the Auto Box dialog. All three existed in the code and none of them had a control, so every box came out the same dark grey with the same ease.
  • Remove box. Undo was the only way back, and deleting the box by hand left the measure layer, the LazyType animators and the Reveal sliders behind on the text.
  • The panel remembers your settings. Fade length, speed, easing, head shape, the Auto Box dialog -- all of it comes back after a restart.
  • Nothing fails in silence. A box that could not be parented used to stay in the comp measuring nothing; now it is removed and listed with a reason. Deleting a text layer or a line no longer permanently disables the expressions on what it left behind.

πŸ†• What's New in 1.8

  • ⚑ LazyType Reveal Rig (Auto Box Overhaul): Complete modernization of the text typewriter experience.
    • Measurement Layer Engine: Uses an invisible, guide-marked measurement layer to compute dynamic text bounds frame-by-frame with zero stepping or delay.
    • Character Settling Animations: Adds expressive secondary animation to incoming characters (Blur + rise, Scale pop, Drop) with configurable settle bands.
    • Dynamic Animated Caret: Optional blinking terminal-style caret with customizable width, gap, color, and blink rate synced with the typing edge.
    • Non-blocking Dialog Configuration: Dedicated modal dialog to configure reveal timing (by unit or total frames), reveal easing, stroke, and styling.
  • Figma / React Premium Dark Theme: Rebuilt the entire ScriptUI interface based on the modern React design (LazyMotionToolkit UI).
  • Interactive Header Bar & Clickable Links: Edge-clustered header with author name and menu dots linking directly to https://raisulsohan.com.
  • Pixel-Perfect 50/50 Column Geometry: Strictly synchronized column pairs ensuring the central divider is in exact vertical alignment with the top tools.
  • Custom Vector onDraw Buttons: Rich dark styled buttons (#222428) with clean border styling and crisp centered typography.
  • Glowing Accent Buttons: Full-width Indigo/Blue accent (#5865f2) for ⚑ LazyStrike FX and ⚑ Apply with white typography.
  • Interactive 9-Point Anchor Pad: 3Γ—3 direction grid with live active-state highlighting (matching the React UI's indigo circle indicator).
  • Etched Section Headers: Clean uppercase category titles with 1px horizontal etched divider lines (#2a2c32).
  • Pill-Style Swatch Controls: Color blocks with live active border indicators and mini F (Fill) and S (Stroke) pill buttons.
  • ⚑ LazyStrike FX (was QuickStrike FX): lightning bolts, flashes and sky flashes, by timing or driven by audio.
    • Effect settings are found by match name, so it works in any After Effects language.
    • Fixed: Forking was always maxed out.
    • Keyframes are set in one call per property (faster).
    • Audio-Driven removes its temporary Audio Amplitude layer and puts back your work area and selection.
    • If nothing fits (the playhead is past the work area) it says so instead of making empty layers.
  • 🎬 LazyPreview Render (was QuickPreviewRender): renders the work area to H.264 in the background and plays it back as a solo'd layer.
    • Cancel stops only this render. It used to kill every aerender on the computer.
    • It knows a render has finished when aerender actually exits, not when the file size stops changing.
    • It refuses to render the wrong comp when two share a name.
    • Remove deletes the rendered file too. If After Effects is still holding it open, the file is deleted on a later try.
    • Toggle can switch the preview back on. It used to fail.
    • It works from project folders with non-English letters (e.g. Bengali): paths reach aerender in their short ASCII form.

What's New in 1.5

Every change below was checked inside After Effects 2026 (26.5) by tools/ae-smoke-test.jsx, as well as by the offline tests.

  • Precomp (1:1) no longer loses animation or cuts the layer. 1.4 deleted Position/Scale/Rotation keyframes, froze them at the current frame, and started the precomp at the playhead, cutting off everything before it. Footage, solid and comp layers are now precomposed with all attributes left outside, so keyframes, effects, masks, time remapping and parenting stay exactly as they were. Shape and text layers keep their in/out points.
  • Mask cropping is now exact at every frame. The crop covers the masks across all their keyframes, including BΓ©zier handles, feather and expansion. Inverted or expression-driven masks are never cropped, and the anchor point, mask paths and effect points are moved with the crop. The result: no pixel moves on screen.
  • Fade Speed works the right way round. 2 means twice as fast; in 1.4 it meant twice as slow.
  • Fades respect the layer's own opacity (a layer at 60% fades between 0 and 60) and start and end on fully transparent frames. A layer shorter than two fades no longer jumps in the middle.
  • Clear only removes what the toolkit added. It removes LazyMotion fade expressions and the fade in / fade out markers. 1.4 deleted every marker and any opacity expression. Applying a fade twice no longer stacks markers, and an opacity expression of your own is never overwritten.
  • QuickSwatch colours solids again. The solid check never matched in 1.4. Stroke now works on text layers too, and animated colours get a keyframe instead of an error.
  • Anchor Point pad handles animated position and split X/Y position. Center in Comp centres the layer's content, not its anchor point.
  • No silent failures. Layers that can't be processed (cameras, parented shapes, animated rotation…) are listed with the reason, and one bad layer no longer stops the rest.
  • Grid Designer refuses impossible margins and more than 400 cells instead of making hundreds of broken layers.
  • Group Precomp refuses to strand a child whose parent isn't selected, and turns on Collapse Transformations when 3D layers go inside, so they keep the scene camera.

πŸ“š Documentation

Everything below is the tour. Everything in detail is in docs/:

The manual Installing, then every control in the panel in the order you meet it, what it remembers, and what each tool names its layers.
How Auto Box works The measure layer, every effect control the rig adds, what it costs per frame, and where it gives up.
If something goes wrong Symptoms and fixes for each tool, and every message the panel can print.
Building from source How the file is laid out, the engine-and-wrapper rule, the seven checks a change has to pass, and the After Effects traps found the hard way.

🌟 Overview

The LazyMotionToolkit panel, docked

Ten tools in one dockable panel. No plugins, no dependencies, no licence server β€” a single ExtendScript file that After Effects loads at startup.

Everything works on the layers you have selected, everything is one undo step, and a layer that cannot be handled is listed with the reason rather than silently skipped.

Shown at a narrow dock width. The fifth swatch wrapped because only four fit on a row there β€” widen the panel or set fewer columns and they line up.

LazyMotionToolkit is a lightweight, high-performance ScriptUI panel designed to eliminate repetitive motion design tasks. It unifies ten toolsets into one cohesive workflow without relying on external plugins or bloated dependencies.


πŸš€ Key Features

1. πŸ“¦ Smart Precomposition Engine

  • [ πŸ“¦ Precomp (1:1) ] (Individual Precomp): Select multiple layers and precompose each layer into its own precomposition.
    • Footage, solids and comps: attributes stay on the outside ("Leave all attributes"), so every keyframe, effect, mask, time remap and parent is untouched. If the layer has masks, the precomp is cropped to the area they can ever show (over all keyframes, with BΓ©zier handles, feather and expansion). The anchor point, mask paths and effect points move with the crop, so nothing shifts on screen at any frame.
    • Shape and text layers: attributes move inside a comp-sized precomp that keeps the layer's in/out points. Parented or 3D shape/text layers are skipped with a note: use Group Precomp for 3D.
    • Nulls, cameras and lights are skipped and listed.
  • [ πŸ“ Precomp (Group) ] (Group Precomp): Combine all selected layers into a single precomposition spanning their collective in/out. It refuses (and says why) if a selected layer's parent is not selected. With 3D layers inside, Collapse Transformations is turned on so they keep the scene's camera and lights.

2. πŸ“ Pixel-Perfect Auto Text Box & LazyType Reveal

One box at 28%, 64% and 100% of the same reveal: the box grows with the text, the caret rides the typing edge, and the newest characters are still settling

One box, three points of the same reveal.

The Auto Box dialog: Text reveal, Box and Padding, Caret and Stroke

  • LazyType Reveal Rig: Modern typewriter animator with smooth character settling, multi-style eases, and frame-rate independent reveal control.
  • Smart Measurement Layer: Utilizes a hidden guide measure layer to evaluate character extents in real-time, eliminating stepped box jitter.
  • Animated Terminal Caret: Dynamic blinking cursor tracking the typography edge, customizable in size, gap, color, and blink speed.
  • Zero Squish / Undistorted Geometry: Modifies vector shape rectangle geometry directly rather than layer transform scaling. Corner roundness remains true circular geometry at any text length or aspect ratio.
  • Fade In / Fade Out Sync: Automatically inherits the parent text layer's Transform > Opacity and character animator opacity.
  • Dedicated Effect Controls: Adds Padding X, Padding Y, Roundness, Box Opacity, Box Color, Box Lead, Box Smooth, Caret, Caret Width, and Caret Blink controls directly to the box layer.
  • Box and caret colour, and the reveal ease, are chosen in the dialog before the box is built; the dialog reopens with whatever you used last.
  • Remove box takes the box, the measure layer, the LazyType animators and the Reveal controls back off the selected text layers in one click.
  • The text's own colour is not part of the rig. It belongs to your text layer: set it in the Character panel, or with this panel's Swatch, which colours text fill and stroke.

3. 🏹 Head to Line (Animated Arrows & Path Follower)

All eight head styles on a line: Triangle, Circle, Star, Rectangle, Pentagon, Hexagon, Heptagon, Octagon

  • 1-Click Arrow & Pointer Generator: Select any Pen-drawn line or Bezier path, choose a head style, and click 🎯 Head it! to instantly attach an auto-orienting head.
  • 8 Head Styles: Triangle, Circle, Star, Rectangle, Pentagon, Hexagon, Heptagon, and Octagon.
  • Changing your mind is one click: clicking Head it! again with a different style replaces the head instead of adding a second one, keeping the Head Size and Offset Angle you had set. A head you renamed is still recognised.
  • Smart Tangent Tracking: Head automatically rotates (tangentOnPath) and follows every curve and bend without manual keyframing.
  • Round Corners & Double-Sided: Optional rounded corner smoothing and double-sided heads (heads at both Start and End).
  • Trim Paths Animation Sync: Check Animate (f) with custom duration in frames to automatically generate smooth, easy-eased path drawing with the head riding the animated tip.

4. 🎨 Fade Animator Pro (7 Easing Curves)

  • Mathematical Easing Curves:
    1. Linear (Constant rate)
    2. Ease In (Expo) (Exponential acceleration)
    3. Ease Out (Sine) (Smooth deceleration)
    4. Ease InOut (Quad) (Smooth quadratic transition)
    5. Ease InOut (Cubic) (Deep cubic transition)
    6. Bounce (Physics-based bounce)
    7. Elastic (Spring-damped overshoot)
  • Custom Parameters: Fade Duration in frames, and a Speed multiplier (2 = twice as fast, 0.5 = twice as slow).
  • Keeps your opacity: the fade scales the layer's own opacity value or keyframes; the first and last frames are fully transparent.
  • Flexible Application: Independent Fade In and Fade Out toggles, with optional timeline Layer Markers (fade in / fade out). Re-applying replaces the fade instead of stacking markers.
  • [ πŸš€ Apply Fade ] & [ ❌ Clear ]: batch apply and clean up across selected layers. Fade expressions start with // LazyMotion Fade. Apply never overwrites another opacity expression, and Clear removes only LazyMotion fades and their markers.

5. 🎯 9-Point Visual Anchor Point Alignment Pad

  • Directional Keypad: Visual 3x3 pad (β—€ β–² β—₯ β—€ ● β–Ά β—£ β–Ό β—’) to snap anchor points to Top-Left, Center, Bottom-Right, etc.
  • Zero Visual Shift: Compensates Position (including scale and rotation, every Position keyframe, and separated X/Y Position) so the layer does not jump when the anchor point moves. Layers with animated anchor, scale or rotation, and 3D layers, are skipped with a note, because no single offset could keep them in place.
  • Center in Comp: moves the centre of the layer's visible content to the centre of the comp. Parented layers are skipped, since their position isn't in comp space.

6. β‡₯ Stagger & β—Ž Null + Parent

  • [ β‡₯ Stagger ]: steps the selected layers apart in time, top to bottom, by the number of frames in the box. Each layer keeps its own start, so only the spacing is added: run it on a stack that already has timing and the timing survives. Rev starts from the bottom layer instead, and a negative number closes the spread back up. Layers are ordered by where they sit in the timeline, not by the order you clicked them. Locked layers are skipped with a note.
    • Keys only moves the keyframes and leaves the layer bars where they are β€” for layers that run the whole comp and only their animation should cascade. Easing, hold keys, spatial tangents and roving keys come through intact, and a layer with no keyframes is reported rather than silently ignored. Left off, the whole layer moves and its keyframes go with it, because a keyframe's time is stored against its layer's start.
  • [ β—Ž Null + Parent ]: one null on top, centred on the selection, with everything selected parented to it. A layer whose own parent is also selected keeps that parent β€” it already follows the null through it, and re-parenting would flatten the rig you built. The null turns 3D if anything in the selection is, its anchor sits in its middle so it rotates and scales around itself, and nothing on screen moves.

7. ⊞ Grid Designer Dialog

The Grid Designer dialog: quick presets, columns and rows, gutters and margins, output type

  • Layout Presets: 1-click presets for 2x2, 3x3 Rule of Thirds, 3 Columns Split, and 12 Columns Web Layout.
  • Custom Dimensions: Full control over Columns, Rows, Gutters (X/Y px), and Margins (X/Y px).
  • Multiple Output Formats: Generate solid Shape Tiles (Fill), Outline Strokes, or Guide Nulls.
  • Guard rails: up to 400 cells; margins and gutters that leave no room are refused, and the dialog stays open to fix them.

8. 🎨 QuickSwatch (Live Color Palette)

  • Instant Fill & Stroke: 1-click buttons under each swatch.
    • Shape layers: every Fill or Stroke in their contents, nested groups included.
    • Text layers: fill or stroke. Stroke is switched on with a visible width.
    • Solids: Fill, via a Fill effect, so other layers using the same solid keep their colour.
    • Animated colours get a keyframe at the current time.
  • Native Color Picker: Click any swatch tile to open the native OS color dialog ($.colorPicker) and update palette colors on the fly.
  • Configurable Layout: Customize total swatches (1–10) and grid columns (1–6).
  • Session Persistence: Palette configurations and custom colors are automatically saved via app.settings across After Effects restarts.

9. ⚑ LazyStrike FX (Lightning & Sky Flash)

The LazyStrike FX window: style, colours, timing, intensity and randomness, audio sync, options Click ⚑ LazyStrike FX to open its window (it stays open while you work).

  • Styles:
    • Direct Bolt + Flash: an animated Advanced Lightning bolt plus a full-frame flash.
    • Sky Flash: decaying flickers across the frame.
    • Both Combined: bolt, flash and sky flash together.
    • Audio-Driven: one flash per loud peak of an audio layer.
  • Colors: Bolt and Flash, via the system colour picker.
  • Timing: strike length and gap (frames), number of strikes, sky flickers per strike. Either fill the work area, or start at the playhead.
  • Intensity & Randomness: bolt and flash brightness, and how irregular the strikes are.
  • Audio Sync (Audio-Driven):
    • Threshold: how loud a peak must be.
    • Gain: how bright its flash gets.
    • Decay: frames each flash holds.
    • Min Gap: frames between flashes.
    • It uses After Effects' Convert Audio to Keyframes, then removes the helper layer and restores your work area and selection.
  • Pre-compose option wraps the generated layers in one precomp.
  • Layers are Add-mode solids named LazyStrike …; everything is one undo step.

10. 🎬 LazyPreview Render (Smooth Playback of Heavy Comps)

Like Premiere Pro's Render In to Out.

  • β–Ά Render Inβ†’Out:
    1. Set the work area (B / N) first.
    2. The panel saves the project, then renders the work area with aerender to AE_Previews/preview_<date>_<time>_<n>.mp4 next to the project, using H.264 at 15 Mbps.
    3. The render runs in the background while you keep working, with a Cancel button.
    4. When it finishes, the video goes on top of the comp as a solo'd [PREVIEW] preview layer (red label), spanning the work area. Its footage goes in the Lazy Preview Files bin.
  • Toggle: switch between the preview and the live comp.
  • Remove: delete the preview layer, its footage and the rendered file. A file After Effects still holds open is deleted the next time you render or open the panel.
  • Needs:
    • a saved project;
    • After Effects 2023 or newer (for the H.264 output module);
    • on Windows, a composition name in English letters (aerender can't receive other letters there).
  • Good to know:
    • Project folders with other letters work when Windows short names are available, which is the default on the system drive. Otherwise the panel explains what to change.
    • Cancel stops only this render's aerender.
    • If two compositions share a name, rename one first: aerender picks compositions by name.

πŸ’» Installation

Method 1: Installer (Recommended)

  1. Download the LazyMotionToolkit-v*.zip from the latest release and unzip it.
  2. Windows: double-click Install LazyMotionToolkit.bat and click Yes when Windows asks for administrator rights.
    macOS: double-click Install LazyMotionToolkit (macOS).command (if macOS refuses, right-click β†’ Open) and type your Mac password if asked.
  3. Restart After Effects and open Window > LazyMotionToolkit.jsx.

The installer copies the panel into the ScriptUI Panels folder of every After Effects it finds. Run it again to update. The zip also has an uninstaller.

LazyPreview Render also needs Allow Scripts to Write Files and Access Network: Edit > Preferences > Scripting & Expressions (Windows) or After Effects > Settings > Scripting & Expressions (macOS).


Method 2: Dockable ScriptUI Panel, by hand

  1. Copy LazyMotionToolkit.jsx to your After Effects ScriptUI Panels directory:

    • Windows:

      C:\Program Files\Adobe\Adobe After Effects <Version>\Support Files\Scripts\ScriptUI Panels\
      

      OR for current user:

      C:\Users\<Your-Username>\AppData\Roaming\Adobe\After Effects\<Version>\Scripts\ScriptUI Panels\
      
    • macOS:

      /Applications/Adobe After Effects <Version>/Scripts/ScriptUI Panels/
      
  2. Restart After Effects.

  3. Open the panel via the top menu bar:

    • Window > LazyMotionToolkit.jsx
  4. Dock the panel anywhere into your AE workspace.


Method 3: Direct Execution (Without Installation)

  1. In After Effects, go to File > Scripts > Run Script File...
  2. Browse and select LazyMotionToolkit.jsx.

πŸ› οΈ Technical Specifications

  • Language: Adobe ExtendScript (ES3 compliant, compatible with all AE versions).
  • Host Support: Adobe After Effects CC 2020 through CC 2026+.
  • Operating Systems: Windows 10/11 & macOS (Intel / Apple Silicon).
  • Dependencies: Zero external plugins or libraries required.

πŸ§ͺ Development & Tests

The panel is a single file, LazyMotionToolkit.jsx. The tools/ folder is only for development; users never need it.

Command (Windows) What it checks
cscript //Nologo tools\check-extendscript.js The script compiles as ES3 and avoids names and comments that real ExtendScript rejects.
cscript //Nologo tools\test-toolkit.js The engine against a mocked After Effects: precompose choices and cropping (including After Effects' own re-centring on comp resize), mask bounds, fade expressions evaluated frame by frame, anchor maths, colours, grid limits, lightning schedules and audio peaks, the aerender job (encoded command lines, non-English paths) and preview file clean-up.
"C:\Program Files\Adobe\Adobe After Effects 2026\Support Files\AfterFX.com" -noui -r tools\ae-smoke-test.jsx The same behaviour inside the real After Effects: pixel placement measured with After Effects' own expression engine, fades, colours, LazyStrike layers, and a real aerender preview render (from a folder with Bengali letters) including Cancel. It writes %TEMP%\lazymotion-smoke-results.txt and quits without saving. Close After Effects first; needs Allow Scripts to Write Files.
… AfterFX.com -r tools\ae-ui-test-audio.jsx LazyStrike's Audio-Driven mode, which needs After Effects' UI (no -noui): a generated WAV with two bursts must give two flashes, with the helper layer removed and the work area restored. Results in %TEMP%\lazystrike-audio-results.txt.
… AfterFX.com -r tools\ae-ui-test-panel.jsx Builds the real panel and the LazyStrike FX window. Results in %TEMP%\lazymotion-panel-results.txt.

When $.global.LazyMotionToolkitTest is set before loading, the script hands back its engine functions instead of building the panel; the tests use this. It is never set in normal use.

Release zip: node tools/package-release.mjs puts LazyMotionToolkit-v<version>.zip (the script, the installers from tools/installer/, and the licence) into the 00 Install from here folder next to the repository. It stops if the README or CHANGELOG describe another version.


πŸ‘¨β€πŸ’» Author & Credits


πŸ“„ License

LazyMotionToolkit is free and open source under the MIT License: use it, share it, change it, including in commercial work.

About

One dockable After Effects panel: smart precomp, auto text boxes, fades with 7 easings, animated arrows, 9-point anchor pad, grids, color swatches, lightning FX and background preview renders, free forever.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages