Nodes/ComfyUI_StarNodes/⭐ Star Minimax Latent Upscaler
ComfyUI Node

⭐ Star Minimax Latent Upscaler

MiniMax H3 outputs are huge. Upscale them in latent space instead of re-rendering.

By Starnodes2024·Created 2 years ago·Updated a day ago· 102
⭐ Star Minimax Latent Upscaler
  • latent
  • model
  • clip
  • vae
  • audio_vae
  • audio
  • IMAGE
  • AUDIO
  • FPS
  • LATENT
prompt
seed0
upscale_model(place models in: models/latent_upscale_models)
megapixels1.0
sigmas_preset3 steps
sampler_nameeuler
upscale_pass_audiofalse
align32
enable_chunkingtrue
devicecuda
precisionfp16

MiniMax H3 will happily dream you up 15-second, 2K clips - until you look at your VRAM and quietly rerender everything at 0.5 megapixels. The fix isn't to push the sampler harder; it's to do what every other video workflow does: render small, then upscale. ⭐ Star Minimax Latent Upscaler is that second pass for H3, wrapped into one node: it takes your pass-1 video latent, upscales it with MiniMax's 3D latent-upscaler model, runs a short refine pass, and decodes the video and audio before the video even leaves the node. No sub-graph, no re-sampling from scratch, and - despite the ominous "MiniMax" branding - no API and no key. It's all local weights.

This is a StarNodes pack node, part of the big friendly ~100-node toolbox under the ⭐StarNodes menu. The author (Starnodes2024) keeps the whole MiniMax H3 pipeline self-contained in the pack, so you don't need the original ComfyUI-MiniMaxH3_LatentUpscaler packs this node's logic was inspired by.

How it works

The input latent is a NestedTensor - one bundle holding both the video latent and the audio latent. The node splits them, runs the video half through a 3D latent upscaler model to hit your megapixel target (aspect ratio locked, snapped to the VAE grid so the decode comes out clean), and carries the audio half over untouched. Then it re-noises the combined A/V latent at the schedule's first sigma (~0.90) and runs a short refine pass conditioned on your prompt. The docs call it "a light remix, not a fresh render," which is exactly right - you're sharpening an existing result, not generating a new one. Finally both VAEs decode and you get frames plus a soundtrack.

The inputs that matter

  • latent - your pass-1 A/V latent, e.g. the LATENT output of ⭐ Star Minimax All In One or any H3 sampler chain.
  • model, clip, vae, audio_vae - the H3 diffusion model, the qwen3vl text encoder, and both VAEs. If you've built an H3 workflow you already have all four.
  • prompt + seed - conditioning for the refine pass. Use the same seed as pass 1 to reproduce the All In One behavior; use plain text here, because reference tags (<Picture i> etc.) aren't available in the standalone node.
  • upscale_model - the latent upscaler from models/latent_upscale_models (default minimax_h3_latent_upscaler_3d_fp16.safetensors).
  • megapixels - target size, default 1.0. Keep it larger than the pass-1 size (say 0.5 → 1.0); the upscaler only upscales.
  • sigmas_preset - baked 3/4/5-step schedules; 3 is the default.
  • sampler_name - euler matches the reference workflow, especially with a turbo LoRA (minimax_h3_fl2v_lightx2v_turbo_4step) on the refine model.
  • upscale_pass_audio - "Use 1st pass audio" (default) keeps the pass-1 soundtrack untouched; "Upscale Pass Audio" re-decodes it after the refine pass, where it gets lightly re-noised.

Outputs: IMAGE (decoded frames, wire to a Video Combine), AUDIO, FPS (fixed 24.0), and LATENT - the refined second-pass A/V latent before decoding, handy if you want to inspect or re-decode it yourself.

Installing

Install the pack via ComfyUI Manager (search Starnodes) or:

cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt

Restart, then double-click the canvas and search star. The two H3 upscaler nodes need no extra pip packages beyond the pack's shared requirements - they lean on ComfyUI's built-in MiniMax H3 support. You do need the model file:

# models/latent_upscale_models/minimax_h3_latent_upscaler_3d_fp16.safetensors

plus the usual H3 set (diffusion model, qwen3vl text encoder, video + audio VAEs) in their standard folders.

Gotchas

The megapixels target must be bigger than your pass-1 render - set it backwards and you're downscaling, not refining. On long clips keep enable_chunking on (advanced) to save VRAM, and leave align at 32 to avoid light banding. The upscaler is parked back on CPU after inference so the refine pass gets the VRAM. And the elephant in the room: MiniMax H3's community license geofences out the US, EU, UK and South Korea - if you're in one of those, running these local weights isn't something the license permits, whatever the node happily does.

Category⭐StarNodes/Video

Inputs (17)

NameTypeDefaultDescription
latentLATENTPass-1 MiniMax H3 A/V latent (NestedTensor with video + audio).
modelMODELDiffusion model for the refine pass (e.g. with a turbo LoRA and/or attention patch applied).
clipCLIPMiniMax text encoder (qwen3vl) - encodes the prompt for the refine pass.
vaeVAEMiniMax H3 video VAE.
audio_vaeVAEMiniMax H3 audio VAE.
promptSTRINGPrompt for the refine pass (plain text conditioning; reference tags are not available in the standalone node).
seedINT00–18446744073709550000Noise seed for the refine pass. Use the same seed as pass 1 to reproduce the All In One behavior.
upscale_modelCOMBO(place models in: models/latent_upscale_models)MiniMax H3 latent upscaler from models/latent_upscale_models.
megapixelsFLOAT1.00.1–8Target total megapixels for the upscaled video (aspect ratio of the pass-1 canvas is kept).
sigmas_presetCOMBO3 stepsRefine-pass noise schedule: 3 steps: 0.9035, 0.6316, 0.3158, 0.0000 | 4 steps: 0.9035, 0.8000, 0.6316, 0.3158, 0.0000 | 5 steps: 0.9231, 0.8780, 0.8000, 0.6316, 0.3158, 0.0000
sampler_nameCOMBOeulerSampler for the refine pass (euler matches the reference workflow, e.g. with a turbo LoRA on the refine model).
upscale_pass_audioBOOLEANfalseWhich pass the audio output is decoded from. 'Use 1st pass audio' keeps the pass-1 soundtrack untouched; 'Upscale Pass Audio' decodes the audio after the refine pass (it is re-noised and rewritten there).
alignINT321–512Pixel-space alignment of the upscaled size. 32 is recommended to avoid light banding.
enable_chunkingBOOLEANtrueTemporal chunking saves VRAM on long videos. Disable for short clips for pure full-context inference.
deviceCOMBOcudaExecution device for the upscaler model (ROCm uses 'cuda').
precisionCOMBOfp16Precision the upscaler model runs at.
audiooptAUDIOOptional soundtrack passthrough: when the audio toggle is 'Use 1st pass audio', this audio goes straight to the AUDIO output instead of the decoded pass-1 audio (e.g. the original soundtrack of a source video). Ignored when the toggle is 'Upscale Pass Audio'.

Outputs (4)

NameTypeDescription
IMAGEIMAGE
AUDIOAUDIO
FPSFLOATFixed frame rate of the video (24.0).
LATENTLATENTThe refined second-pass A/V latent, before VAE decoding.