Load MiniMax H3 Text Encoder
MiniMax H3's Text Encoder, Recovered and Pruned So It Actually Fits
- CLIP
The part of H3 nobody warns you about
MiniMax H3 is a 33B omni-modal video model, and it got day-zero ComfyUI support. The piece that decides whether it runs on your card, though, isn't the 33B diffusion model - it's the text encoder in front of it, an H3-shaped Qwen3-VL derivative that turns your prompt into the 5120-wide conditioning the model reads. Encoders are a second VRAM budget, and this one usually doesn't fit.
So the community did what it does: pruned the encoder, distilled the student back against the original's hidden states, and patched the residual with low-rank adapters. That's where "recovered" comes from. The pack is by the same people behind the pruned Klein 9B text encoder and the Z-Image 1.7B student adapter - GitHub kgonia, weights under the SearchingMan Hugging Face org. One node loads all four packages.
What the node actually does
One node, and it's a loader: pick a package from a dropdown, get a CLIP, wire it into MiniMax H3 Image to Video. The readme is blunt about the goal - no adapter node, no ARA node, no cache node, no barrier node. Other routes to these encoders need a chain of them.
Two package families, and the mechanism differs:
recovered_8bbuilds a 24-layer text-only Qwen3-VL-8B in memory, deletes the vision tower, wraps four projection types per listed layer (o_proj,gate_proj,up_proj,down_proj) in an ARA low-rank correction, and pipes the final hidden state through a trained 4096→5120 conditioning adapter. That adapter is real weights and it lives inside the loader - which is why you can't see or configure it.pruned24_balancedtakes the official H3 encoder, swaps the manifest's removed blocks for identity placeholders, and injects the ARA adapters through ComfyUI's own weight-injection manager.
Two variants per directory, so four dropdown entries.
Which one to pick
INT8 ConvRot is the community-invented format ComfyUI made native in v0.27.0 - better quality than fp8, genuinely fast, and it runs on 20/30/40/50-series. That's your default. Take recovered_8b_bf16 only if you have headroom and want the least meddled-with path. nvfp4_awq is Blackwell-only, so off a 50-series card it isn't slower, it's broken. The pruned-24 pair is heavier than the 8B pair, because the real encoder is underneath.
The input and output that matter
text_encoder - the only input, a dropdown built by scanning ComfyUI/models/text_encoders/ for package manifests when the node asks for its inputs. Each entry is labelled directory: variant. That's the entire configuration surface.
The single output is CLIP, which goes into the clip input of MiniMax H3 Image to Video. In the pack's example workflow it sits next to the official minimax_h3_fl2va_pruned_int8_convrot file, both VAEs, and the usual sampler chain (MiniMaxH3SigmaShift, SamplerCustomAdvanced, VAEDecode + VAEDecodeAudio, CreateVideo).
Install
Install the pack through ComfyUI Manager by searching MiniMax H3 Text Encoders, or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/kgonia/ComfyUI-MiniMaxH3TextEncoders
There are no pip dependencies: the project declares none, and everything it touches is ComfyUI's own code. So your ComfyUI version is the real requirement - it imports comfy.text_encoders.minimax and comfy.weight_adapter.BypassInjectionManager, which older builds lack.
Then copy a complete package directory from SearchingMan/MiniMax-H3-Text-Encoders into ComfyUI/models/text_encoders/, restart, and drag example_workflows/minimax_h3_recovered_8b_int8_convrot_t2v.json onto the canvas. Copy it as a unit - base, ara.safetensors, conditioning_adapter.safetensors and the manifest live at the top level of that folder. You also need the official diffusion model and both VAEs from Comfy-Org/MiniMax-H3.
Where people get burned
The dropdown is empty. Normal before you've downloaded a package - the node exists, it just has nothing to list. If you have one installed, restart ComfyUI; the list is rebuilt when the node asks for its inputs again.
"Selected package is missing. Reopen the workflow after model files are installed." A saved workflow names a package by directory: variant, and that string no longer matches your disk - usually a renamed folder, or a download that nested a level deeper than intended. Files must sit directly in the package directory.
SHA-256 mismatch for <file>. Everything the node loads is hashed against the manifest first, so a truncated or resumed download lands here. Re-download the package; don't hand-edit the manifest. Because that check reads the whole base file before loading starts, the first hit after a restart is slower than a plain CLIP loader.
You fed it an image or a reference. The recovered package's tokenizer refuses vision inputs by design - it raises Recovered MiniMax-H3 encoders support text-only T2V. Use the official encoder for first-frame or reference conditioning.
Your (word:1.4) and BREAK do nothing. This is an LLM encoder - write sentences, not tag soup, and leave the CLIP-era weighting syntax out of the prompt.
One more, if you're outside the US/EU/UK/Korea: the encoder weights here are Apache-2.0 derivatives of Qwen3-VL, but the H3 diffusion weights they pair with ship under the MiniMax H3 Community License, which excludes those regions from its Applicable Territory - outputs included. No node fixes that.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text_encoder | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CLIP | CLIP | — |