LTX-2.3 Latent Upscale x2 ⚡
LTX-2.3 x2 upscale
- latent
- upscale_model
- vae
- LATENT
LTX-2.3's EditAnything recipe has a quirk that sounds backwards until you try it: you get better results sampling at half your target resolution and upscaling afterward. The same is baked into Wan2GP's pipeline, and it's because at full resolution the source-video guide tokens drown out the subject you're trying to add. The official two-stage sampler in this pack does the upscale internally. This node is that same x2 spatial upscale, exposed as a standalone step so you can build your own two-stage flows.
It's a thin wrapper around the official LTX-2.3 spatial upscaler, applied to the video half of the joint AV latent - like the crop-guide node, it has to split the NestedTensor((video, audio)) pair, upscale the video stream, and rejoin them. Output is a LATENT ready for another sampling pass.
The inputs
latent(LATENT) - the joint AV latent from your sampler.upscale_model(LATENT_UPSCALE_MODEL) - the official spatial upscaler, loaded with comfy-core'sLatentUpscaleModelLoader(pick the LTX-2.3 spatial upscale model file). Not a VAE or an ESRGAN - it's a learned latent-space upscaler made for this model.vae(VAE) - the video VAE, used for latent statistics during upscaling.
Output is the upscaled LATENT.
Where it fits
The EditAnything two-stage flow is the canonical use: sample the ADD at half resolution → LTX-2.3 Crop Video Guide → this node → a second LTX-2.3 KSampler on the refine (3 steps) schedule → decode. The two-stage sampler node in this pack runs the identical upscale internally, so if your graph goes through that, you don't need this node at all. Reach for it when you're composing your own passes.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
pip install --upgrade gguf
Restart. The upscale model file itself is part of the LTX-2.3 A/V kit - see the README's file table - and loads through core's LatentUpscaleModelLoader. Node under 🤖 CCTech/LTX-2.3.
Gotchas
The one real trap: upscale only after cropping the video guide, and feed the cropped conditioning to the refine pass. The guide tokens carry keyframe coordinates in the RoPE encoding; if you upscale first, those coordinates are now misaligned with the latent, and your refine pass samples garbage. Also note the upscale only touches the video stream - audio stays where it was, which is what you want, since the audio VAE's latent has its own time dimension and shouldn't be resized by a spatial upscaler.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | — | |
| upscale_model | LATENT_UPSCALE_MODEL | — | |
| vae | VAE | Video VAE (for the latent statistics). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |