Nodes/Tojioo Passthrough/Dual CLIP Text Encode
ComfyUI Node

Dual CLIP Text Encode

Positive and negative conditioning from one node, one CLIP

By Tojioo·Created 11 months ago·Updated 7 months ago· 13
Dual CLIP Text Encode
  • clip
  • positive
  • negative
positive
negative

This is the one node in Tojioo Passthrough that actually does something instead of just carrying wires - it's a combined CLIP text encoder. Feed it one CLIP model plus your positive and negative prompts, and it hands back both conditionings. The pitch is tidy: most workflows run two separate CLIP Text Encode nodes side by side, and this collapses them into a single node that encodes both from the same CLIP model, so there's no chance the two halves drift apart or you forget to swap a prompt.

It arrived in v1.7.0 (February 2026), and it reads as the pack's most generally useful node if you do any SD 1.5 or SDXL work at all.

How it works

Under the hood it's the standard ComfyUI encode dance, just twice in one function. It tokenizes both strings with your CLIP model, then runs encode_from_tokens_scheduled() on each:

positive_tokens = clip.tokenize(positive)
negative_tokens = clip.tokenize(negative)
positive_cond = clip.encode_from_tokens_scheduled(positive_tokens)
negative_cond = clip.encode_from_tokens_scheduled(negative_tokens)

Nothing exotic - which is exactly what you want from an encoder. One honest caveat from the wider landscape: negative prompts are inert on the guidance-distilled flow-matching models that dominate 2026 local generation (Flux, Z-Image and friends at CFG 1 have no unconditional pass to steer). For those, the negative box is decoration. For SD 1.5, SDXL, Pony and the rest of the classifier-free-guidance family, this is the real deal.

Inputs and outputs

  • clip (CLIP, required) - the text encoder. From a checkpoint, or a dedicated CLIP loader.
  • positive (STRING, multiline) - your prompt.
  • negative (STRING, multiline) - the negative prompt.
  • Outputs: positive (CONDITIONING) and negative (CONDITIONING), in that order.

The two text boxes are marked dynamicPrompts, so prompt randomization syntax works in them. Both outputs feed the KSampler's positive/negative sockets (or, on SDXL, the CLIP-encoders-plus-concat pattern if that's how you're wired).

Install

Manager → search "Tojioo Passthrough" → Install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Tojioo/tojioo_passthrough.git

No models to fetch, no extra pip packages - just ComfyUI's own runtime. It's a small single-maintainer pack (GPL-3.0); the author posts updates on r/comfyui and is genuinely responsive to feedback. You'll find the node under Tojioo Passthrough → Other.

Common issues

The one real failure mode is a None clip, and the pack handles it well: it raises a RuntimeError that tells you straight - if the clip came from a checkpoint loader, your checkpoint doesn't contain a valid clip or text encoder model. That's the Flux-without-a-separate-CLIP-loader situation, and also the "I loaded a GGUF checkpoint that stripped the text encoder" situation. Fix: use a proper CLIP loader node and feed that in. Beyond that, the only thing that bites people is expecting the negative prompt to matter on a distilled model - it won't, and no node can change that.

CategoryTojioo Passthrough/Other

Inputs (3)

NameTypeDefaultDescription
clipCLIP
positiveSTRING
negativeSTRING

Outputs (2)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING