What Is MiniMax H3? How It Works and How to Generate Image to Video in ComfyUI

- What You'll Learn in This Article
- What Is MiniMax H3?
- Exploring the ComfyUI "MiniMax H3: Image to Video" Template
- Downloading the Models Required for MiniMax H3
- Input Materials for "MiniMax H3: Image to Video"
- About the "MiniMax H3: Image to Video" Nodes
- About Length in MiniMax H3
- How to Write MiniMax H3 Prompts
- About Prompt Embeddings
- About the res_multistep Sampler
- How to Use "MiniMax H3: Image to Video"
- Generation Results with the Official MiniMax H3 Workflow
- Customizing the Official MiniMax H3 Workflow
- Summary
This time I'll introduce how to use "MiniMax H3." "MiniMax H3" is an open-weight AI video generation model alongside WAN and LTX. With H3, you can generate video and audio at the same time. Voices, sound effects, and background music don't need to be added afterward. In this article, I'll focus on the publicly released "H3-Base" and explain the steps to run it in ComfyUI. The modules required for 2K output haven't been released, so I won't cover them here, but the basic usage is the same. Let's start by generating one clip at 768p.
What You'll Learn in This Article
- An overview of MiniMax H3 and its system architecture made up of three modules.
- The H3-Base architecture and how 3D MM (multimodal) RoPE works.
- The differences between MiniMax H3, Wan 2.2, and LTX-2.5, and when to use each.
- The models required for the official ComfyUI template "MiniMax H3: Image to Video" and where to place them.
- The main nodes in the template and the rules for the frame counts you can specify in Length.
- The basic structure of MiniMax H3 prompts and how to use prompt embeddings.
- How the res_multistep sampler works and why it's used for H3.
- How to use the official template, and generation speeds by resolution and turbo LoRA.
- A DCAI custom workflow with upscaling, frame interpolation, and GGUF support (💎members only).
- How to write high-quality prompts for the four task types (💎members only).
- How to register and use the official "h3-prompt-writing" skill on claude.ai (💎members only).
What Is MiniMax H3?
MiniMax H3 is an omni-modal generation model announced by MiniMax on July 31, 2026. It understands text, images, video, and audio together as "a single context" and generates video with native stereo audio. It's the third generation of the H series following Hailuo 01 and Hailuo 02, and the weights were released in early August.

The design philosophy of H3 is to "remove the boundaries between tasks." In conventional video generation, models were split up by task: text to video, image to video, first and last frame specification, subject reference, motion reference, video editing, and so on. Audio was also treated as separate domains for speech, sound effects, and music. H3 trains all of these on the same footing and unifies reference and editing relationships into a form that is described in natural language rather than by fixed task names. An instruction like "referencing the camera work of video 1, the person in image 2 sings with the voice of audio 3" goes through as a single prompt. Reference inputs can be mixed up to a total of 12 files, with a maximum of 9 images, 3 videos, and 3 audio files.
MiniMax H3 Architecture Explained
H3-Base encodes each modality with a corresponding encoder or VAE, combines them into one long multimodal sequence, and then passes it to the Transformer. Text is handled by H3-Encoder, visual input by both H3-Encoder and H3-VisualVAE, and audio by H3-AudioVAE alone.
- H3-Encoder: It uses the pretrained weights of Qwen3-VL-32B as they are and passes the hidden states of its 50th layer to the Transformer. In other words, another large-scale model is bundled in its entirety just for prompt understanding.
- H3-VisualVAE: A video autoencoder with 16× spatial, 4× temporal compression and 24 latent channels. After patchification, the effective spatial compression becomes 32×.
- H3-AudioVAE: It compresses 32kHz audio into a latent token sequence at 40Hz per channel. The left and right channels share the same encoder and decoder, and stereo is achieved by processing them independently and then recombining them.
- H3-Omni-Transformer: A 33B dense, single-stream configuration. Neither the attention layers nor the FFN layers have modality-specific structures; those differences are confined to the input/output layers and the AdaLN branch (about 13B). It predicts video and audio latents simultaneously. Position representation uses 3D MM (multimodal) RoPE over (time, height, width).
What's important here is that H3 is a system made up of three modules, and only the middle one was released. "H3-Context-IR," which interprets and structures the input, is hosted and not public, and "H3-Regenerate-2K," which regenerates the 768p result at 2K, is also unreleased as of this writing. The "up to 2K" description on the official site refers to the system as a whole, and what you can run locally is only H3-Base, which uses 768px on the short side as its standard. The ComfyUI and diffusers documentation lists 1344×768 for 16:9 as the training resolution.
What Is 3D MM (Multimodal) RoPE?
Because a Transformer treats input as "an unordered set," it can't tell where tokens are on its own. That's why you need to give it position information. RoPE (Rotary Position Embedding) is a method that represents position by rotating a vector by an angle that corresponds to its position. When you compare two tokens, only the difference in rotation remains, so the relative distance of "three apart" is handled naturally rather than "the 5th and the 8th."
For text, one dimension of "which position in the sequence" is enough. But video tokens have three coordinates at once: time (which frame), height, and width. So the vector is divided into three groups, and each is rotated by time, height, and width respectively. That's what "3D" means, and it lets the model judge "two frames earlier," "one above," and "three to the right" independently.
So what does "MM (multimodal)" mean? It means placing different kinds of tokens in the same coordinate system. H3 processes video and audio combined into one long sequence, but audio has no height or width, only time. So audio tokens are given only the time coordinate, and the spatial axes aren't used. This way, the relationship "this audio token and this video token belong to the same moment" is expressed at the level of position information.
MiniMax H3 vs Wan 2.2 vs LTX-2.5: Key Differences
Even among open-weight video generation models, these three aim in different directions.
Wan 2.2 has checkpoints split by task. Text to video, image to video, audio-driven, and character animation are each a separate model. It maintains the "division of tasks" that H3 explicitly rejected, but in exchange you can swap out only what you need, and it has by far the richest ecosystem including LoRAs. The Apache 2.0 license with few restrictions is also a big advantage. However, it doesn't support audio generation. Note that Wan weights are public only up to the 2.2 series; 2.5 and later are API-only. The latest locally usable Wan-family model is Wan-Animate-2, released under Apache 2.0 on August 7, 2026.
LTX-2.5 is a 22B diffusion transformer that generates video and audio simultaneously with a single model. It's thoroughly optimized for running fast locally, with an 8-step distilled model, official int8 and NVFP4 distributions, and a duration head that determines generation length automatically. The text encoder is Gemma 4 12B.
H3 doesn't separate video and audio; it packs them into a single sequence and predicts them at the same time. On top of that, it uses the whole of Qwen3-VL-32B for prompt understanding. I think the design puts its center of gravity on interpreting instructions rather than on speed. Being able to mix image, video, and audio references and specify each one's role in words is unique to H3.
To sum up briefly, I think the split works out like this: H3 if you want to combine references to create the footage you're aiming for, LTX-2.5 for speed and self-containment, and Wan 2.2 for license freedom and LoRA assets.
Exploring the ComfyUI "MiniMax H3: Image to Video" Template
As always, I recommend updating ComfyUI to the latest version. This time I tested using 🔗v0.34.0.
"MiniMax H3: Image to Video" generates a video from an input image (the first frame). The main nodes are gathered in the subgraph "Image to Video (MiniMax H3)".
First, let's check the workflow example for "MiniMax H3: Image to Video" from the templates.
Open the template list and select Video from GENERATION TYPE in the left menu.
Once the video-related templates are displayed, let's choose "MiniMax H3: Image to Video".
When you open the template, the missing models are displayed. If you download them as instructed, you can run it right away. ✅If you're not sure about this, the next section explains it in detail, so please refer to that.
The official documentation is below.

Downloading the Models Required for MiniMax H3
With MiniMax H3, note that the VAE is split into two, one for video and one for audio. You need to place both minimax_h3_video_vae_fp16.safetensors and minimax_h3_audio_vae_fp32.safetensors in the vae folder. Get the files below and place them in the specified folders under ComfyUI/models. When you open the workflow in ComfyUI, a download button appears on the nodes, so you can also get them from there.
Placement example:
ComfyUI/
├── 📁 models/
│ ├── 📁 diffusion_models/
│ │ └── minimax_h3_fl2va_pruned_int8_convrot.safetensors
│ ├── 📁 text_encoders/
│ │ └── qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors
│ ├── 📂 vae/
│ │ ├── minimax_h3_video_vae_fp16.safetensors
│ │ └── minimax_h3_audio_vae_fp32.safetensors
│ ├── 📂 loras/
│ │ └── minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors
│ └── 📂 embeddings/
│ └── minimaxh3_art_is_explosion.safetensors
Input Materials for "MiniMax H3: Image to Video"
The input image used in MiniMax H3: Image to Video can be downloaded from the official documentation.
About the "MiniMax H3: Image to Video" Nodes
The main nodes are placed in the main subgraph "MiniMax H3: Image to Video", so let's go through them in order.
Load CLIP
This loads the text encoder. Select qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors for clip_name and minimax for type. As mentioned earlier, Qwen3-VL-32B handles H3's prompt understanding in its entirety, so this node alone uses around 15GB of VRAM. If VRAM is tight, you can also swap in a GGUF version of the text encoder.
MiniMax H3 Image to Video
This is the central node of the workflow, which bundles the prompt and input image into H3-oriented input. However, this node doesn't produce the video itself. Its outputs are two things: the conditioning (positive) and an empty latent. The actual denoising is handled by SamplerCustomAdvanced, and decoding into video and audio is handled by VAEDecode and VAEDecodeAudio. There are eight inputs, and almost nothing that counts as a parameter.
- clip / vae: Received from Load CLIP and the Load VAE for video.
- first_frame / last_frame: The start frame and end frame. Both are optional, and for I2V it works by simply connecting the input image to first_frame. If you specify both, generation is done with the first and last frames fixed.
- prompt: In addition to camera work and subject movement, you can also describe audio such as dialogue, sound effects, and background music in words. Audio is generated at the same time as video, so there's no need to add it afterward. ✅For how to write prompts, refer to "How to Write MiniMax H3 Prompts" later on.
- width / height: Received from Resolution Selector.
- length: The number of frames to generate. It's not a value you enter by hand; the value calculated from the subgraph's duration goes in here.
KSamplerSelect
This node selects the sampling algorithm and passes it as SAMPLER to the downstream sampler node. In the template, res_multistep is the default. It's not the euler familiar from image generation, so be careful when reusing nodes from other workflows. ✅res_multistep is explained in detail later in "About the res_multistep Sampler."
Resolution Selector
This node calculates the width and height of the output video and passes them to width / height on the MiniMax H3 Image to Video node. Rather than entering the resolution directly, it's calculated from the following three values.
- aspect ratio: Choose a ratio such as 16:9 (landscape), 9:16 (portrait), or 1:1 (square).
- megapixels: A guide to the total pixel count of a frame. The higher you go, the larger the footage, but generation time also increases.
- multiple: The unit the calculated value is rounded to. Leave it at
32to match H3's resolution grid.
The baseline H3 assumes is 768px on the short side, and for 16:9 the training resolution is 1344×768. I recommend starting around here.
About Length in MiniMax H3
H3 has its fps fixed at 24, and the frame counts you can specify are spaced out. It only accepts values that start at 5 frames and increase by 17.
5, 22, 39, 56, 73, 90, 107, 124, 141, 158……362The official documentation writes this as 17k+5. It means the numbers you get by putting integers 0, 1, 2, and so on into k (17×0+5=5, 17×1+5=22, 17×2+5=39). This is because H3 internally treats video as blocks of 17 frames, and the numbers in between can't be specified. The upper limit is 362 frames, which is about 15 seconds at 24fps.
That said, you don't need to be conscious of this in actual use. In the template, a ComfyMathExpression node sits between duration and length, and it automatically rounds the number of seconds up to a frame count that meets the condition. The expression is as follows.
max(5, round(a * 24)) + (5 - (max(5, round(a * 24)) % 17)) % 17The correspondence between duration and the frame count actually generated is as follows.
| duration | Frames | Actual length |
|---|---|---|
| 2 sec | 56 | approx. 2.3 sec |
| 4 sec | 107 | approx. 4.5 sec |
| 5 sec (default) | 124 | approx. 5.2 sec |
| 10 sec | 243 | approx. 10.1 sec |
| 15 sec | 362 | approx. 15.1 sec |
Because it rounds up, the video ends up slightly longer than the number of seconds you specify. Only at 4 seconds is it off by nearly 0.5 seconds, and that's because the next usable grid after 96 frames is 107 frames. The length the official docs assume is 5 to 15 seconds (124 to 362 frames).
How to Write MiniMax H3 Prompts
The official way to write MiniMax H3 prompts is summarized on the page below.
H3 prompts aren't the type where you write out a scene that comes to mind in one breath. A fairly formal structure is fixed: you write the correspondence between the reference images and the timeline at the beginning, then line up three fields after that.
For the target video, at 0.00 seconds into the target video, <Picture 1> (from [Shot 1]) is fully referenced.
integrated_multimodal_description: [Shot 1] ...
overall_soundscape: ...
non_diegetic_music: ...- integrated_multimodal_description: This is the main body where you write the visuals, actions, shots, speakers, dialogue, and the sounds occurring on screen, following the flow of time.
- overall_soundscape: Here you write ambient sounds, action sounds, and non-verbal human sounds such as breathing, all together for the whole video.
- non_diegetic_music: Here you write background music that the characters can't hear and only the audience can.
This structuring is originally a step handled by the hosted H3-Context-IR. MiniMax itself writes in the model card that it strongly recommends building H3-Context-IR into your pipeline or creating your own preprocessing system based on this guide. When you run H3-Base locally, you end up doing the latter by hand. ComfyUI's prompt has only one input field, so you pour this entire structure into it. Note that MiniMax also distributes an official skill (h3-prompt-writing) for handing this rewriting over to an AI agent, and if you load it into Claude, ChatGPT, or similar, they'll assemble this structure from your request.
✅Detailed writing rules such as the alignment instruction for each task type, how to cut shots, the vocabulary for camera work, and the format for dialogue and audio are explained in detail in the paid article "How to Write High-Quality Prompts" later on.
About Prompt Embeddings
Prompt embeddings are a feature that adds reusable style tokens to your prompt. They work the same way as the Embeddings (Textual Inversion) used in SDXL and others, essentially a bundle of tokens that have been taught a specific style. You can call them with ComfyUI's standard embedding: syntax.
Place the file in ComfyUI/models/embeddings/ and write something like embedding:minimaxh3_art_is_explosion in your prompt. The trigger word is the file name without the extension. There are 10 style embeddings for H3 in the Comfy-Org repository, but these are unofficial files provided by the community (silveroxides) and weren't made by MiniMax or Comfy-Org.
About the res_multistep Sampler
res_multistep is a sampler based on a method called RES (Refined Exponential Solver), and it was brought into ComfyUI from code for Cosmos. The name splits into two elements.
- res (exponential integrator): The equation representing the process of removing noise has a linear part that can be solved exactly and analytically, and a non-linear part that depends on the model's output. euler approximates both together as "move straight in the direction we're currently facing," but an exponential integrator solves the linear part exactly and approximates only the non-linear part. As a result, even if you take a large step size, it's less likely to deviate from the true trajectory.
- multistep (multistep method): By reusing the model output computed at the previous step instead of discarding it, it achieves second-order accuracy. Since it doesn't call the model anew, the computational cost per step is almost the same as euler. heun and dpm_2 are also second-order, but they call the model twice per step, so they simply take twice as long.
Since the error per step of a second-order method is on the order of the square of that of a first-order method, roughly speaking, I think you can get accuracy equivalent to 40 to 50 euler steps with 20 steps. In other words, it progresses more accurately while calling the model the same number of times.
So why was this sampler chosen for H3? The first reason I can think of is that this is a model with an extremely high cost per step. Because H3 has a 33B model processing a long sequence of combined video and audio all at once, the cost of one step is nothing like image generation. Since the brute-force approach of "increasing the step count to gain accuracy" isn't realistic, it makes sense to lean toward raising the accuracy per step. With coarse settings like the turbo LoRA's 8 steps, it matters even more.
The second is that it generates audio at the same time. H3 has separate shift schedules for video and audio, and each progresses along its own schedule. A slight error on the video side just means softer detail, but an error on the audio side reaches your ears directly as noise. In fact, right after H3 was released there was an issue where noise appeared in the audio at low step counts, and for a while the community made a dedicated sampler to deal with it. I think the fact that a high-accuracy solver is the standard has a lot to do with these audio-side circumstances.
You can still generate if you switch to another sampler, but unless you have a particular reason, I recommend leaving it at the default.
How to Use "MiniMax H3: Image to Video"
Now let's actually use the template. Using the workflow is simple.
- Load the first frame image: Load the material
transparent_rgb_gaming_mouse.pnginto "Load Image." - Load each model: Check that the models are loaded correctly in the subgraph "Image to Video (MiniMax H3)."
- Run generation: Once the input image/video and each model are loaded correctly, run it with the "Run" button.
After a while, the generated result appears in "Save Video."
Generation Results with the Official MiniMax H3 Workflow
The generation results came out as follows. The audio is muted, so unmute it if you want to listen. ✅This sample is 640 x 640, so it hasn't been scaled down.
As a reference for generation speed, in my environment (RTX3090) a normal 20-step generation took 269 seconds (I'm not using SageAttention).
Below is a video comparing resolutions of 640/1024 with and without the turbo LoRA and Embeddings. ✅All of them use the same default seed.
The generation speeds are as follows.
| 20 Steps | 8Steps | 8Steps Embeddings | |
|---|---|---|---|
| 640 x 640 | 4 min 29 sec | 2 min 19 sec | 2 min 32 sec |
| 1024 x 1024 | 22 min 44 sec | 9 min 30 sec | 9 min 40 sec |
Using the turbo LoRA shortened generation time by about 48% at 640 pixels. At 1024 pixels it was shortened by about 58%. You can't see the difference between 640 and 1024 in the comparison video above, but the detail quality is higher at 1024, and at 640 noise appeared in the fine details. Also, I couldn't really tell what effect the Embeddings had in this test.
Customizing the Official MiniMax H3 Workflow
From here, I'll introduce an improved version aimed at higher-quality footage, built on top of the official ComfyUI "MiniMax H3: Image to Video" workflow. The customizations are as follows.
- Upscaling: Since "H3-Regenerate-2K" is unreleased as of this writing, this is upscaling in pixel space.
- Frame interpolation: Using a frame interpolation node, you can raise the frame rate of the output video.
- Live preview during video generation: You can check the progress during generation with a live preview.
- GGUF support: For low-VRAM environments, you can switch to a GGUF model.
✅In the paid article, I cover the following.
- How to use the custom workflow and its generation results: I explain everything from preparing the required custom nodes and additional models to the actual operating steps, and I also include the full text of the prompt used for generation.
- How to write high-quality prompts: Based on the official prompt writing guide, I explain the four task types, the alignment instruction placed at the beginning, the three fields, camera work, and how to write dialogue and sound separately.
- How to use the official "h3-prompt-writing" skill: I introduce how to hand H3 prompt creation over to an AI agent, starting with the steps to register it on claude.ai.
The workflow and input materials are published on Patreon. Only paid supporters can view and download them.
Here's a sample video generated with this custom workflow. The audio is muted, so unmute it if you want to listen. ✅The video has been scaled down for the web.
Summary
In this article, I covered everything from an overview of the open-weight video generation model "MiniMax H3" to the steps for generating video using the official ComfyUI template "MiniMax H3: Image to Video."
- MiniMax H3 is an omni-modal generation model that generates video with native stereo audio.
- You can specify reference and editing relationships in natural language rather than by fixed task names.
- What you can run locally is only H3-Base, which uses 768px on the short side as its standard.
- The frame counts you can specify in Length are limited to values of
17k+5, but the template rounds them up automatically from the number of seconds. - Prompts are written in a formal structure consisting of an alignment instruction at the beginning and three fields.
- The template's sampler defaults to
res_multistep. - In my environment (RTX3090), the turbo LoRA shortened generation time at 640 x 640 by about 48%.
In the paid article in the second half, I also explain the DCAI custom workflow with upscaling, frame interpolation, and GGUF support, how to write high-quality prompts, and how to use the official "h3-prompt-writing" skill. If you're interested, please take a look at the main article as well.
Thank you for reading to the end.
If you found this even a little helpful, please support by giving it a “Like”!


