Checkpoint & Sampler for DualCLIP
One Node for Models Whose Text Encoder Lives in a Separate File
- optional_lora_stack
- optional_controlnet_stack
- image
Some of the most interesting models won't run in the standard loader, because their text encoder isn't bundled in the checkpoint - it lives as a separate file you have to point ComfyUI at explicitly. Checkpoint & Sampler for DualCLIP is the whole pipeline in one node, tuned for exactly that situation: it loads the checkpoint, builds a CLIP from two text-encoder files, encodes your prompt, samples, and hands you an image.
What "DualCLIP" means
The standard checkpoint loader assumes one bundled text encoder. DualCLIP models split the job across two - SDXL uses clip_l plus clip_g, while SD3 and Flux pair clip_l with a large t5xxl encoder. This node's clip_name1 and clip_name2 dropdowns read from your text_encoders folder, and the types dropdown (sdxl/sd3/flux) tells it how to combine them. It's the setup that trips up people switching from SDXL to Flux: the unet/transformer comes with the checkpoint, but the T5 encoder is a several-gigabyte file that has to be downloaded and selected separately.
How it works
Same skeleton as the pack's main checkpoint_sampler: cached model, optional lora/controlnet stacks, resolution presets, full sampler controls, VAE decode at the end, single IMAGE output. The difference is the CLIP construction - it picks the right CLIP type based on your types choice and sanity-checks the filenames (SDXL wants one file with clip_l and one with clip_g; sd3/flux want clip_l plus a t5 file). Get the pairing wrong and the encoding path won't match, so the dropdown values aren't just decoration - they have to line up.
The inputs that matter
ckpt_name- the model itself.clip_name1/clip_name2- your two text encoders.types- sdxl, sd3, or flux. Set it to match the model family.resolution,positive_text,negative_text,steps,cfg,seed,sampler_name,scheduler,denoise,batch_size- the standard sampler suite from the main node.optional_lora_stack/optional_controlnet_stack- the pack's stack nodes plug in here.
The negative text ships prefilled with a solid generic negative, and the resolution presets include the SDXL aspect ratios.
The honest take
This node's reason to exist is that SD3/Flux-family setups involve more files and more decisions than the one-dropdown world of SD 1.5. Folding the whole thing into one node hides a lot of that - genuinely helpful when you're juggling text encoders, but it's also an opaque box when the CLIP pairing is wrong and you get nonsense instead of an image. If you're on plain SDXL with a normal checkpoint, you don't need this node; if you're wrestling with separately-stored encoders, this is a real time-saver.
Installing it
From windfancy/zsq_prompt - ComfyUI Manager, search "zsq_prompt", install, restart; or:
cd ComfyUI/custom_nodes
git clone https://github.com/windfancy/zsq_prompt
then restart. Heavy requirements install alongside (transformers, onnx, ultralytics) but the sampler path runs on ComfyUI's own stack. And the familiar caveat: Manager may flag zsq_prompt as "conflicting" due to generic class names - the community's advice is to ignore it unless you're genuinely running the other pack.
Verdict
Niche but purposeful. If you only run single-file checkpoints you'll never open it; if you run SD3 or Flux with separate text encoders, it's the fastest way to a working prompt-to-image graph in one box.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | 0 options: | |
| clip_name1 | COMBO | 0 options: | |
| clip_name2 | COMBO | 0 options: | |
| types | COMBO | 3 options: sdxl, sd3, flux | |
| resolution | COMBO | 33 options: width x height, 128 x 128, 256 x 256, 512 x 512, 512 x 768, 576 x 1024, +27 | |
| positive_text | STRING | — | |
| negative_text | STRING | bad proportions, low resolution,worst quality, low quality, normal quality,lowres, inaccurate limb, bad, ugly, terrible, extra fingers, fewer fingers, missing fingers, extra arms, extra legs, inaccurate eyes, bad composition, bad anatomy, error, extra digit,fewer digits, cropped, low res, jpeg artifacts, trademark,artist's name, username, watermarksignature, watermark,text, words | — |
| batch_size | INT | 11–20 | — |
| steps | INT | 201–100 | — |
| cfg | FLOAT | 7.50–30 | — |
| seed | INT | 00–18446744073709550000 | The random seed used for creating the noise. |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 1.000–1 | — |
| optional_lora_stackopt | ZSQ_LORA_STACK | — | |
| optional_controlnet_stackopt | ZSQ_CONTROL_NET_STACK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |