MiniMax H3 Image • Exact Frame Decode
MiniMax H3's decode step, minus the guesswork
- samples
- vae
- frames
- decoded_frames
- decode_info
- recommended_index
Here's the thing about MiniMax H3 that trips everyone up: it's a video model. Even when you only want one still image, it generates a temporal packet of frames - 1, 5, 9, 13, or 20 of them, depending on your profile - and denoises them together. H3ImageDecode (display name "MiniMax H3 Image • Exact Frame Decode") is the step that turns that sampled latent back into real pixels, and it's the one node in this pack that knows the packet shape without being told.
How it reads the packet
The other nodes in the pack hide metadata inside the latent. When a prepare node (Text to Image, Image to Image, Reference Edit, or Advanced Combined) builds its h3_latent, it stamps in how many temporal frames were requested and which selection strategy the workflow intends to use. This decode node reads that metadata back out. Give it the sampled samples and the H3 VAE, and it decodes, crops each batch item to the requested frame profile, and flattens the result batch-major so you get a standard ComfyUI IMAGE tensor ([N,H,W,C]) - the shape every downstream image node expects.
What it returns
What it returns is where it earns the "exact" in its name:
frames- the complete decoded profile(s), flattened. Five frames in, five frames out by default.decoded_frames- total image count across all batch items (handy if you're batching).decode_info- a per-item diagnostic string: natural packet size vs. the kept profile, and which still it prefers.recommended_index- the zero-based still index it thinks you should keep. This is the output that makes the whole thing painless.
The recommended index isn't a blind "frame 0." It's mode-aware: text-to-image and reference-edit packets get a stable-quality recommendation, multi-frame image-to-image gets a first-stable-edit one. You wire recommended_index straight into the H3ImageFrameSelector (Single Image Output) node, which is exactly how the bundled workflows are connected.
The two inputs
Only two inputs, and both are required: samples (the sampled H3 latent) and vae (the MiniMax H3 video VAE). Use the video VAE for any multi-frame profile; the experimental single-image VAE is only for true one-frame workflows. Don't try to substitute a regular image VAE decoder - it won't handle the nested H3 audio/video latent.
Install and the stale-node trap
Getting it installed is just the pack: ComfyUI Manager (search MiniMax H3 Image Studio) or git clone https://github.com/astropuzzo/ComfyUI-MiniMax-H3-Image-Studio.git into custom_nodes, then restart. It has no extra Python dependencies, just ComfyUI 0.30.0+ with H3 support and the model files from the official ComfyUI MiniMax H3 guide (the pruned INT8 ConvRot diffusion model, the Qwen text encoder, and the video VAE).
If your node is missing the recommended_index output, your backend is stale - that output arrived in v15, and the current decoder is what the workflows depend on. Update the pack, stop every ComfyUI process, start it again, and hard-refresh the browser. Don't try to patch around it by changing values; the workflow will keep rejecting the old decoder.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| samples | LATENT | Sampled H3 latent. Image Studio metadata specifies whether each batch item keeps a 1-, 5-, 9-, 13-, or 20-frame temporal profile. | |
| vae | VAE | MiniMax H3 video VAE used to decode the video latent into an IMAGE batch. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | Complete decoded profile(s), flattened batch-major for standard ComfyUI IMAGE output. |
| decoded_frames | INT | Total number of emitted images across all batch items. |
| decode_info | STRING | Natural packet size, kept profile size and preferred-frame diagnostic information per batch item. |
| recommended_index | INT | Preferred zero-based still index for the first batch item. Connect it to Single Image Output. |