Skip to main content
MiniMax H3 is MiniMax’s open-weights omni-modal model. It understands text, images, video, and audio in one context and generates video with native stereo audio (voice, SFX, and music in a single pass). Open weights target about 1 megapixel (768px short edge) at 24fps for up to ~15 seconds. 2K is a hosted-service output and needs a separate upscale pass in ComfyUI. Documentation is split across six pages:
  • Overview (this page): capabilities, checkpoints, workflow index, resolution, clip length, steps, sampler, speedups
  • Native workflows: T2V, I2V, R2V, and native-node techniques
  • Multiframe Reference: anchor reference frames on the timeline
  • Fun ControlNet Union: control video or inpainting with a mask
  • Prompt guide: official guides, tips, embeddings
  • FastH3: FastVideo sparse-attention checkpoints
Make sure your ComfyUI is updated.Workflows in this guide can be found in the Workflow Templates. If you can’t find them in the template, your ComfyUI may be outdated.If nodes are missing when loading a workflow, possible reasons:
  1. You are not using the latest ComfyUI version (Nightly version)
  2. Some nodes failed to import at startup
H3’s open weights let you run the model locally. Commercial use of locally generated outputs requires a MiniMax commercial license, available through Comfy, the only official reseller. Generations on Comfy Cloud already include commercial rights. See Commercial licensing for tiers and pricing.

Key features

  • Native stereo audio: Dialogue, SFX, and music in one MP4
  • Multimodal context: Combine text, image, video, and audio references
  • Reference-driven generation: Lock identity, style, motion, camera, or voice from references
  • Instruction following: Describe reference-to-shot relationships in natural language
  • Accurate text rendering: Clean spelled-out text and brand elements
  • Open weights: Full local control in ComfyUI

Getting started

  1. Update ComfyUI: base T2V/I2V/R2V templates need 0.30.0+; Multiframe Reference 0.34.0+; Fun ControlNet Union, sparse attention, and Model Attention Backend 0.35.0+; FastH3 0.36.0+
  2. Template Library > Video > pick a MiniMax H3 workflow
  3. Download models from the pop-up (tens of GB; allow time and disk space)
Weights live on Hugging Face: Comfy-Org/MiniMax-H3.
Use pruned checkpoints when both full and pruned builds exist. Pruned builds store adaln in a shared curve table (adaln_t_table) that ComfyUI reads from the file; templates load minimax_h3_*_pruned_int8_convrot.safetensors. LoRAs distilled on full builds carry adaln tensors that do not exist on pruned builds (shape mismatch; those weights are skipped). Turbo LoRAs have no adaln tensors and work on either build.

Choosing the checkpoint precision

Pick the smallest build that fits in VRAM. Change only the UNETLoader file; ComfyUI reads quantization from the checkpoint. LoRAs must match the build family (full-build LoRAs lose adaln on pruned). Links are fl2va (T2V/I2V); ref2va files are in the same folder at the same sizes. Comfy Kitchen attention cannot run int8_convrot checkpoints; use a bf16 build with that backend. If VRAM is tight, step down a size: CPU offload costs more than precision tradeoffs. On RTX 30-series, INT8 matrix ops are ~2× FP16 and there is no FP8 path, so INT8 often beats FP8 at the same file size. H3 also needs video and audio VAEs: video fp16 / int8_convrot and audio fp32. Templates use int8 video + fp32 audio; int8 video decodes ~2× faster on ComfyUI 0.36.0+. Swap files on VAELoader like the diffusion model.

Workflow index

Six template workflows ship today (examples, not an exhaustive list). The library also includes an I2V continuation variant (video_minimax_h3_i2v_continuation).

Text to Video (T2V)

Generate videos from text prompts with native stereo audio

Image to Video (I2V)

Generate videos from an input image, with optional first/last-frame control

Reference to Video (R2V)

Lock in a character, style, motion, camera move, or voice from reference images, videos, and audio

Multiframe Reference

Anchor reference frames at specific points along the output timeline with chained Add Guide nodes

Fun ControlNet Union

Drive H3 with a Canny, Depth, HED, MLSD, or Pose control video, or run video inpainting with a mask
MiniMax H3 Image to Video covers T2V and first/last-frame I2V (t2va / fl2va). MiniMax H3 Reference to Video covers R2V (ref2va).
Reference conditioning only applies when it reaches the sampler. T2V/I2V templates sample inside a subgraph wired to Image to Video only. A Reference to Video node on the canvas is ignored without error. Use the R2V template (or a workflow built from it) for reference-driven output.
Prompt resources: prompt guide.

Setting the output resolution

Resolution Selector sets width and height on the H3 node:
  • Aspect ratio: Presets such as 16:9 (Widescreen), 9:16 (Portrait Widescreen), 1:1 (Square)
  • Megapixels: Total pixel count (higher = larger, slower)
  • Multiple: Round to this grid; keep 32 for H3
Templates open at Megapixels 0.4: 864×480 at 16:9, 640×640 at 1:1 (the I2V default). A 0.4 MP render is fast and fine for drafts; raise Megapixels before a final render. For 16:9 native quality, set Megapixels to 0.98 or enter 1344 × 768 on the node. H3 is trained near 1 MP, with a 768-pixel short edge and up to a 768×1344 area. Sizes above 768×1344 render slower without adding detail, and quality drops the further you move from the trained resolution. For 2K, generate at native size and upscale separately. The H3 nodes have no 768×1344 cap on output size: width and height step by 32 up to 16384 per axis. Reference videos on Reference to Video are downscaled to fit a 768px short edge and a 768×1344 area. Reference images follow ref_image_size: match scales them to the generation’s pixel area, max to a 2048px short edge.

Upscaling to higher resolution

Use a latent upscaler on the 24-channel video latent to avoid VAE round-trip ghosting. Minimax_h3_latent_Upscaler (unofficial) needs minimax_h3_latent_upscaler_3d_conv_v1_bf16.safetensors in ComfyUI/models/latent_upscale_models/ and its custom node. Chain Minimax H3 Latent Upscaler (3D) after a low-res pass (scale 1.0–4.0, default 2.0), then re-sample at target resolution. Latent upscale saves time, not peak VRAM (refine still runs at target size). Treat refine as partial denoise: denoise 0.1–0.5 keeps composition; go higher only to rework the first pass. Give the refine sampler enough steps to rebuild multistep history (see Sampler and scheduler). Video and audio latents are separate (24 + 32 channels). The upscaler only spatially enlarges video; audio is unchanged until refine denoises both. Low refine denoise preserves first-pass audio. To keep audio exactly, decode the first pass with VAEDecodeAudio before refine and wire that track into final CreateVideo (add SaveAudioAdvanced for a lossless export).

Clip length

H3 is trained on short clips; native nodes accept a wider range without blocking over-length requests. Templates expose duration in seconds, converted to frames on the 17k+5 grid at 24fps. duration and length round up to the next 17k+5 value: a 5 s request renders 124 frames (5.17 s), and a length of 120 also renders 124. Frames pack from frame 0 in 17-frame blocks, so the leftover 5 frames are the last block, not the first. Requests that fall between the same two grid points render the same clip. Long clips at full resolution exhaust VRAM first; lower megapixels to fit.

Chaining clips

Beyond the trained range, chain I2V continuations from each clip’s last frame. Errors compound (faces lose texture first); turbo/distilled schedules show burn sooner. Use video_minimax_h3_i2v_continuation (empty prompt): load the previous last frame, describe the next segment. Prefer short continuous shots and cut before burn shows. For longer chains, H3-Anti-Burn-LoRA on clips after the first at strength_model ~0.5 (tune for your continuation style).

Step count

Defaults (Lightning LoRA off): 20 steps. With turbo on: 8 for T2V/I2V (and continuation), 4 for R2V, Multiframe, and Fun ControlNet. On T2V/I2V subgraphs, turbo_mode, turbo_steps, and turbo_model_strength control the distilled LoRA. A 4-step fl2va file is also listed: minimax_h3_fl2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors with turbo_steps 4. Reference shots need more steps: reference tokens ride every step, so 4-step turbo can barely apply references (pose/face drift). For tight reference match, keep turbo off or raise toward 25. Distilled schedules smooth fine detail (skin, fabric, hair) vs 20-step base. Each turbo file is mode-specific; test at a fixed seed before stacking style LoRAs. turbo_steps and turbo_model_strength are adjustable: higher steps + lower strength (less than 1) move back toward base quality and cost time. Example: 4-step file at 6–8 steps, strength ~0.8. Turbo LoRAs shorten the schedule, not per-step time (merged at load). Running a 4-step LoRA at 20 steps takes about as long as base 20 steps. Guidance by content:
  • Simple shots: 12–16 steps often enough
  • High-frequency detail (chainmail, filigree, many small objects): improves up to ~50; below that, triangular grid artifacts under motion (worse with turbo)
  • Most motion/prompt gains by step 16; little visible change past 50
  • Soft frames at native resolution are usually a resolution issue, not steps
Audio converges later than video in the joint denoise. Speech and timbre need 12+ steps; at 8 steps audio is often the weak link.

Sampler and scheduler

Templates use res_multistep + simple. T2V/I2V/FastH3 hide these inside the subgraph; R2V, Multiframe, and Fun ControlNet expose KSamplerSelect and BasicScheduler on canvas. res_multistep is second-order multistep (first step is Euler). Splitting the schedule across two samplers drops multistep history: the second sampler’s first step is first-order again. Keep one sampler run, or give the second enough steps to warm up. Default H3 shifts are shift 12 and audio_shift 3 from the model definition (no extra node). FastH3 templates set ModelSamplingMiniMaxH3 to shift_video 10, shift_audio 3. Wrong video shift on distilled builds (e.g. 3 instead of 10 on 8-step) can show grid artifacts. Custom finetunes may need their own pair on ModelSamplingMiniMaxH3 (see the file’s model card). DMAD 4-step LoRA uses shift 12, audio_shift 2, lcm + simple.

Speeding up generation with Sage Attention

Sage Attention can roughly 2× speed with small quality impact (optional install):
  1. pip install the wheel matching your PyTorch/CUDA from releases
  2. Install KJNodes for Patch Sage Attention KJ
  3. Insert between UNETLoader and BasicGuider; set sage_attention to auto
  4. Or launch with --use-sage-attention
Sage needs float16/bfloat16; some H3 layers use other dtypes and fall back to PyTorch attention (console warnings are normal).

Quality degradation with INT8 attention

End-of-clip morphing or garbled on-screen text with Sage often comes from INT8 attention quantization (hot channels in late blocks).
  • Templates use int8_convrot checkpoints. Comfy Kitchen does not support them (issue #15529). Use default attention, or switch UNETLoader to pruned_bf16 then change backend.
  • On bf16 checkpoints, Comfy Kitchen attention (channel rotation before quantize) clears artifacts at similar speed.
Add Model Attention Backend (comfy kitchen attention) on the model path to BasicGuider (after LoRA/turbo), or use --use-ck-attention (0.32.0+). Requires comfy-kitchen INT8 kernels on your hardware.

Speeding up generation with sparse attention

Model Sparse Attention (0.35.0+, experimental) cuts attention cost on long clips. For base H3 use method sol-attn (sla/vsa need matching weights). Needs CUDA + sol_attn from comfy-kitchen; otherwise layers stay dense.
  • Defaults start_percent 0.2, end_percent 1.0. Later start (0.4) and earlier end (0.9) protect opening/closing frames.
  • Keep sink_conditioning at exact_kv_and_rows on H3 (protects packed text/audio/reference rows).
  • tau: higher = sparser/faster (1.0 ~16% exact blocks, 1.3 default, 2.0 ~2.7%).
  • Short sequences below min_tokens (default 12288) see little gain.
FastH3 uses vsa at keep_percent 10; see FastH3 page.

Checking whether sparse attention is active

Base H3 templates do not include the node. Add Model Sparse Attention between UNETLoader and BasicGuider, then turn on verbose (Advanced, off by default) to log one line per attention shape. Calls that stay dense log dense (<n> tokens): <reason> or dense (<b>, <n>, <h>, <d>): <reason>. Only the first failing condition is reported: Calls that succeed log sparse (<b>, <n>, <h>, <d>), sinks <k>/<q> or sparse producer path: <n> tokens, <mode>. Three conditions never log, even with verbose on: activations that are not bfloat16 on the H3 path, a head_dim other than 128, and missing rope frequencies all fall back silently. vsa is bound to the FastH3 checkpoint. It reads a learned coarse branch from to_gate_compress layers that only those weights carry, so on any other H3 checkpoint the node prints VSA: the model has no to_gate_compress layers; running the fine stage without the coarse branch and runs the fine stage alone. That warning is not gated by verbose.

Commercial licensing

H3’s open weights are free to download and run. Using locally generated outputs commercially requires a MiniMax commercial license, sold through Comfy, the only official reseller. Generations on Comfy Cloud already include commercial rights, so a license is only needed for local use. Do you need one?
  • Comfy Cloud: commercial use is included. Nothing to buy.
  • Your own hardware, outside the US, EU, UK, and Korea, under $20M in yearly revenue: the free MiniMax community license covers commercial use. Show a “Powered by MiniMax H3” credit; the same territory rule applies to where your outputs are used.
  • Your own hardware in the US, EU, UK, or Korea, or over $20M in yearly revenue: you need one of the two licenses below.
Licenses come in two tiers: Professional starts at $5,000 per month. Enterprise has no flat list price; it is quoted to your generation volume and team. Both tiers cover MiniMax H3 plus MiniMax Audio & Music under one agreement. Request a license to get a quote.