FL MiniMax H3 Latent Upscale
Upscaling H3 video without a VAE round trip
- latent
- latent
FL MiniMax H3 Latent Upscale is the "fast" answer to the question every H3 user asks two renders in: how do I make this bigger? Its approach is the classic latent-space hack - interpolate the video stream directly in latent space, no decode, no re-encode. What it preserves is the interesting part: the video duration, the original audio latent tensor, shot boundaries, motion-context metadata, reshot data, everything nested inside that H3 latent dictionary stays put.
That's worth calling out because H3 latents aren't a flat tensor. They're nested - video and audio live together, with metadata riding along. Run one of these through a generic latent node that doesn't know about H3 and you can lose the audio or the shot plan silently. This node is written against the nested format, so it's the safe spatial resize.
The honest tradeoff
This node does not create detail. It enlarges pixels in latent space; whatever was in the latent, scaled up, is what you get. The README is blunt about it: use it for a fast final enlargement, or pair it with a low-denoise refinement pass if you want actual detail at the new size. And the refinement path is where Apply Timeline comes in - conditioning is spatial, so after you resize you rebuild it:
Base KSampler → FL MiniMax H3 Latent Upscale
→ FL MiniMax H3 Apply Timeline
→ low-denoise KSampler → decode
The cost warning is real: a 2x spatial upscale creates roughly 4x as many video tokens for downstream sampling. Latent upscale is cheap in isolation; the sampler that runs on the result is not.
Inputs and output
latent- the native nested H3 video/audio latent.target_long_side- target pixel size for the longest side (default 1024). Aspect ratio is preserved and both output dimensions stay aligned to 32 pixels, which is H3's canvas alignment.upscale_method- interpolation applied directly to each spatial latent slice, defaulting tobislerp. The README recommends bislerp as the general-purpose method here.latent(output) - the spatially upscaled latent, unchanged in duration, audio and metadata.
Wire the output straight into a video VAE for a quick enlargement, or into Apply Timeline (then a low-denoise sampler) when you want the result to hold up at the new resolution. Keep the pixel-refinement instinct in your back pocket too: if you're already doing a beat-scheduled multi-shot render, FL MiniMax H3 Beat Pixel Upscale KSampler does decode → resize → re-encode → refine per render automatically, and is usually the better tool for that job.
Gotchas
If your sampler rejects the latent or you see shape errors downstream, check whether some node between here and the sampler flattened the nested structure - this node is metadata-preserving, but whatever you chain after it might not be. And don't expect the upscale to rescue a soft base render; the base render quality is the ceiling unless you pay for the refinement pass. Install is the shared pack story: ComfyUI Manager → FL MiniMax H3, or clone https://github.com/filliptm/ComfyUI-FL-MiniMaxH3.git into custom_nodes and restart. No extra dependencies, no model downloads.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | Native nested MiniMax H3 video/audio latent. | |
| target_long_side | INT | 102432–16384 | Target pixel size for the longest side. Aspect ratio is preserved and both output dimensions stay aligned to 32 pixels. |
| upscale_method | COMBO | bislerp | Interpolation applied directly to each spatial H3 latent slice. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | Spatially upscaled H3 latent with unchanged video duration, audio, and metadata. |