FL LTX Motion Boost
LTX-Video has no motion knob — this node fakes one, and it mostly works
- positive
- negative
- vae
- positive
- negative
- vae
If you've generated more than one LTX-Video clip you've hit the wall: the model is absurdly fast, but there's no "how much motion" dial anywhere, so your scenes either crawl or go full weather-alert turbulence. FL LTX Motion Boost is a single node from the tiny FL LTX Tools pack that gives you exactly one slider for that problem - and it's a legitimately clever hack, not a marketing gimmick.
Here's the dirty secret. LTX-Video has no motion parameter because motion isn't one thing - it emerges from a bunch of interacting levers. The most reliable one is the frame_rate value baked into the conditioning, which the model reads through its RoPE temporal embeddings. Lower the frame rate and each output frame covers a bigger imaginary time slice, so the model packs more movement between frames. That's the whole trick: motion_intensity just lowers that frame rate for you, proportionally.
The math is on the tin. With the default base_frame_rate of 25, the final fps is base_frame_rate * (1.0 - motion_intensity * 0.6). So 0.0 gives you 25 fps (untouched), 0.5 gives you ~17.5 fps, and 1.0 drops you to 10 fps - the README's "chaotic" end. The node writes that value into both your positive and negative conditioning using the same pattern as ComfyUI's built-in LTXVConditioning, which is why the author calls it a drop-in replacement for that node. It also patches a clone of your VAE with two decode-time settings, decode_noise (default 0.025) and decode_timestep (default 0.05), which add per-frame stochasticity so boosted motion doesn't read as mechanical. The source ships in modules/vae_patcher.py and clones the wrapper rather than mutating your original VAE - a nice touch, since a utility node that silently changes your shared VAE reference would be a footgun.
The inputs that matter
You'll mostly touch three knobs:
motion_intensity(0.0–1.0, default 0.5) - the whole point. Start at 0.5, then think in small steps. 0.3–0.6 is the usable band for most clips; past 0.8 you're inviting flicker.decode_noise(0.0–0.5, default 0.025) - VAE-side stochasticity. If boosted motion comes out jittery, this is your first lever.decode_timestep(0.0–0.5, default 0.05) - leave it alone unless you know what you're doing; it's an LTX default for a reason.
The two optional ints are for control freaks. base_frame_rate (6–60, default 25) re-anchors the scaling; override_frame_rate (-1 or 6–60, default -1) lets you set a specific fps and ignores motion_intensity for that lever entirely. Outputs are positive, negative, and vae - splice the node between your text encoders and the sampler, and run the vae output into your VAE decode as usual.
Install
It's a one-trick pack, so setup is trivial. In ComfyUI Manager, search "FL LTX Tools" and hit install. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI-FL-LTXTools.git
cd ComfyUI-FL-LTXTools
pip install -r requirements.txt
Then restart ComfyUI. That requirements.txt is literally just torch>=2.0.0 - there are no extra dependencies, no model downloads, no patreon-gated weights. You still need an LTX model via the official ComfyUI-LTXVideo nodes; this pack only adds the motion logic on top.
Where people get burned
The VAE-side half of the node only works if the VAE you feed it is a genuine LTX CausalVideoAutoencoder - it checks for decode_noise_scale/decode_timestep attributes and silently passes through with a warning if they're missing. So it's built for the classic LTX-Video line (0.9.x / 13B era). If you're on LTX-2 or 2.3 with their newer latent space, expect the motion_intensity/frame-rate lever to still work but the decode-noise knobs to be dead weight. And remember this is one lever among several: LTX motion is famously finicky, and the community leans on seed-hunting and occasionally a Wan cleanup pass for fast, complex motion. This node won't fix that - it just makes one knob you'll actually reach for.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| motion_intensity | FLOAT | 0.500–1 | 0.0 = static (no motion boost), 0.5 = balanced default, 1.0 = maximum motion (lowers frame_rate ~60%). |
| decode_noise | FLOAT | 0.0250–0.5 | VAE decode noise scale. Adds organic per-frame stochasticity. 0.025 is the LTX default. Higher = more textural noise + smoother motion. |
| decode_timestep | FLOAT | 0.0500–0.5 | VAE decode noise timestep. 0.05 is the LTX default. |
| base_frame_rateopt | INT | 256–60 | Reference fps before motion_intensity scaling. Final fps = base_frame_rate * (1.0 - motion_intensity * 0.6). |
| override_frame_rateopt | INT | -1-1–60 | If >= 6, sets the conditioning frame_rate explicitly and ignores motion_intensity for this lever. -1 = auto. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| vae | VAE | — |