LTX 2.3 Spatial Upscaler: Two-Stage Rendering
Jul 30, 2026

LTX 2.3 Spatial Upscaler: Two-Stage Rendering

What the LTX 2.3 spatial upscaler does, why it is not an ESRGAN-style post-process, which file to download (x2 1.1 vs x1.5), and where the temporal upscaler fits.

A lot of people download ltx-2.3-spatial-upscaler-x2-1.1.safetensors because a pipeline refused to start without it, use it without knowing what it does, and never think about it again.

Worth thinking about, because this 996 MB file is not an upscaler in the sense you are used to. It is not ESRGAN. It is not a post-process you bolt on after rendering. It is stage two of the model's own generation process, operating on latents before anything is decoded to pixels — and understanding that changes how you set up every render.

This guide explains the two-stage architecture, which upscaler file to use, and where the less-discussed temporal upscaler fits. Sourced from the LTX-2 pipeline documentation, the LTX-2.3 model card, and the official ComfyUI tutorial, checked July 2026.

Latent upscaling vs. pixel upscaling

Here is the distinction that everything else follows from.

A conventional upscaler takes finished frames and enlarges them. It can sharpen and invent plausible texture, but it never revisits the content — if the model rendered a hand wrong at low resolution, a pixel upscaler renders a larger wrong hand.

The LTX 2.3 spatial upscaler works inside the latent space, mid-generation. The official pipeline description is explicit about the sequence: stage 1 generates low-resolution video with multimodal guidance, then stage 2 upsamples to 2x resolution with distilled LoRA refinement. The model is still denoising after the upscale. It can still change what is in the frame.

That is why ComfyUI puts the file in models/latent_upscale_models/ rather than models/upscale_models/. Different folder, different job — and putting it in the familiar folder is a common setup mistake that surfaces as a mysteriously missing model.

The practical consequence: detail added in stage 2 is generated, not interpolated. Your stage-1 output is a composition draft, not a final image being enlarged.

Which upscaler file to download

From the official Hugging Face repository:

FileSizeNotes
ltx-2.3-spatial-upscaler-x2-1.1.safetensors996 MBCurrent 2x. The one the official quickstart uses.
ltx-2.3-spatial-upscaler-x2-1.0.safetensors996 MBPrevious 2x release.
ltx-2.3-spatial-upscaler-x1.5-1.0.safetensors1.09 GB1.5x variant — a smaller resolution jump.
ltx-2.3-temporal-upscaler-x2-1.0.safetensors262 MBTemporal, not spatial. See below.

Default to x2-1.1. It is what Lightricks' own quickstart command downloads, and the two-stage pipelines are documented around 2x upsampling.

The x1.5 variant is the interesting option nobody discusses. A smaller jump means stage 1 runs closer to target resolution, which means less is left for stage 2 to invent. If your stage-2 renders keep changing details you liked in stage 1, the 1.5x path is worth a test — you are trading some efficiency for less drift between stages.

Note the odd size relationship: the 1.5x file is larger than the 2x file. Not a mistake, just a reminder that these are trained models with their own parameter counts, not scaling algorithms.

The temporal upscaler: read the fine print

ltx-2.3-temporal-upscaler-x2-1.0.safetensors upscales in time rather than space — more frames, smoother motion, rather than more pixels.

The official README's status note is the important part: the temporal upscaler is supported by the model and will be required for future pipeline implementations. In other words, the capability exists in the weights, but the shipped pipelines are not built around it yet.

So download it if you want to be ready, but do not expect a --temporal-upsampler-path flag to be waiting for you in today's two-stage pipeline. This is one of those details where community tutorials confidently describe a workflow the official code does not yet expose.

Which pipelines require it

Not optional in most of the stack:

  • TI2VidTwoStagesPipeline — the recommended production pipeline; stage 2 is the upsampling stage
  • TI2VidTwoStagesHQPipeline — same structure with the res_2s second-order sampler
  • DistilledPipeline — even the fast path requires a spatial upsampler
  • A2VidPipelineTwoStage — stage 1 at half resolution with audio conditioning, stage 2 upsamples 2x while keeping the audio fixed
  • ICLoraPipeline, HDRICLoraPipeline, LipDubPipeline — all two-stage

The exception is TI2VidOneStagePipeline, which skips upsampling entirely and typically outputs around 512x768. The docs label it as primarily for educational purposes — useful for understanding the pipeline, not for output you intend to publish.

On the CLI it is a single argument:

--spatial-upsampler-path models/ltx-2.3/ltx-2.3-spatial-upscaler-x2-1.1.safetensors

Want the two-stage result without assembling the stack? Two-stage rendering is what makes LTX 2.3 output look finished — and it is also four files and a config away. ltx23.app runs LTX 2.3 in the browser if you want the output without the pipeline assembly.

Why generating low and upscaling beats generating high

The two-stage design is not a compromise forced by hardware. It is a better use of compute, for a reason that is easy to feel once you work this way:

Attention cost scales with sequence length. More pixels and more frames mean more tokens, and the expensive part of a diffusion transformer scales badly with that. Generating at half resolution means every step of stage 1 costs a fraction of what a full-resolution step would.

That buys you two things:

  1. Cheap composition iteration. Framing, motion, and timing are all decided in stage 1. Getting those wrong at full resolution is the single most wasteful thing you can do.
  2. Detail where it counts. Stage 2 refines with the distilled LoRA at the higher resolution — where fine detail actually matters.

It also explains an otherwise puzzling requirement: most two-stage pipelines need ltx-2.3-22b-distilled-lora-384-1.1.safetensors because the distilled LoRA is what drives the stage-2 refinement. The exceptions the README lists are DistilledPipeline, ICLoraPipeline, and LipDubPipeline.

Resolution rules to respect

  • Width and height must be divisible by 32 — at every stage. Pick a stage-1 resolution that stays legal after 2x.
  • Frame count follows 8k+1 (97, 193, …).
  • The HDR pipeline exposes --spatial-tile to control tiled VAE decode tile size, and the docs suggest reducing it on lower-VRAM GPUs. That is the closest thing to a VRAM dial on the decode side.

Picking a stage-1 resolution that doubles into an illegal target is a genuinely common self-inflicted error. Work backwards from the output you want.

FAQ

Do I need the spatial upscaler? For any two-stage pipeline, yes — including the fast DistilledPipeline. Only the single-stage educational pipeline skips it.

x2 or x1.5? x2-1.1 by default. Try x1.5 if stage 2 keeps altering details you approved in stage 1.

Is this the same as ESRGAN or a Topaz-style upscaler? No. It operates on latents mid-generation and the model continues denoising afterward, so it can change content — a pixel upscaler cannot.

Where does it go in ComfyUI? ComfyUI/models/latent_upscale_models/, not upscale_models/.

What does the temporal upscaler do today? It is supported by the model, but the README states it will be required for future pipeline implementations — the current shipped pipelines are built around the spatial one.

Can I run stage 2 alone on an existing video? That is not what the shipped two-stage pipelines expose. For fixing an existing clip, RetakePipeline (region regeneration) is the intended tool.

Bottom line

The spatial upscaler is not an accessory — it is half of how LTX 2.3 renders. Stage 1 decides what the shot is; stage 2 decides how good it looks, with the model still generating rather than merely enlarging.

Set your stage-1 resolution deliberately, keep it divisible by 32 after doubling, and use x1.5 when stage 2 drifts too far from what you approved. Or skip the assembly entirely and generate at ltx23.app.

Sources

Verified July 2026 against primary documentation:

  1. Lightricks/LTX-2.3 — Hugging Face repository — upscaler file names and sizes, resolution and frame constraints
  2. LTX-2 available pipelines documentation — two-stage structure, per-pipeline upscaler requirements, one-stage output size
  3. Lightricks/LTX-2 — official GitHub repository — quickstart download list, temporal upscaler status, distilled LoRA requirement
  4. LTX-2 installation & CLI flags--spatial-upsampler-path usage
  5. LTX-2 pipeline selection guide — one-stage vs two-stage guidance
  6. LTX-2 optimization documentation — memory cleanup between stages, quantization
  7. ComfyUI official LTX-2.3 tutoriallatent_upscale_models folder placement
  8. LTX-2.3-22b-IC-LoRA-HDR — HDR pipeline and tiled decode context
  9. ComfyUI-LTXVideo — official integration repository
  10. google/gemma-3-12b-it-qat-q4_0-unquantized — required text encoder for these pipelines
  11. LTX-2 technical paper (arXiv 2601.03233) — latent architecture background

File sizes are as published on Hugging Face at the time of writing.

Mulai Membuat dengan LTX 2.3 — Video AI Gratis Online

Buat video AI pertama Anda secara gratis — masukkan prompt teks dan biarkan model LTX 2.3 menangani sisanya.