Skip to content
freakyjolly✳THE WORLD OF AI. EXPLAINED.
Search
← Latest stories
,

Best MiniMax H3 Image-to-Video Workflow for ComfyUI (First/Last Frame, 16 GB, Free JSON)

Image-to-video is the H3 mode I run the most by far. On my Jolly backend, i2v jobs outnumber text-to-video about ten to one (50 completed i2v jobs vs 5 t2v when I last counted for that note), and the PRO queue is almost entirely minimax_h3_i2v. So this graph has had more real use than anything else I’ve built for H3.

In this post I share that exact graph, plus a first + last frame (FL2V) version. That’s the same node with one extra image input. Both are free JSON downloads.

TL;DR

  • MiniMax H3 image-to-video (and first/last-frame FL2V) ComfyUI workflows with generated synced audio — the most-used H3 mode on the author’s backend.
  • Weights: H3 FL2VA pruned model; conditioning via MiniMaxH3ImageToVideo with image on first_frame (optional last_frame).
  • Speed chain: Turbo LoRA → Sage Attention → SigmaShift (12/3) → MiniMaxH3TurboSampler, simple / 6 steps; encoder Qwen3-VL-4B INT4 + ClipProj.
  • Default output: 24 fps MP4 with audio, 0.4 MP, 6 seconds; fits 16 GB VRAM (RTX 5080 tested).
  • Free downloads: freakyjolly-minimax-h3-i2v-turbo6-api.json and freakyjolly-minimax-h3-fl2v-turbo6-api.json.

Quick answer: what you get

  • Weights: H3 FL2VA pruned diffusion model. “FL” stands for first/last frame, and these are the weights trained for exactly this job.
  • Conditioning: core MiniMaxH3ImageToVideo, with your image on first_frame and optionally a second image on last_frame
  • Speed chain: Turbo LoRA → Sage Attention → SigmaShift (12/3) → MiniMaxH3TurboSampler, simple / 6 steps
  • Encoder: Qwen3-VL-4B INT4 + ClipProj (small enough for a 16 GB setup)
  • Output: 24 fps MP4 with generated audio, 0.4 MP, 6 seconds by default
  • Downloads: freakyjolly-minimax-h3-i2v-turbo6-api.json and freakyjolly-minimax-h3-fl2v-turbo6-api.json

Which i2v workflow I picked, and why

I have three serious i2v candidates on my drive:

  1. The backend single-pass Turbo graph (picked). My builder takes the t2v graph and adds a LoadImage on first_frame, so t2v and i2v can’t drift apart. It’s the graph paying users get and the best-tested one by a wide margin.
  2. “MiniMax_H3_Hybrid_pruned_turbo_fixed”. A two-pass experiment: pass 1 renders at ~0.5 MP with Alibaba’s FL2VA Acc 8-step model (MiniMaxH3PDDAccApply), then a 3D latent upscaler takes it to 1664×928, and pass 2 refines with the Turbo LoRA on 3 manual sigmas (0.9035, 0.6316, 0.3158, 0). It has a last-frame input too. It’s my most ambitious i2v graph, but it relies on a Turbo LoRA I converted locally for the pruned base (..._fl2va_pruned_curve), five extra node packs and attention/feed-forward chunking. I have no clean timing for it yet. I’ll cover it in a separate post once I do.
  3. An older FL2V test (Q4_K_M GGUF UNet + Q2_K GGUF encoder, 20 steps). Superseded. On my box the GGUF UNet sampled at 35 s/it vs 25 s/it for the int8_convrot safetensors at 0.4 MP, and the Q2_K encoder was about 2× slower overall.

So for this article: graph 1 for i2v, plus last_frame connected for FL2V. That’s the strongest i2v path I can stand behind today.

Requirements and model downloads

Tested on my RTX 5080 16 GB with ComfyUI portable on Windows. You need a ComfyUI build newer than 2026-08-07 for the W4A8 model.

Component File Folder Download
Diffusion model (FL2VA, pruned W4A8, ~12.5 GB) minimax_h3_fl2va_pruned-w4a8_convrot_pruned.safetensors models/diffusion_models/ Winnougan/MiniMax-H3-INT4_Convrot_ComfyUI
Alternative: official pruned int8 (~21 GB) minimax_h3_fl2va_pruned_int8_convrot.safetensors models/diffusion_models/ Comfy-Org/MiniMax-H3
Text encoder qwen3vl_4b_int4_convrot.safetensors models/text_encoders/ Merserk/qwen3vl-4b-int4-convrot
ClipProj mmh3-4b-ClipProj-v3.1-mlp.safetensors models/clip_projections/ NicoLab28/ClipProj-MiniMax-H3
Video VAE minimax_h3_video_vae_int8_convrot.safetensors models/vae/ Comfy-Org/MiniMax-H3
Audio VAE minimax_h3_audio_vae_fp32.safetensors models/vae/ Comfy-Org/MiniMax-H3
Turbo LoRA minimax_h3_turbo_4step_ema_ckpt500.safetensors models/loras/ larryvrh/MiniMax-H3-Turbo-Lora

Don’t use the ref2va model here. Both H3 diffusion models load in the same nodes, but FL2VA is trained for frame anchoring and ref2va for <Picture N> references. The wrong one runs without errors and just gives worse results.

The LoRA author now recommends minimax_h3_turbo_v4_step600_ema for most work. My production graph still uses ema_ckpt500; I haven’t A/B tested v4 on my box yet.

Install steps

  1. Update ComfyUI (Manager → Update ComfyUI).
  2. Install these through ComfyUI-Manager:
    – ComfyUI-MiniMax-H3-Turbo (Turbo LoRA + Turbo Sampler)
    – ComfyUI-ClipProj
    – ComfyUI-KJNodes
    – ComfyUI-VideoHelperSuite
    – ComfyUI-Easy-Use
  3. Optional: SageAttention. If you skip it, set the Sage node to disabled.
  4. Put the models in their folders and copy your start image (and end image for FL2V) into ComfyUI/input/.
  5. Restart, then drag the i2v or fl2v JSON onto the canvas.

The official ComfyUI H3 tutorial is here if you want the vanilla graph to compare: docs.comfy.org – MiniMax H3.

The workflow, node by node

# Node Setting Notes
114 LoadImage your_first_frame.png CHANGE ME
116 LoadImage (FL2V file only) your_last_frame.png CHANGE ME
115 ResolutionSelector 16:9, 0.4 MP, multiple 32 → 864×480 Match this to your image’s aspect (see below)
105:111 PrimitiveFloat 6.0 s
105:107 ComfyMathExpression 17k+5 snap at 24 fps 6 s → 158 frames
105:6 DiffusionModelLoaderKJ FL2VA pruned W4A8 sage disabled on the loader
105:13 ClipProjLoader 4B INT4, auto, v3.1-mlp, cuda:0, resident
105:144 MiniMaxH3TurboLoRA strength 1.0, low_vram False
105:136 PathchSageAttentionKJ auto, compile True
105:140 ModelPreviewOverrideKJ 1024 / 80 / 360 frames / 8 fps
105:143 MiniMaxH3SigmaShift video 12, audio 3
105:104 MiniMaxH3ImageToVideo prompt, first_frame (+ last_frame)
105:148 MiniMaxH3TurboSampler —
105:9 BasicScheduler simple, 6, denoise 1.0
105:16 / 105:14 BasicGuider / SamplerCustomAdvanced — no CFG, no negative
105:130/131 Easy-Use clean nodes — free VRAM before decode
105:10 / 105:23 VAEDecode / VAEDecodeAudio int8 / fp32 VAEs
92 VHS_VideoCombine 24 fps, h264, crf 20, audio in

Aspect ratio matters. My backend doesn’t let users pick an aspect for i2v. It measures the uploaded image and snaps to the nearest ResolutionSelector option (1:1, 2:3, 3:2, 3:4, 4:3, 9:16, 16:9, 21:9). In ComfyUI you do that by hand. If your image is portrait, pick 9:16 (Portrait Widescreen). Otherwise the frame gets resized to a canvas it doesn’t fit.

What I removed for the public file: the SpectrumApplyMiniMaxH3 node. At 6 steps its 5 warmup + 1 tail steps cover the whole schedule, so it forecasts nothing. I also dropped two orphan nodes (ImageScaleToTotalPixels, GetImageSize) that were left over in the original reference graph. Nothing used their outputs.

i2v vs FL2V: when to add a last frame

  • i2v (first frame only): best when you want the shot to continue from a still: a portrait that starts moving, or a product shot that starts orbiting.
  • FL2V (first + last): best when you know where the shot has to end. Examples: a transition between two generated stills, a before/after, or making a clip land exactly where the next one starts. Keep the two frames consistent (same character, lighting and lens), and ask for motion that can plausibly get from A to B in your duration.

Prompt tips (with examples)

For i2v, I start almost every prompt with this sentence from my production prompts:

The provided image is the first frame. Continue directly from it. Do not re-establish, re-light, or re-compose the scene.

It keeps H3 from “re-staging” the scene in the first second. After that, write only motion, camera and sound. The image already handles the look. MiniMax’s base prompt guide covers the I2V and FL2V formats too.

Example 1: portrait (i2v default)

The provided image is the first frame. Continue directly from it; do not re-light or re-compose the scene. The subject turns slowly toward the window as a gentle breeze moves her hair and the curtain. The camera makes a slow, steady push-in. One continuous shot. Audio: soft wind, curtain fabric rustling, distant birdsong. No music, no speech, no captions.

Example 2: FL2V transition (fl2v default)

The provided images are the first and last frames. Animate one continuous shot that moves naturally from the first frame to the last: the subject stands up from the cafe chair, picks up the coffee cup and walks toward the window while the camera tracks slowly right. Audio: cafe ambience, cup clinking on a saucer, soft footsteps. No music, no speech, no captions.

Example 3: product

The provided image is the first frame. The sneaker rotates slowly on the turntable while a soft light sweep crosses the logo. Locked-off camera. Audio: a low electronic hum and a quiet mechanical whir. No music, no speech.

VRAM and speed tips for 16 GB

  • i2v costs a bit more than t2v at the same size, because the source frame also gets VAE-encoded. My backend keeps i2v at 0.3 MP. My code notes that admin i2v at 0.4 MP was untested when I wrote them, and that 0.3 MP is the fix if it OOMs.
  • Duration is the second knob after megapixels. Free jobs on my site are 4 s, and PRO goes up to 10 s.
  • Turbo LoRA low_vram: True if you hit OOM: merge mode is the lowest VRAM but slightly softer.
  • Sage attention: leave it on auto, but check the audio on your first few renders. Desync is the failure you’re watching for.
  • Upscale afterwards, not inside. Render at 0.3–0.4 MP and upscale or interpolate in a second job (my R2V article shows a RIFE + 2× ESRGAN finishing chain).

Numbers from my own logs (read the context):
– A minimax_h3_i2v job at 7 s / 1.0 MP took 389 s of GPU time in my backend on 2026-08-14 (Turbo pipeline).
– Average i2v job on the 5080 in early August: 6.0 min (n=31), but that was the older 20-step graph at 0.3 MP, before Turbo.
– Current 6-step Turbo graph (i2v or FL2V): render time and peak VRAM depend on your GPU, megapixels, and duration.

Troubleshooting

OOM or stuck at 0/6. Drop to 0.3 MP, shorten the clip, set the LoRA low_vram to True, and keep the clean nodes. If you’re launching ComfyUI with a small --reserve-vram, give it more headroom. On one lane I had to raise it from 0.5 to 3 GB.

The first second “jumps” or re-composes. Add the “provided image is the first frame…” sentence, and make sure the ResolutionSelector aspect matches the image.

FL2V ends somewhere else, or morphs. The two frames are too different for the duration. Make the frames closer, make the clip longer, or describe the path between them explicitly.

“lora key not loaded” in the log. You used LoraLoaderModelOnly. Use MiniMaxH3TurboLoRA, which handles pruned bases.

Soft output. The scheduler must be simple, steps 6–8, and the sampler MiniMaxH3TurboSampler.

W4A8 model won’t load. Update ComfyUI past 2026-08-07, or switch to the official pruned int8 file.

Download the workflows

Both are API-format graphs that load when you drag them onto the ComfyUI canvas. They have generic model filenames and placeholder image names, with no personal paths. Change the LoadImage node(s), match the aspect ratio, edit the prompt, and queue.

FAQ

Which H3 model is used for image-to-video?
The FL2VA (first/last-frame) diffusion model. The ref2va model is only for reference-to-video.

Does MiniMax H3 support first and last frame?
Yes. The core MiniMaxH3ImageToVideo node has optional first_frame and last_frame inputs. Connect both for FL2V.

Why does my portrait image get cropped?
ResolutionSelector is still on 16:9. Set it to the aspect closest to your image.

Can I make longer i2v clips?
H3’s trained range is roughly 124–362 frames (about 5–15 s). For longer videos I chain clips or use the H3 Extender nodes.

Will the audio match my image?
H3 generates the audio from your prompt and the scene. Describe the sounds you want and list what to exclude.

Is 16 GB VRAM enough?
Yes, at 0.3–0.4 MP with the W4A8 model and the 4B ClipProj encoder. Plenty of system RAM matters too.