Nodes/ComfyUI-H3-Multishot/H3 Free Text Encoder (VRAM)
ComfyUI Node

H3 Free Text Encoder (VRAM)

The one-node fix for the 16GB text encoder squatting on your card

By jlucasmcrell·Created 21 days ago·Updated 2 days ago· 31
H3 Free Text Encoder (VRAM)
  • conditioning
  • clip
  • CONDITIONING

This node exists because of a specific, maddening failure mode, and it's the cleanest fix for it you'll find anywhere. H3's text encoder is a ~16.5GB Qwen3-VL model. The DiT is ~25GB. On a 32GB card, that's ~41GB of weights against 32GB of VRAM. Something has to give - and with the stock ComfyUI H3 nodes, what gives is your sampling speed: the encoder stays resident while the DiT loads, the DiT loads only partially, and the rest streams from system RAM on every single sampling step. That's not an error, it's a crawl. H3FreeTextEncoder is the one-node cure.

How it works

The insight is timing. Text encoding runs for seconds per shot; the encoder then sits there doing nothing while the DiT samples for minutes. This node sits between your conditioning node and the guider - by which point your conditioning is fully computed and the encoder's weights are safe to release. When it executes, it evicts the text encoder from VRAM, passes the conditioning through untouched, and the sampler pulls the DiT in immediately afterward. That's exactly the window that matters.

Inputs: conditioning (in), clip (in) - it needs the CLIP object so it can offload the right thing - and conditioning (out), unmodified. That's the whole node. It does no math on your conditioning; its entire job is a free_memory call at the right moment.

Where it fits

The pack's own samplers do this internally, which is why you only need this node when you're building on the stock MiniMax H3 nodes - reference-to-video, image-to-video - which never do it. There's no free_memory or text_encoder_offload call anywhere in the stock H3 node file. So if you're hand-building an H3 graph with stock nodes and wondering why a render that should fit is crawling, this is the node you were missing: drop it between the text encoder output and the guider, and the encoder's 16.5GB comes off the card before the 25GB DiT asks for room.

It's also a useful pattern for the pack's remote-encoder setup, where the text encoder lives on a second machine - on a single card, though, it's the difference between a partial DiT load and a full one. If you're on a 24GB card this matters even more; every GB you reclaim from the encoder is a GB of resident weights the sampler doesn't have to stream.

Install

Ships in the H3 Multishot pack:

cd ComfyUI/custom_nodes
git clone https://github.com/jlucasmcrell/ComfyUI-H3-Multishot

or ComfyUI-Manager → H3 Multishot. Restart; ComfyUI v0.30.0+. No extra dependencies.

One note: don't wire it in front of the conditioning node - the encoder has to run before it's safe to evict, and the node needs a completed CONDITIONING to pass through. Right place is between conditioning and guider. Wrong place, and you either can't connect it or you're evicting an encoder that still has work to do.

Categoryconditioning/video_models

Inputs (2)

NameTypeDefaultDescription
conditioningCONDITIONING
clipCLIP

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING