MiniMax H3 Video Upscale
Bigger H3 frames without re-rolling the seed
- images
- upscale_model
- IMAGE
H3 generates at a default 848×480, which is fine for iterating and not enough for anything you'd call "finished." MiniMaxH3VideoUpscale is the spatial upscale step - it makes your decoded frames bigger before they hit export, and it does it without ever re-running the sampler, so the seed and the motion stay exactly as generated.
The mechanism is a clean two-tier design, and which tier you hit changes what you're actually doing. If you wire an upscale_model (UPSCALE_MODEL) into the optional input, the node delegates to ComfyUI's own ImageUpscaleWithModel node - that's the ESRGAN-family path, a real learned upscaler that invents plausible detail while upscaling. If you leave it empty, it falls back to plain interpolation via comfy.utils.common_upscale with your choice of lanczos, bilinear, bicubic, or nearest-exact.
That distinction is the whole game, and the KB's upscaling essay has the vocabulary for it: more pixels vs more detail. Lanczos is "more pixels" - it adds no content, can't hallucinate, runs in milliseconds, and is the right answer when your source is already sharp. A model upscaler is "more detail" - it invents texture and will happily rewrite a face. For video there's an extra wrinkle: a per-frame model upscale has no temporal memory, so it can shimmer or flicker between frames on fine detail, which is why many people land on lanczos for footage and save the model pass for stills. Know which job you're asking it to do.
Inputs:
images(required) - your decoded frames.upscale_method-lanczos(the safe default),bilinear,bicubic, ornearest-exact.scale_factor(1–4, step 0.25, default 2) - linear scale per axis. 2× on 848×480 gives you 1696×960.upscale_model(optional) - an ESRGAN-style model loaded through ComfyUI's upscale-model loader. If present, it wins overupscale_method.
Output. One IMAGE of the upscaled frames, same type as input - drop it between VAE Decode and MiniMaxH3VideoExport.
Install. Standard pack fare:
cd ComfyUI/custom_nodes
git clone https://github.com/TensorVizion/Minimax-H3-Video-Music-Nodes
or ComfyUI Manager → search the pack title → restart. Python deps are torch, torchaudio, numpy, Pillow; an upscale model is the only extra download, and only if you want the model tier.
Where it bites. The obvious trap is expecting the model tier to run off scale_factor alone - you need to actually have an upscale model loaded and wired in; without one you silently get lanczos, which is a different result. Second, remember the aspect-vs-total-pixels math: scale_factor is per-axis, so 2× is 4× the pixels - a 4× pass on long clips eats VRAM and time fast. Third, the video flicker issue above is real: if your upscaled footage shimmers, that's the model upscaler working frame-by-frame, and the fix is either lanczos or a temporally-aware upscaler, not more settings here. And it's worth repeating the pack-wide context: this is a fresh single-commit pack, the H3 weights are ~42.5GB with no consumer-VRAM floor yet, and the license geofences local use out of the US, EU, UK, and Korea - the upscale node itself is the boring, reliable part of that stack, which is exactly what you want from it.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| upscale_method | COMBO | 4 options: lanczos, bilinear, bicubic, nearest-exact | |
| scale_factor | FLOAT | 2.001–4 | — |
| upscale_modelopt | UPSCALE_MODEL | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |