One prompt. Several shots. Sound included.
LTX-2.5 generates connected cuts inside a single pass — identity, light, voice and score carry across the edit. Write the scene here, get a prompt that follows Lightricks' prose format (no shot lists, no sluglines) and the exact command to render it.
What LTX-2.5 actually renders.
The hero reel from the model card: faces, texture, cuts and synchronised audio from the model Lightricks shipped. Generated by Lightricks, not by this page — use it to judge the look before you queue a run. Then take the prompt above to the working demo.
What LTX-2.5 is
An open-weights world model that generates synchronised video and audio from text, image or video. 22B diffusion transformer, a custom Gemma 4 12B text encoder, a diffusion video decoder and an audio VAE with vocoder — one stack, one pass.
What is new in 2.5
- Native multishot. Several connected scenes in a single generation; identity, environment, lighting, voice and style hold across cuts.
- Diffusion fidelity rendering. Compute is allocated by scene complexity instead of one fixed compression rate.
- Diffusion video decoder. Replaces the VAE reconstruction stage — sharper faces, textures and on-screen text, fewer artifacts.
- Gemma 4 12B encoder. Holds multi-character prompts, camera moves and lighting together over longer sequences.
- Prompt enhancer + duration head. Optional rewrite pass, and opt-in length prediction from the prompt.
Two rules that decide whether a run works
Frames must satisfy n % 8 == 1 — 49, 73, 97, 121, 193. At 24 fps that is 2.04 s, 3.04 s, 4.04 s, 5.04 s, 8.04 s. A round 3.00 s is not representable.
Width and height must divide by 32 (the two-stage Diffusers path wants 64, because stage 1 runs at half resolution). The canvas presets here are all divisible by 64.
The checkpoints
| File | What it is |
|---|---|
| 22b-distilled-transformer-bf16 | Fast path: fixed 8-step schedule, CFG 1. This is what the commands here use. |
| 22b-dev-transformer-bf16 | Full / trainable DiT. Slower, guided, the base for fine-tunes. |
| gemma4-12b-with-proj | Text encoder plus projection, bf16. ~24 GB on its own. |
| video-vae-bf16 / conv-bf16 | DiffVAE (sharper, heavier) or conv VAE (faster, lighter). |
| audio-vae-bf16 | Audio VAE plus vocoder. |
| duration-head-bf16 | Predicts clip length from the prompt when frames are omitted. |
| latent-spatial-upscaler-x2 | Required for the two-stage recipe. |
ComfyUI-only int8/convrot and NVFP4 files are in the same repo — they are not loadable by ltx-pipelines or PyTorch.
Memory, honestly
| Placement | Peak | Notes |
|---|---|---|
| Distilled DiT bf16 | ~44 GB | 22B × 2 bytes |
| + Gemma 4 12B | ~68 GB | encoder resident |
| + VAEs, decoder, upsampler | ~76 GB | what the official Space loads |
| --offload cpu | ~30 GB peak | weights streamed per block; slower |
| --quantization fp8-cast | −22 GB | DiT cast to FP8, upcast at use |
96 GB (xlarge on ZeroGPU) is the comfortable configuration. 48 GB needs both the FP8 cast and full CPU offload; 24 GB is possible on paper and painful in practice.
Output
Duration is a predictor, not a promise: it sizes the clip to the action you write. Pace the beats into the prompt instead of expecting the model to stretch a moment.
Licence
LTX-2.x Community License. Free for commercial and production use under $10M annual revenue; above that a paid agreement is required. The weights are gated (auto-approve) — you must accept the licence on the model page before any download or from_pretrained call works.
Not affiliated with Lightricks. Facts from the model card, the LTX-2 repository and the published Diffusers snippet.
Three ways to run it
1 · Official pipelines — recommended
Python 3.12+, CUDA 12.7, PyTorch ~2.7. The repo ships ltx-pipelines and the distilled entry point used by the command this page builds.
git clone https://github.com/Lightricks/LTX-2.git cd LTX-2 && uv sync source .venv/bin/activate hf auth login hf download Lightricks/LTX-2.5 \ diffusion_models/ltx-2.5-22b-distilled-transformer-bf16.safetensors \ text_encoders/gemma4-12b-with-proj-ltx-2.5-bf16.safetensors \ vae/ltx-2.5-video-vae-bf16.safetensors \ vae/ltx-2.5-audio-vae-bf16.safetensors \ model_patches/ltx-2.5-duration-head-bf16.safetensors \ latent_upscale_models/ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0.safetensors \ --local-dir models/ltx-2.5
2 · ComfyUI
Official LTX-2.5 templates ship with ComfyUI and use the int8/convrot checkpoints. Easiest path if you already live in Comfy; not scriptable from here.
3 · Diffusers
LTX-2.5 landed in the 0.41.0 release — no git pin. Use Lightricks/LTX-2.5-Diffusers, not the split pack. The two-stage recipe (half-res stage 1 → ×2 latent upsample → stage 2 refine) is what the official Space runs, and what the Python artifact here builds.
pip install "diffusers>=0.41.0" "transformers==5.15.0"
Why there is no Generate button here
Three independent walls, all verified against this account:
- Gradio hosting on free cpu-basic — “requires a PRO subscription”
- ZeroGPU hosting — “account must be at least 30 days old”
- The model itself — ~76 GB of gated weights, so a free 48 GB slice cannot hold it
So this Space is the planning half: it produces a prompt that matches LTX's prose format and a command that is correct for the published CLI. gradio_app.py in this repo is a working ZeroGPU app for the day the hardware exists — see INFERENCE.md.
Quota maths
Free ZeroGPU is ~5 minutes of GPU a day; PRO is 40. The official app reserves roughly 78 s for a 2 s 1472×832 clip, and xlarge bills double quota — about 156 s of a free day for two seconds of video. The 8 s scene this page builds by default reserves about 196 s, i.e. 392 s billed. That is the whole free day, twice over, for one clip.
Prompting rules that actually change output
- Prose, not a shot list. Numbered beats and sluglines underperform. Describe cuts in sentences: “A hard cut transitions to…”.
- Name the transition at every cut. Hard cut, match cut, dissolve.
- Re-identify the subject after a cut. “The boxer in the frayed vest, now…”
- Say what audio does across the cut. Continue the score, drop to wind, bring dialogue in.
- Physical emotion cues. A tight jaw, a held breath — not “he is sad”.
- Don't paste a prompt written for another video model. Tag syntax does not carry over.
- Don't mix light sources inside one shot. One coherent light logic.
Length and pacing
The duration head reads the action you wrote. If you want a pause, write the pause. If you want a cut at 2.5 s, describe enough action to fill 2.5 s — the model will not invent filler.
For a fixed length, pass --num-frames and omit auto duration. The number must be 8k+1.
Image-to-video
Add one or more --image PATH FRAME_IDX STRENGTH flags. Frame 0 is first-frame conditioning; strength 1.0 pins it. For a first frame, prefer a single continuous take — cutting away from the conditioning image fights the model.
Links
Community workbench built from the published model card. LTX-2.5 is released under the LTX-2.x Community License; outputs are yours under that licence.