Nifty CLIP Text Encode (Prompt)
Positive and negative prompts in one node, no extra wire clutter
- clip
- positive
- negative
The default ComfyUI way to prompt is two CLIP Text Encode nodes - one for positive, one for negative - each wired to the same CLIP. It works, and it's half the reason beginner graphs look twice as big as they need to. Nifty CLIP Text Encode does both in one node: one CLIP input, two prompt boxes, and two ready-to-sample CONDITIONING outputs.
What it does
Text encoding is how your prompt becomes guidance. The CLIP model turns your words into embeddings, wrapped into conditioning that the sampler uses to steer generation - the positive conditioning pulls toward what you asked for, the negative conditioning pushes away from what you didn't. If you've used ComfyUI at all, this is the same encode happening in the stock node; this version just packs the pair together.
Inputs:
- clip (required) - the CLIP model doing the encoding, straight from a CLIP Loader, DualCLIPLoader, or checkpoint.
- positive (optional) - your main prompt. Multiline, and wired with
dynamic_prompts=Truein the source, so wildcard syntax gets processed. Empty = unconditional embedding. - negative (optional) - what you don't want. Same handling; empty = unconditional.
Outputs: positive and negative, both CONDITIONING, wired into your sampler's positive and negative inputs respectively.
The two text boxes sit on the node itself (socketless widgets), so you type prompts in place rather than hunting for separate nodes. One CLIP wire in, two conditioning wires out.
When it's a good idea
Any workflow where the positive/negative pair travels to the same sampler - which is nearly all of them. It's cleaner than two stock nodes, and because both prompts live on one node, it's easy to keep them visually paired. If you're sharing a workflow, this is the kind of small reduction in node count that makes a graph legible to the person receiving it.
It's not a universal replacement - if you need separate conditioning paths (different CLIPs for positive vs. negative, or conditioning combined from multiple sources), keep the stock split nodes. But for the standard single-sampler case, this is the one to grab.
Install
Part of Nifty Nodes for ComfyUI. Manager: search "Nifty Nodes for ComfyUI" → Install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Stibo/comfyui-nifty-nodes
Restart ComfyUI. No models, no keys, no extra dependencies - it calls the same encoding path ComfyUI uses. The pack is MIT-licensed, v3-API native, and young (v2.1.0, mid-2026).
Gotchas
Two things to know. First, "dynamic_prompts" here means the node processes wildcard-style syntax in your prompt text - fine if that's what you want, but if you're feeding a literal string that happens to contain underscores-and-brackets, it may rewrite it. If you need the raw text untouched, keep it in mind. Second, an empty prompt box produces an unconditional embedding rather than an error - handy for CFG-style guidance tuning, but easy to forget when you blank a box and get surprisingly neutral results. And remember that on modern flow-matching models (Flux-family, WAN, Z-Image and friends), the negative prompt's actual effect ranges from weak to none - that's a model property, not a bug in this node.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | The CLIP model used for encoding the text. | |
| positiveopt | STRING | Positive text prompt to be encoded. Leave empty for unconditional embedding. | |
| negativeopt | STRING | Negative text prompt to be encoded. Leave empty for unconditional embedding. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | Positive conditioning containing the embedded text used to guide the diffusion model. |
| negative | CONDITIONING | Negative conditioning containing the embedded text used to guide the diffusion model. |