Conditioning (Blend)
One subject that's genuinely between two prompts
- conditioning_a
- conditioning_b
- conditioning_c
- conditioning_d
- conditioning_e
- conditioning_f
- conditioning_g
- conditioning_h
- conditioning_i
- conditioning_j
- conditioning_k
- conditioning_l
- conditioning_m
- conditioning_n
- conditioning_o
- conditioning_p
- conditioning_q
- conditioning_r
- conditioning_s
- conditioning_t
- conditioning_u
- conditioning_v
- conditioning_w
- conditioning_x
- conditioning_y
- conditioning_z
- conditioning
Combining two prompts in ComfyUI usually means concatenation - Conditioning (Combine) glues them together and the model tries to draw both things at once. You get a picture containing a cat and a dog. Conditioning (Blend) does the other thing: it mixes the two embeddings arithmetically so you get something in between them. Same latent arithmetic the "prompt interpolation" crowd has been doing by hand for two years, in one node with twelve formulas.
The mechanism, and why it needs a pooled output
It reads the embedding and the pooled output from each conditioning, applies the chosen formula to both, renormalises, and hands back one conditioning carrying the blended pair. Pooled output is not optional here - it's the part SDXL and Flux-style models use for global conditioning, and a plain SD 1.5 text encode doesn't have one. Feed this node an SD 1.5 encode and it raises, telling you the input carried no pooled output. If you're on SDXL, Flux, or anything else with a pooled vector, you're fine.
Only the first entry of each conditioning is read. That means you feed it plain text encodes - not something that's already been concatenated, area-masked or scheduled. It's a blender, not a merger.
conditioning_a is what you blend away from, conditioning_b is what you blend towards, and the optional slots conditioning_c through conditioning_z chain on: each further slot is blended onto the result of everything before it, with the same mode and strength. The interface reveals the next slot as you fill the current one, so you never see the alphabet coming until you're deep in it.
Which mode, which strength
blending_mode is where the fun and the confusion live. lerp is the straight mix and the one to reach for first - at blending_strength 0.5 you're halfway between the two prompts. bislerp and slerp are the same straight mix here, whatever the names suggest. cosine interp and cuberp are that mix with the ends held longer. add balances the pair, inject layers the newer prompt on top, and difference and exclusion keep only what the two disagree on, which pushes the result away from both - genuinely useful for wrecking a too-obvious prompt, genuinely useless if you wanted a clean midpoint.
blending_strength runs −10 to 10 and every mode reads it its own way. Watch the direction: with lerp and the straight mixes, 0.0 takes the next prompt and 1.0 keeps the result so far; add and cosine interp run the other way round. Values outside 0–1 push past either prompt, which is how you get caricatures of both.
seed only does anything for the random mode, which varies the mix per element. Set it above 0 and the run repeats; leave it at 0 and the random source is untouched, so random will differ run to run. Every other mode ignores the seed entirely, and the node leaves the global torch seed alone when it's 0 - no silent side effects on the rest of your graph.
Installing it
Part of WAS Node Suite v3 (MIT, WASasquatch; 468 nodes, one of the original big ComfyUI packs), installed as a pack:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
Or ComfyUI Manager, searching WAS Node Suite v3. Needs ComfyUI 0.14.0+ and Python 3.10+. The pack installs no Python packages and downloads nothing - worth saying out loud, because the top search results for it are v2-era "Cannot import … module" threads about OpenCV and numba, and none of that survives into v3. If a node from the pack is missing from your menu, look at the feature groups in <ComfyUI user dir>/was-node-suite/config.yaml before you go reinstalling; eight of the twenty-two groups ship off.
What it's good for, and the trap
Character-and-style mashing without a LoRA: blend a portrait prompt toward a style prompt and you get one subject with both properties, rather than a prompt fight. It's also the cheap way to find the midpoint of two concepts before you commit to training anything, and to soften a prompt whose grip on the composition is too strong.
The trap is expecting the blend to be free. difference and exclusion produce embeddings that are, on inspection, not a prompt at all; the model will still render something, and it will usually be mush. That's on you, not on the node. Stick to lerp at 0.2–0.8 and you'll get results that read as intentional.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning_a | CONDITIONING | The prompt blended away from. Only its first entry is read, so feed it a plain text encode rather than a combined or scheduled conditioning. | |
| conditioning_b | CONDITIONING | The prompt blended towards. Only its first entry is read, as with conditioning_a. | |
| blending_mode | COMBO | Which formula combines a prompt with the result so far. `lerp` is the straight mix to reach for first; other modes layer, balance or subtract the pair instead. | |
| blending_strength | FLOAT | 0.500-10–10 | How strongly each blend leans, which every mode reads its own way. 0.5 is an even mix. With `lerp` and the other straight mixes, 0.0 takes the next prompt and 1.0 keeps the result so far; `add` and `cosine interp` run the other way round. Values outside 0 to 1 push past either prompt. |
| seed | INT | 00–18446744073709550000 | Seed for the `random` blending mode, so a run can be repeated. 0 leaves the random source as it was, which makes `random` differ from run to run. Every other mode ignores this. |
| conditioning_copt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_dopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_eopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_fopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_gopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_hopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_iopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_jopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_kopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_lopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_mopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_nopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_oopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_popt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_qopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_ropt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_sopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_topt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_uopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_vopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_wopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_xopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_yopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. | |
| conditioning_zopt | CONDITIONING | A further prompt, blended onto the result of the ones before it with the same mode and strength. The interface reveals the next slot as this one is filled. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | The blended prompt, as a one-entry conditioning carrying the mixed embedding and pooled output. Anything else the inputs carried, an area, a mask, a control hint, is not passed on. |