MiniMax H3 Image • Image to Image
H3 image editing without the frame-0 confusion
- clip
- vae
- source_image
- positive
- h3_latent
- fitted_source
- requested_frames
- image_prompt
- run_info
Image-to-image with H3 is where the "video model generating stills" thing gets genuinely weird, and H3ImageToImagePrepare - "MiniMax H3 Image • Image to Image" - exists to hide the weirdness from you. The short version: for multi-frame editing, H3 anchors your source image as frame 0 of the temporal packet (that's the FL2VA keyframe path), and the model edits around it. For a true one-frame edit, that anchor is impossible - the frame-0 keyframe would be the only output frame - so the node silently switches to REF2VA-style source conditioning instead. You just pick a profile and it handles the rest.
Inputs worth understanding
The inputs are the normal prepare-node lineup: clip (the Qwen text/vision encoder), vae (the H3 video VAE for multi-frame, or the experimental image VAE for one-frame), source_image, an edit_instruction, and width/height for the generation canvas (the source is fitted to it before encoding). The ones worth understanding:
quality_profile-recommended | 5 framesis the default. One-frame (single image | 1 frame (image VAE)) switches to the REF2VA source-conditioning path, so it expects a hybrid or REF2VA checkpoint plus the H3 image VAE. Multi-frame profiles keep the FL2VA anchor.source_fidelity(default 0.75) - controls how strongly the still prompt asks H3 to preserve identity, pose, composition, and geometry. It is not denoise strength and doesn't alter the sigma schedule. This is the single most-misunderstood knob in the pack.source_fit-crop_center(default),contain_pad, orstretchfor fitting the source to the canvas before VAE encoding.optimize_for_still(default on) - wraps your instruction in a locked-camera still-image prompt and adds source-preservation language. Sampling settings are untouched.
Outputs
Outputs: positive conditioning for the sampler's positive input, h3_latent (which carries the anchored frame-0 keyframe in multi-frame mode), fitted_source for preview/comparison, requested_frames to feed Exact Frame Decode, image_prompt (the final optimized edit prompt), and run_info with the temporal packet and checkpoint expectations.
Practical stuff
The practical stuff first: in every image-to-image workflow you must select a file in each Load Image node, or you'll get a "Load Image - image is missing" error - that's the most common support question for this pack, and it's not a bug, it's an empty input. Second, match your source image to the generation canvas for lower preprocessing cost; crop_center on a wildly different aspect ratio is where you lose composition you didn't mean to lose.
One design note that shows the pack is carefully thought out: the multi-frame output strategy is set to first_stable_edit, so the decoder's recommended_index doesn't hand you the unchanged source anchor. That was a real bug in earlier versions (short image-to-image packets selecting the untouched anchor as the default output) and it's fixed in the current decoder - which is also why the README insists on a full restart after updating, not just a refresh, if you see stale behavior.
Install
Install is 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. ComfyUI 0.30.0+ and the H3 model stack from the official ComfyUI MiniMax H3 guide; the audio VAE is not required for image output.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | MiniMax H3 Qwen text/vision encoder. | |
| vae | VAE | H3 video VAE for multi-frame editing, or the experimental H3 image VAE for one frame. | |
| source_image | IMAGE | Source image used as an FL2VA frame-0 anchor or a one-frame REF2VA reference. | |
| edit_instruction | STRING | Describe the desired final image and the changes to apply to the source. | |
| width | INT | 134432–16384 | Generation canvas width; the source is fitted to this canvas before encoding. |
| height | INT | 76832–16384 | Generation canvas height; the source is fitted to this canvas before encoding. |
| quality_profile | COMBO | recommended | 5 frames | Multi-frame profiles use the FL2VA frame-0 anchor. One frame switches to REF2VA-style source conditioning and therefore requires a hybrid or REF2VA checkpoint plus the H3 image VAE. |
| source_fidelity | FLOAT | 0.750–1 | Controls how strongly the still prompt asks H3 to preserve identity, pose, composition and geometry. This is NOT diffusion denoise strength and does not alter the sigma schedule. |
| source_fit | COMBO | crop_center | How the source is fitted to the generation canvas before VAE encoding. |
| optimize_for_still | BOOLEAN | true | Adds a locked-camera still-image prompt wrapper and source-preservation language. Sampling settings are unchanged. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | Positive FL2VA or one-frame REF2VA image-to-image conditioning for the sampler's positive input. |
| h3_latent | LATENT | Packed H3 audio/video latent; multi-frame mode also anchors the fitted source at frame 0. |
| fitted_source | IMAGE | Source image after the selected crop, pad or stretch operation. |
| requested_frames | INT | Number of image frames that Exact Frame Decode should preserve and decode. |
| image_prompt | STRING | Final edit prompt after optional still-image and source-preservation optimization. |
| run_info | STRING | Temporal packet, source-fit, checkpoint expectations and recommended selection strategy. |