LTX25 Temporal Split Params
Chopping your LTX2.5 clip into chunks without leaving visible seams
- temporal_split_param
Long LTX2.5 clips don't fit in VRAM as one piece, so LTX25 Ultimate Upscale cuts them into overlapping time chunks and re-samples each one. This node is where you set how that cutting happens - the outer loop of the whole pipeline. Its one output, temporal_split_param, goes into the main node's temporal_split_param input. Leave it unconnected and the whole latent is processed as a single chunk, which defeats the point of the pack.
Four settings, and only two really demand your attention at the start.
The settings
chunk_length(default 97) - target pixel frames per chunk. 97 is roughly 4 seconds at 24fps. The hard rule, straight from the tooltip:(n-1) % 8 == 0. That's LTX's 8k+1 temporal grid - every LTX latent is 1 token plus multiples of 8. The node raises aValueErrorif you get this wrong, so you can't silently feed it a bad number.temporal_overlap(default 9) - frames of overlap between consecutive chunks. 9 is one latent token, and it's the recommended value. It must also satisfy the 8k+1 rule and be smaller thanchunk_length.anchor_mode- how the next chunk relates to the previous chunk's already re-sampled result. Three options:full(default): the entire overlap band is copied from the previous chunk and pinned via the noise mask. The stitch cross-fade then mixes identical content, so the overlap mostly just shifts where the seam lands.first_frame: only the first latent token (~8 frames) is pinned; the rest of the overlap re-samples freely and the cross-fade blends across the band. This is the "H3-style" mode, and heretemporal_overlapactually controls how wide the visible transition is.ramp: the overlap is initialized from the previous chunk and the noise mask ramps linearly from the pin strength at the seam to fully free at the band end - a true temporal fade whose width istemporal_overlap.
anchor_strength(default 0.999) - how hard the seam side is pinned. 1.0 keeps previous content exactly; 0.999 is the model's image-to-video default; 0.0 disables anchoring and leaves you with cross-fade only.
For a first run, the defaults are genuinely fine: chunk_length 97, overlap 9, anchor_mode full, anchor_strength 0.999. Chunking a 4-second clip into ~4.1s pieces with a single-token overlap costs a small amount of redundant compute (the README's ballpark for the temporal axis is ~1.13x), and in exchange your VRAM peak is bounded to one chunk's activations plus the model.
Why you care about chunk length at all
This is the VRAM lever on the time axis. Per-piece memory scales roughly with chunk_length × tile_width × tile_height. Too large and the piece spills into the PCIe-offload regime this whole design exists to avoid - 15-60x slower per byte. Too small and the fixed overlaps eat the budget, since every axis pays (size + overlap) / size. The play is the same as for tiles: the largest chunk that keeps peak VRAM just under capacity, watched on ComfyUI's meter during the first chunk. If your checkpoint can't stay resident even in small pieces, smaller chunks still help by minimizing spill traffic.
Installing
Part of the bbaudio-2025/Comfyui-MMH3-UltimateUpscale pack. Install via ComfyUI Manager (search "Comfyui-MMH3-UltimateUpscale") or:
cd ComfyUI/custom_nodes
git clone https://github.com/bbaudio-2025/Comfyui-MMH3-UltimateUpscale
Restart, no pip installs needed. Requires a recent ComfyUI that ships LTX support (comfy_extras.nodes_lt).
Troubleshooting
chunk_length must satisfy (n-1) % 8 == 0- you typed something off the LTX grid. Pick 9, 17, 25, 33, … 97, and you're fine.temporal_overlap must be smaller than chunk_length- overlap can't swallow the chunk.- Hard cut visible at a seam - raise
anchor_strengthtoward 1.0, or switchanchor_modetofirst_frame/rampso the transition has a width to blend. If the seam shows detail mismatch inside the pinned band, the previous chunk's output was likely too different; that's a sampling-consistency problem, not a split problem.
This whole LTX25 line is marked "highly experimental" by the author, so treat seams you can't tune out as a feature of the bleeding edge rather than a bug in your workflow.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| chunk_length | INT | 979–100000 | Target pixel frames per chunk. MUST satisfy (n-1) % 8 == 0 (the LTX 8k+1 grid). 97 = ~4s @24fps. |
| temporal_overlap | INT | 91–100000 | Pixel frames of overlap between consecutive chunks. MUST satisfy (n-1) % 8 == 0. Recommended 9 (one latent token). With 'full' anchor_mode this mostly shifts the seam position; with 'first_frame'/'ramp' it controls the visible seam transition width. |
| anchor_mode | COMBO | full | How the next chunk's overlap band relates to the previous chunk's re-sampled result (pin strength set by 'anchor_strength'). 'full' (default, original behaviour): the ENTIRE overlap is copied from the previous chunk and pinned via the noise mask (mask = 1 - anchor_strength); the stitch cross-fade mixes identical content, so temporal_overlap mostly just shifts the seam position. 'first_frame' (Mode A, H3-style): only the FIRST latent token (~8 frames) is copied and pinned; the rest of the overlap re-samples freely and the stitch cross-fade blends the two versions across the whole band - temporal_overlap visibly controls the seam transition width. 'ramp' (Mode B, temporal fade): the overlap is initialised from the previous chunk and its noise-mask ramps linearly from (1 - anchor_strength) at the seam to 1.0 at the band end - a true temporal fade whose width IS temporal_overlap. |
| anchor_strength | FLOAT | 0.9990–1 | Pin strength at the seam side of the overlap band, used by every anchor mode (LTX image-to-video noise_mask). 1.0 = keep previous content exactly, 0.999 = model default, 0.0 = disable anchoring (cross-fade only). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| temporal_split_param | LTX_TEMPORAL_PARAM | Temporal split settings consumed by 'LTX25 Ultimate Upscale'. |