π π £π § LTXV Looping Sampler
Long and looping LTX clips
- model
- vae
- noise
- sampler
- sigmas
- guider
- latents
- optional_cond_images
- optional_guiding_latents
- optional_positive_conditionings
- optional_negative_index_latents
- optional_normalizing_latents
- denoised_output
LTXV Looping Sampler is the node you use when you want a video longer than the model comfortably makes in one pass - or one that loops back on itself. It samples the clip in overlapping temporal chunks and stitches them together, carrying context across the seams so the motion stays continuous instead of jump-cutting every few seconds. If LTXV Tiled Sampler is "bigger frames," this is "more frames."
It ships in ComfyUI-LTXVideo, Lightricks' official pack. The demand for it is real: the LTX community's flagship use case became music videos and lipsync, where people generate 10β12 second clips and chain them, and the practical trick of adding overlap so the model has time to establish motion is exactly what temporal tiling formalizes.
How it works
The sampler breaks the timeline into windows of temporal_tile_size latent frames with a temporal_overlap between them. Each window is denoised, and the overlap region is shared with its neighbor so the hand-off is smooth. Because the windows overlap, you can feed the tail back to the head to close a loop, or run enough windows to reach a much longer total length than a single sampler pass would allow. It also inherits spatial tiling (horizontal_tiles / vertical_tiles / spatial_overlap), so you can go long and high-res in the same node if your patience holds.
The inputs that matter
The core sampling sockets are the usual LTX set - model, vae, noise, sampler, sigmas, guider, and the input latents. The controls that define the behavior:
- temporal_tile_size - frames per window (default 80). Bigger windows keep motion coherent but use more VRAM.
- temporal_overlap - shared frames between windows (default 24). This is the continuity dial; too little and you get visible seams in the motion.
- temporal_overlap_cond_strength (default 0.5) - how strongly the overlap enforces agreement between windows.
- guiding_strength, guiding_start_step / guiding_end_step, and optional_guiding_latents - let you steer the whole sequence toward a reference over a chosen slice of the denoise.
You can also pass optional_cond_images with optional_cond_image_indices to pin keyframes at specific points, and adain_factor to normalize color/statistics across windows so the clip doesn't drift in tone. The single output is denoised_output (a LATENT) for your VAE Decode.
Installing it
Via ComfyUI Manager: search LTXVideo under Install Custom Nodes, install, restart. Manually: cd ComfyUI/custom_nodes && git clone https://github.com/Lightricks/ComfyUI-LTXVideo, restart. It appears under sampling. The LTX checkpoint and, on LTX-2, the Gemma text encoder are the large downloads (first-use), so keep the 100GB+ disk headroom the pack asks for.
Where people get burned
- Overlap too small. The seam between windows is where continuity breaks - a hard cut or a lurch in motion. If your long clip stutters at regular intervals, raise
temporal_overlapbefore anything else. - Color/brightness drift across windows. Long generations tend to wander in tone. That's what
adain_factoris for - nudge it up if later sections look washed out compared to the start. - Expecting a seamless loop for free. Closing a loop cleanly still takes attention to the overlap and the conditioning at the wrap point; it's not a one-click toggle.
- VRAM and time blow-ups. Long temporal tiles plus spatial tiles multiply the work. If you're OOM or the run crawls, shrink
temporal_tile_sizefirst - and remember system RAM (64GB is the comfortable floor for low-VRAM LTX-2 setups) is often the real bottleneck. - Fast motion smudging. LTX still softens fast motion; the production habit is an occasional Wan video-to-video pass to clean it up rather than fighting it in the sampler.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The diffusion model to use. | |
| vae | VAE | The VAE to use. | |
| noise | NOISE | The noise to use. | |
| sampler | SAMPLER | The sampler to use. | |
| sigmas | SIGMAS | The sigmas to use. | |
| guider | GUIDER | The guider to use, must be a STGGuiderAdvanced. | |
| latents | LATENT | The latents to use for creating the long video, they can be guiding latents or empty latents when no guidance is used. | |
| temporal_tile_size | INT | 8024β1000 | The size of the temporal tile to use for the sampling, in pixel frames, in addition to the overlapping region. |
| temporal_overlap | INT | 2416β80 | The overlap between the temporal tiles, in pixel frames. |
| guiding_strength | FLOAT | 1.000β1 | The strength of the conditioning on guiding latents, when optional_guiding_latents are provided. |
| temporal_overlap_cond_strength | FLOAT | 0.500β1 | The strength of the conditioning on the latents from the previous temporal tile. |
| cond_image_strength | FLOAT | 1.000β1 | The strength of the conditioning on the optional_cond_images. |
| horizontal_tiles | INT | 11β6 | Number of horizontal spatial tiles. |
| vertical_tiles | INT | 11β6 | Number of vertical spatial tiles. |
| spatial_overlap | INT | 11β8 | Overlap between spatial tiles. |
| optional_cond_imagesopt | IMAGE | The image to use for conditioning the first frame in the video (i2v setup). If not provided, the first frame will be unconditioned (t2v setup). The image will be resized to the size of the first frame. | |
| optional_guiding_latentsopt | LATENT | The latents to use for guiding the sampling, typically with an IC-LoRA. | |
| adain_factoropt | FLOAT | 0.000β1 | The strength of the AdaIn operation used to fix the statistics of each new generated temporal tile, to prevent accumulated oversaturation. |
| optional_positive_conditioningsopt | CONDITIONING | Optional way to provide changing positive prompts, one per temporal tile, using the MultiPromptProvider node. | |
| optional_negative_index_latentsopt | LATENT | Special optional latents to condition on a negative index before each new temporal tile as a way to provide long term context during video generation. | |
| guiding_start_stepopt | INT | 00β1000 | The step at which the guiding latents start to be used. |
| guiding_end_stepopt | INT | 10000β1000 | The step at which the guiding latents stop to be used. |
| optional_cond_image_indicesopt | STRING | 0 | The indices of the keyframes to use for the sampling, separated by commas. The indices are counted from the end of the video. |
| optional_normalizing_latentsopt | LATENT | The latents to use for normalizing the output latents, they will be used to normalize the output latents to the same statistics as the input latents. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| denoised_output | LATENT | β |