Everything here is free and stays free — the format spec, the nodes, the workflows, the cartridges, the LoRAs. If it saved you a night of debugging (it contains several hundred of mine), tips keep the 5090 warm:
🔁 Liberapay (recurring)
⚡ Or right here: the Civitai tip button on this page sends Buzz directly.
The fl2va half of the comfy-native set. These load with the built-in UNETLoader on stock ComfyUI 0.32+ — no custom node in the load path, no architecture patch, nothing to install first.
Looking for ref2va? That is a separate listing: MiniMax-H3 comfy-native. Same formats, same method, same speeds — a different job, explained below.
What fl2va does that ref2va cannot
fl2va is the first/last-frame variant. It carries no reference rows, so voice anchoring, the identity bank and reference images all do nothing on it. In exchange it does the one thing ref2va has no mechanism for: it lands on a supplied frame.
checkpoint PSNR vs the supplied frame
--------------------------------- --------------------------
fl2va 26.35 dB
ref2va + keyframe, turbo 6 steps 16.15 dB
ref2va + keyframe, stock 20 steps 16.81 dBThe stock-20-step row is the control: it rules out the sampler, so that ~10 dB gap is the checkpoint. ref2va treats a keyframe as a suggestion; fl2va treats it as the task. It will also take a first and a last frame and plan a camera move between them.
Rule of thumb. ref2va when a face or a voice has to persist across shots. fl2va when a shot has to start exactly where the last one ended — stepping through a scene one shot at a time, feeding each shot's last frame into the next.
This is not a size decision. fl2va and ref2va are byte-identical in size at every quantisation. "Lighter" only ever meant fewer tokens per sampling step, because there are no reference rows riding along.
Pick by your GPU, not by the file size
A file that fits can still run emulated, and nothing in the UI tells you which you got. ComfyUI prints it at startup — find the line beginning Native ops: and check your format is on it.
Emulation is hardware, not a ComfyUI version problem. NVFP4 and microscaling FP8 are Blackwell tensor-core features; float8_e4m3fn wants Ada or newer. An Ampere card emulates all three however current ComfyUI is.
file GB take it if
------------------------------------------------ ------ ---------------------
MiniMax-H3-fl2va-pruned-comfy-nvfp4.safetensors 12.53 Blackwell, 50-series
MiniMax-H3-fl2va-pruned-comfy-w4a8.safetensors 12.54 Ada, 40-series
MiniMax-H3-fl2va-pruned-comfy-int8.safetensors 20.97 Ampere, 30-series
MiniMax-H3-fl2va-pruned-comfy-fp8.safetensors 20.96 Ada+, 24 GB and up
MiniMax-H3-fl2va-pruned-comfy-mxfp8.safetensors 21.56 Blackwell, 24 GB upOn a 4090 a user measured w4a8 at 17.4 s/it against 31.0 s/it for fp8 on identical settings — because fp8 at 21 GB does not fit beside the activation pool on 24 GB and streams weights over PCIe. Native ops you cannot reach are worth nothing.
All of them beat the GGUF
Measured on the ref2va set — same architecture, same layer set, same quantiser, so it carries over. Same scene, same seed, same shape: 544×960, 243 frames, 2 shots, 10 steps, so the weights are the only variable. RTX 5090, against the Q8_0 GGUF.
build GB shot 1 shot 2 vs Q8_0
------------- ------- ---------- ---------- ----------------
nvfp4 12.53 12.71 s/it 19.57 s/it -34% / -28%
int8 20.97 13.5 20.1 -30% / -26%
mxfp8 21.56 13.4 20.9 -31% / -23%
w4a8 12.54 14.05 20.50 -27% / -25%
fp8 20.96 14.8 22.4 -24% / -18%
Q8_0.gguf 21.50 19.36 27.18 (baseline)int8 is the row worth staring at: effectively the same file size as the Q8_0 GGUF and 30% quicker. That gap is dequantisation overhead in the GGUF path, not a difference in quantisation quality.
They are all the same quality as each other
Worth saying plainly, because it saves you a download. The same scene was rendered through w4a8 (12.54 GB) and int8 (20.97 GB) at 704×1280 and 20 steps, and both were reviewed as video by the same reviewer with the same prompt. They produce the same defects: garbled text on instrument dials, reflective safety-tape edges that warp during movement, limb distortion on fast motion, stiff lip sync.
So paying 8 GB more does not buy better output. Those defects are characteristics of the base model at these shapes — a prompting and settings problem, not a weights problem, and no quantisation here moves them.
Take the smallest file your card runs natively. The larger ones are not a quality upgrade. And if you hit those artifacts, do not report them as quantisation damage — check against the unquantised model or a GGUF first, because you will very likely find them there too.
Two formats I built and then threw away
convrot_w4a4— renders without error and the output is visibly degraded. It quantises activations to 4 bits; every file here keeps activations at 8. Instrument text becomes scribble, hi-vis banding dissolves, hands smear. Caught by render at seed 4040 against four other builds. It saves 1.2 GB againstw4a8and costs all of it.float8_e5m2— loads cleanly, then throws at the first matmul: Multiplication of two Float8_e5m2 matrices is not supported. Same on LTX-2.5. It would ship as a file that looks fine until you sample.
Neither was built for fl2va. Both failures are properties of the format, not of these particular weights, so building 32 GB in order to quarantine it would have been busywork.
Why nobody has K-quants of this model
H3's hidden width is 2688, and K-quants need weight rows divisible by 256. 2688 is not, so the whole K-ladder is unavailable for the DiT — which is why the GGUFs of it are Q4_0 / Q5_1 / Q8_0 and never Q4_K_M. The encoder is a stock Qwen3-VL and its rows do divide, so that repo has real K-quants; the two are easy to confuse.
The comfy-native formats have no such constraint, which is part of why this set exists.
How they were made
The layer set is mirrored from Comfy-Org's own minimax_h3_fl2va_pruned_int8_convrot rather than guessed: exactly 200 Linears — attn.qkv_proj, attn.out_proj, mlp.fc1 and mlp.fc2 across 50 blocks. Everything else stays bf16/fp16: adaLN, the timestep embedders, every norm and bias, the token refiner, the patch projections, the final layer. Those steer every block, and rounding them is how a quantised DiT dies.
Built from the pruned bf16 lineage, which matters arithmetically. On the unpruned lineage adaLN is 38% of the file and 4-bit lands at 19.9 GB — what the existing GGUF Q4_0 already achieves. Pruned 4-bit lands near 12.5 GB.
How these were verified, honestly. These were forward-gated, not render-tested: every build ran a GPU forward pass on an attention layer and a feed-forward layer, and all five passed. That catches a format that cannot execute; it does not catch one that executes and looks wrong. The speed table, the quality equivalence and both cuts are inherited from the ref2va set, which was rendered at matched seed and shape on identical architecture. If you render a fl2va build and it disagrees with any of this, please say so.
What else you need
The text encoder and the two VAEs from Comfy-Org/MiniMax-H3 (video and audio are separate). Nothing else — that is the point of these.
Honest limits
No render A/B on the fl2va weights specifically — the findings above are inherited from ref2va, not measured here.
fl2vaignoresvoice_ref,self_anchor_voiceand the identity bank entirely. If your workflow leans on those, you want ref2va.Resolution cannot change mid-chain, and neither variant changes that.
Support
Everything I publish is free and stays free. If it saved you a night of debugging, tips keep the 5090 warm: Ko-fi · GitHub Sponsors · Liberapay.
Description
FAQ
Comments (27)
Hi, from what you write:ref2va treats a keyframe as a suggestion; fl2va treats it as the task.
For example, if I want to do multiple shot of the person in different enviroments from one picture, but kept the person depiction as consistent as possible. Would be fl2va better method? Because ref2va as you said treats is as suggestion therefore it will not fully follow?
Currently I am trying with fl2va to get to the same consistency after cut as I have in Wan 2.2. I must say MiniMax H3 feel like it can do more and do longer videos with somehow more real like feel. But cannot kept the character consistency after cut as in the WAN 2.2. Also feel the main factor was KJNodes - WanVideo Enhance A Video. WIsh there will be something like this.
Do you have any tips for better consistency or worflow tips? (I know is too early and everybody learning what can be done withing MiniMax H3 and will discover more things as it goes)
Good question, and my sentence is what misled you, sorry. "ref2va treats a keyframe as a suggestion; fl2va treats it as the task" is about keyframes (a frame you want the video to pass through), not about reference pictures (identity). Two different mechanisms, and for what you're describing you want the other one.
For one picture, same person, different environments: ref2va, not fl2va.
fl2va has no reference rows at all. If you hand it an identity picture it is ignored entirely — there is nowhere in that checkpoint for it to live. What fl2va conditions on is the first and last frame, so it plans a travel from A to B. Chain it and shot 2 opens on shot 1's closing frame, which carries the whole picture forward: the person, but also the room, the light and the framing. That's exactly what you don't want when the point is a new environment each shot.
ref2va's reference rows bind at t=0 and hold the subject rather than the frame. That's the mechanism built for your case, and it's why you're getting worse consistency than Wan 2.2 across a cut right now — on fl2va there is nothing binding identity across that cut in the first place.
The recipe:
- ref2va checkpoint.
- continuity = cut. No keyframe, every shot a fresh take, identity carried by the reference bank. Framing and exposure step between shots, which is what you want from a cut.
- Feed the identity pictures through H3 Ref Folder — up to 9. More angles of the same face beats one picture repeated; front, three-quarter and profile is a good minimum.
- If more than one person is in the scene, set reference_subjects — 3,3 means pictures 1-3 are person A and 4-6 are person B. Without it, different people blend into one face.
Note the "keyframe as a suggestion" caveat doesn't apply here at all, because in cut mode you aren't using keyframes.
One thing that surprised me and is worth stealing: shot 1's own rendered audio works as a ref2va voice reference for every later shot, so the voice stays the same person across the chain too, not just the face. Verified in both directions. If you're chaining dialogue that matters more than it sounds like it should.
On Enhance-A-Video: nothing equivalent that I know of for H3, and I'd rather say so than point you at something that isn't the same thing. If someone builds it I'll link it.
And yes — early days. Most of what's in the pack came from finding out something didn't work the way the docs implied, so if the above doesn't hold up on your material, tell me what you saw and I'll dig.
@joeygambino Thank you for your response. I managed to push the consistency through some heavy prompting, but I will test with model ref2va from now (I tested it once at the beginning and had a bad result, but did not have time to tested again).
-any link that will enhance the MM H3 experience would be helpful. Thank you.
OK, tested it again and still have worse character consistency from ref2va than from fl2va. Maybe one picture is not nearly enough for make it work. Do you think if I do uncut video in fl2va, can I than use that video as reference for character? Or what do you think would be best approach?
@HugMeIntoFace Are you using my workflows? Any chance you could open a discussion here: joeygambino/MiniMax-H3-Multishot-Workflow · New Discussion
It'll be much easier to troubleshoot with you.
@joeygambino Well, I do not use your workflow I am using the base ones with few nodes added (sageattention, spectrum and preview...). Just testing so far. When I get how it reacts I will start to look at others wokflows what can be adjusted, added and so.
@HugMeIntoFace Understood. The reason I've built my workflow is because character consistency was difficult to come by in the basic ComfyUI workflows. Every shot prompt you write, you have to describe every single detail of your character, word for word, their position on screen, identically, or your prompts become more of a suggestion than a definite. My workflows do a lot of that internally with toggles in the Sampler and automatic references, even for voice consistency. That's the only real advice I can give for it - your character's description has to be 100% word for word identical in every single shot. If you're using a workflow with reference images or keyframes, use them.
The files in the download section all say ref2va.
I got noticeably worse results at slower speeds on this than I did on the pruned Int8 20gig fl2v model.
minimax_h3_fl2va_pruned_int8_convrot : Warm up video 140s (2:20) : 2nd run 98.5s (1:38)
MiniMax-H3-fl2va-pruned-comfy-nvfp4: Warm up video 160s (2:40) : 2nd run 137s (2:17)
5s video at .5 megapixels, using turbo lora at .85, 4 steps Euler/Beta
5060ti 16GB with 32GB system ram
Prompt in text to video mode:
integrated_multimodal_description: [Shot 1] Cinematic. A bird lands on a bare branch in the dead of winter, fluffs it's feathers, then flys away.
overall_soundscape: Outdoor natural soundscape
non_diegetic_music: N/A
Correction. Did a proper test by clearing model and execution cache in between. This model is faster on the 2nd run, but the results degrade pretty badly compared to the 20gig models. Quality and animation are about 30% worse with noticeable motion blur.
Pink Cherry (20gig int8 convrot):
* Warmup 157.4
* 2nd 115
Base Int8 Convrot (20gig):
* Warmup 153
* 2nd 106
James Mix (12gig bf16):
* Warmup 146
* 2nd 146
nvfp4 12gig:
* warmup 156
* 2nd 108s
Yeah, I screwed up and uploaded the wrong ones. The right ones are going up now. Sorry!
@Dasher787
Two things are probably going on, and one line of your log will tell us which.
First, check whether nvfp4 is actually running natively. When ComfyUI loads a comfy-native quantised model it prints:
Native ops: int8_tensorwise, nvfp4, mxfp8, asym_w4a8_int8, ... | emulated ops: ...
That line is the only reliable statement of what your machine can do, and nothing in the UI tells you otherwise. NVFP4 needs Blackwell tensor cores, which your 5060 Ti has - but it also needs a recent enough ComfyUI to use them. I have measured the same file run native on one build and emulated on the same card 22 minutes later after nothing but an update.
Your timings are what emulation looks like. At 11.67 GB the nvfp4 fits in your 16 GB outright while the 19.53 GB int8 has to offload - so nvfp4 should be clearly faster, not 108s against 106s. Tying on speed while fitting in VRAM means the compute penalty is eating the offload win. If that line says emulated, you are paying 4-bit quality for zero 4-bit speed, and the answer is simply to use int8 on that machine.
Second, 4 steps is thin for this. Our tested policy here is 10 steps on the reference path and 12 with no reference, euler/beta - a 6-step ladder got overruled by eye. Quantisation error shows up worst where sampling is thinnest, and "noticeable motion blur" at 4 steps is exactly where an under-sampled turbo render and a low-precision weight set compound each other. Before concluding the file is bad, re-run the same A/B at 10 steps. If the gap closes, it was the step count interacting with the quant rather than the quant alone.
There is a better option for your card than either of these. A w4a8build is going up on this page now - 11.68 GB, so it fits your 16 GB the same way nvfp4 does, but asym_w4a8_int8 is native much further back than NVFP4 is.
I have it running native on a 3090 here, verified over ten consecutive chained shots at a flat ~45 s/it, and your 5060 Ti is newer than that card.
One caveat: the format did not exist in ComfyUI 0.30 and raises a KeyError there, so you need a current build - which you will want anyway for the reason above.
If nvfp4 is emulating on your machine, w4a8 is the file that gives you the small size AND native execution instead of making you choose.
And the general rule, which I should have put on the model page: a file fitting in your VRAM does not mean it runs natively. Pick a comfy-native quant by architecture first and size second. On a card and build where nvfp4 is emulated, the bigger int8 is the better model in every way that matters.
For what it is worth I have seen nvfp4 underwhelm here too on a high-resolution render, so you are not chasing a ghost. If you post the Native ops line I can tell you which of the two problems you have.
@joeygambino Thank you for the response! I'll download the correct model then and re-do the tests and let you know about the log line.
@joeygambino Your model isn't up yet, but I'm testing Kijai's w4a8 model with a similar size: My log says
Native Ops: convrot_w4a4, float8_e5m2, float8_e4m3fn, int8_tensorwise, mxfp8, nvfp4, w4a8_int8
Testing with your model now. Switched up my flow so I'm doing:
.5 megapixels, 5 seconds, res_multistep/simple, 12 steps, using Comfy Kitchen attention and Spectrum.
On the int8_convrot (the 20gig one), I get good quality in 193s.
On both your model and Kijai's model, I get moderate quality in 187s.
So unless I'm doing something wrong or the log line points to a specific problem, it's worse results with no real speed improvement.
Mine just landed.nvfp4 is in your native list. It is running on your Blackwell tensor cores properly and emulation has nothing to do with what you are seeing. I guessed emulation because your timings look exactly like it: 11.67 GB fits your 16 GB outright while the 19.53 GB int8 has to offload, so nvfp4 should have won on speed by a wide margin rather than tying at 108s against 106s. That reasoning was wrong. At 0.5 MP over 5 seconds at 4 steps the run is short enough that model load, text encode and VAE dominate the wall clock, leaving almost no
matmul time for a faster format to save. Your speed test is being masked by the workload being small, not by the format being emulated.
So the quality difference you are seeing is real 4-bit precision loss, not a broken build. That is worth knowing rather than chasing.
Two things I would still try before settling on int8. Raise the step count. 4 steps is thin. Our tested policy here is 10 on the reference path and 12 with no reference, euler/beta - we tried a 6-step ladder and it got overruled by eye. Quantization error shows up worst where sampling is thinnest, and "noticeable motion blur" at 4 steps is exactly where an under-sampled turbo render and a low-precision weight set compound one another.
Re-run the same A/B at 10 steps. If the gap narrows, the file was never the whole story.
Testing Kijai's in the meantime is exactly the right move. w4a8_int8 is in your native list, it is the same ~11.7 GB class as nvfp4, and it keeps activations at 8-bit rather than going 4-bit throughout. I run it natively on a 3090 here, verified over ten consecutive chained shots at a flat ~45 s/it. I have NOT done a controlled nvfp4-vs-w4a8 comparison at identical settings, so I will not promise you it is better - but on your hardware both are native, so whatever you measure is a clean result.
If neither closes the gap, use int8. On a 16 GB card it offloads and still comes in at 106s for you, which is a completely reasonable price for the quality you said you preferred. I do have an int8 going up now as well, could be an hour though. I haven't done an A/B between mine and Kijai's to know if they're any different though - I didn't even know he put any up yet, I thought he just had LoRA's.
@joeygambino Posted another comment in here with the results. Both your w4a8 model and Kijai's showed no speed improvements in a non-turbo 12-step generation, but showed about a 30% drop in quality compared to the int8 (20 gig) model.
@Dasher787 Could you open a discussion on HF (joeygambino/MiniMax-H3-Multishot-Workflow · New Discussion) and add a video to it, so I can grab the meta data and look at your workflow? Or export the workflow?
Are you using all of the same settings for both INT8 and w4a8?
I can understand the quality difference - but the speed just doesn't make any technological sense.
@joeygambino Will do. I don't have a hf account so. Might be a day or two. But yea same settings. Only thing I do is swap the model and unload model and execution cache in between.
@joeygambino I should note, I'm just using the standard template workflow for text2video that came with comfyui. Only things I added to it were the Power Lora Loader, the ModelAttentionBackend node (set to comfy kitchen), and for the last non-turbo test, Spectrum Apply MiniMax H3 node (with default settings). No other changes or nodes.
Hate to tell you, but all but one of the files show as ref2va, Only one says it's fl2va
AH DAMNIT. Re-uploading now.
Thanks, these small files really save your ass when you need to do larger videos!
@joeygambino Oh, and these files seem to be downloading with the right name, go figure.
@clevenger Civ just likes to do whatever it wants. There must be some magic naming convention I am not aware of that I followed accidentally to get it to work this time.
