LTXVLatentUpsampler
The 2x latent upscale that makes LTX-2 quality sane
- samples
- upscale_model
- vae
- LATENT
LTX-2 has a dirty secret: it doesn't render at the resolution you ask for. It renders at half that internally and upscales, which is why everyone who wanted "Wan quality at 720p" learned to request 1080p and eat the VRAM. LTXVLatentUpsampler is the proper escape hatch: a real learned upscaler that doubles your latent before decode, so you get the quality of a big render at a fraction of the cost. It's the difference between a blurry 540p-looking clip and something that holds up.
Three inputs, one output:
- samples - the LATENT you just sampled (usually at a low resolution like 768x512).
- upscale_model - a LATENT_UPSCALE_MODEL loaded with the Load Latent Upscale Model node. That's the learned upscaler, not an interpolation.
- vae - the main video VAE. It's needed for the normalization dance: the source un-normalizes the latent to real VAE space, runs the upscaler, then re-normalizes. Don't skip it.
- Output: a LATENT at 2× resolution, ready for VAE decode.
Why a model instead of plain interpolation? Because upscaling a latent with bicubic throws away the fine structure that the model then has no way to recover - the 16+ channel latent encodes texture and detail that a resize destroys. The learned upscaler reconstructs that structure in latent space, which is exactly what LTX-2.3's own upscaler files ship to do (the 2.3 release bundles latent upscalers alongside the dev/distilled checkpoints).
Where it fits
- The standard LTX-2/2.3 quality route: generate at a modest resolution, latent-upscale 2×, then decode. This is the workflow Lightricks' own templates use, and it's why "1080p" output is really ~540p upscaled - the upscale step is doing real work, not adding fake pixels.
- Speed-first drafting: bang out quick low-res candidates for seed-hunting (LTX's prompt adherence is its weak axis, so you'll be generating many), then latent-upscale only the winners. At LTX speeds this is seconds per candidate.
- VRAM management: sample small, upscale in latent, decode - you get big output without ever holding a big latent through sampling.
The honest catches
- It doesn't tile. The source upsamples the whole latent in one shot with a memory estimate, so on a tiny card a very long clip can still OOM here. Render shorter clips and upscale, or do the upscale per-segment.
- It's marked experimental in the ComfyUI source, and it's a 2× node - one pass doubles, so going 4× means running it twice, with a mild quality cost per pass.
- The model file is the failure point. It lives in
models/latent_upscale_modelsand is a separate download from the main checkpoint. The "Can't download the latent upscale models" and "where do I put this" threads are a recurring r/comfyui theme - if the Load Latent Upscale Model node's dropdown is empty, that folder is empty. In the 0.9.x era, the same trick (render low, latent-upscale, restore faces) was the community's answer to the 13B's soft output - run the upscaler pass before decode and it brings detail back that the small render lost.
Worth it? For LTX specifically, yes - the upscale pass is the difference between the model's reputation for softness and output that holds its own against slower models. It's a genuinely good deal.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| samples | LATENT | — | |
| upscale_model | LATENT_UPSCALE_MODEL | — | |
| vae | VAE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |