Skip to content
ModelListedExternal
Browse files

MiniMax-H3 Text Encoder GGUF (Qwen3-VL)

CIVITAI IS RENAMING EVERY DOWNLOADED FILE THE SAME THING. MAKE SURE YOU SAVE-AS AND NAME THE FILE SO YOU KNOW WHAT IT IS.

KindTextEncoderBase modelMiniMax H3Versionv1.0

Model source

Kind
TextEncoder
File size
1.12–21.6 GB
Base model
MiniMax H3
Version
v1.0
Updated
Oct 14, 2026
Source
Civitai

Source description

CIVITAI IS RENAMING EVERY DOWNLOADED FILE THE SAME THING. MAKE SURE YOU SAVE-AS AND NAME THE FILE SO YOU KNOW WHAT IT IS.

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:

☕ Buy me a coffee on Ko-fi

💛 Sponsor on GitHub

🔁 Liberapay (recurring)

⚡ Or right here: the Civitai tip button on this page sends Buzz directly

The text encoder half of MiniMax-H3, quantized. H3 runs on two separate models: the 33B video+audio DiT, and this — a Qwen3-VL-32B vision-language encoder . The DiT on its own will not generate anything. If you downloaded the H3 GGUF weights and had nowhere to point the CLIP loader, this is the missing file.

Load this with H3ClipLoaderAny , not “CLIPLoader (GGUF)”. ComfyUI-GGUF's own CLIP loader has no minimax type, and it silently falls back to another architecture instead of erroring — so you get a confusing crash deep inside a tokenizer ( TypeError: the JSON object must be str, bytes or bytearray, not NoneType in flux.py ) rather than “unknown type”. And even with the right type it still would not work: this file is Qwen3-VL-32B cut to 50 layers with no final norm and no lm_head, and its vision tower uses different tensor names than llama.cpp writes. H3ClipLoaderAny (category loaders/minimax , from ComfyUI-H3-Multishot ) does that surgery on load. Set type = minimax .

The files

Q4_K_M — 19.8 GB · about 16.5 GB resident. Recommended.

Q5_K_M — 23.2 GB · higher precision, more VRAM.

mmproj F16 — 1.2 GB · the multimodal projector. Download this one too. See below.

Yes, these are real K-quants — unlike the H3 DiT, which cannot have them. K-quants need weight rows divisible by 256, and the DiT's hidden width is 2688, which is not. This encoder is a stock Qwen3-VL and its rows are, so the whole K-ladder is available here.

The mmproj is not optional — and it pairs by filename

The mmproj is the encoder's vision path . Everything that conditions on an image goes through it: image-to-video, reference-to-video, and multi-shot chaining — chaining works by feeding the previous shot's last frame back through the encoder as an image, so it needs the projector even when you never attached a reference picture yourself.

ComfyUI-GGUF locates it by matching the encoder's filename . Rename either file, or keep them in different folders, and pairing silently fails. Text-only prompts keep working, which is exactly what makes this hard to diagnose — it presents as the model ignoring your reference image rather than as a missing file.

Keep both names exactly as downloaded, in the same folder. The attached setup pack includes check_encoder_setup.py , which tells you in one line whether the pairing resolves.

Install

ComfyUI/models/text_encoders/ MiniMax-H3-encoder-Q4_K_M.gguf MiniMax-H3-encoder-mmproj-F16.gguf

Load with CLIPLoaderGGUF from ComfyUI-GGUF , or with H3ClipLoaderAny from ComfyUI-H3-Multishot , which takes .safetensors or .gguf in one dropdown. Set the CLIP type to minimax .

No architecture patch is needed for the encoder. The H3 DiT needs minimax_h3 added to ComfyUI-GGUF's image-architecture list; this file is Qwen3-VL, and qwen3vl is already in its text list. Nothing to run.

VRAM — read this before reporting a slow render

The encoder (~16.5 GB) and the H3 DiT (~25 GB) do not co-fit on a 32 GB card . If both are held at once, the DiT loads partially and streams the remainder from system RAM on every sampling step. Measured on an RTX 5090 — 960×544, 124 frames, 20 steps, ref2va-Q5_1 , one reference image: 12.3 minutes with the encoder evicted. The un-evicted run of the same render was killed past 90 minutes without finishing, so there is no honest completion time for it.

This is a cliff, not a curve : either the DiT is resident and you get normal speed, or it is not and you stream ~19 GB every step. How bad it gets depends on how far over your card you are, not on resolution or frame count directly — so do not read a single speed-up ratio as a general figure.

The tell in your log is:

loaded partially; 6423 MB usable, 5847 MB loaded, 19363 MB offloaded

The fix is to evict the encoder after conditioning and before sampling. The samplers in ComfyUI-H3-Multishot do it automatically and print [H3Multishot] TE evicted; NN.N GB free for the DiT .

What else you need to run H3

MiniMax-H3 GGUF — the DiT ( fl2va or ref2va ), on Hugging Face and in my Civitai listings.

Comfy-Org/MiniMax-H3 — the video and audio VAEs.

ComfyUI-H3-Multishot — multi-shot, I2V, and the encoder eviction above.

Everything else I've published

This encoder on Hugging Face

H3 DiT weights on Hugging Face

The multishot workflow

All models on Hugging Face

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 .

Sources

1 source
CivitaiPrimaryVersion 3198647
civitai.com/models/2834385

Verified Oct 14

Download files

Model artifacts

3 artifacts

minimaxH3TextEncoderGGUF_v10_3079791.gguf

gguf · 1.12 GB · SHA-256 448b7ab3ca0b…d7ea · Civitai

Download file

minimaxH3TextEncoderGGUF_v10_3079928.gguf

gguf · 18.4 GB · SHA-256 8994ad7a7b14…648c · Civitai

Download file

minimaxH3TextEncoderGGUF_v10_3079949.gguf

gguf · 21.6 GB · SHA-256 6bffa2b629f4…185e · Civitai

Download file

Source excerpts

1 excerpt

Source context: 921 downloads · Type TextEncoder · Base model MiniMax H3