BlehBlendConditioning
Blend two prompts with actual control
- conditioning_1
- conditioning_2
- CONDITIONING
ComfyUI's built-in conditioning combine and average nodes are pretty blunt instruments - they don't handle multiple conditioning items gracefully, and they don't respect the time ranges you might have attached to a prompt (from something like a ConditioningSetTimestepRange node upstream). This node is the more capable version: it blends two conditionings while actually understanding both of those things.
The one thing it explicitly does not understand is anything like regional conditioning masks - it respects time ranges, not spatial ones. And the node's own description makes a point worth internalizing before you build a workflow around prompt blending in general: conditioning is a sequence of encoded tokens, not concepts. Blending "a cute dog" with "sketch of a cat" doesn't blend the ideas of dog and cat - it blends token 1 with token 1, token 2 with token 2, and so on, so "a" gets mixed with "sketch," "cute" with "of," and so forth down the sequence. It's positional interpolation, not semantic interpolation. Manage expectations accordingly, especially with prompts of very different lengths or sentence structure.
Inputs that matter: conditioning_1 and conditioning_2 are the two things being blended. blend_mode defaults to lerp (plain linear interpolation, the safe default), though the pack exposes roughly 486 blend modes total if you want to dig into the same blending library bleh uses for latents - most of those are experimental and not something you need on day one. strength (0.5 default) sets how much of conditioning_2 gets mixed in. blend_cond_tensor (default true) controls whether the base conditioning tensor itself gets blended at all - turn it off if you only want to blend a secondary tensor like pooled_output while keeping conditioning_1's actual tokens untouched, which is what blend_tensors (default "pooled_output") names as a comma-separated list.
Then there's the part that actually matters once your two prompts aren't the same length, which is most of the time: size_mismatch_strategy decides what happens. zero pads the shorter one with zeros - ComfyUI's normal behavior. match_cond_1/match_cond_2 forces the result to one side's shape. replicate tiles the smaller tensor to fit the larger one, which the tooltip notes is well-suited to CLIP conditioning specifically, since size mismatches there land in increments of the 77-token CLIP limit. error just refuses rather than guessing, if you'd rather know something's wrong than get a silently weird blend. size_mismatch_alignment_mode (left/right/center) only matters for the padding strategies, controlling where the padding goes relative to your actual content.
metadata_base_mode (default prefer_cond_1) decides which conditioning's non-tensor metadata - timestep ranges, area info, that sort of thing - survives into the merged result, preferring conditioning_1's if it exists and falling back to conditioning_2's otherwise.
Output is a single CONDITIONING, wired into your sampler exactly like a normal prompt encode. Install is the standard route for the whole pack - ComfyUI Manager or a manual git clone into custom_nodes, then restart. No extra dependencies. If a blend comes out as word soup rather than a coherent mix of the two prompts, that's the token-level blending behavior described above doing exactly what it's supposed to, not a bug - try prompts closer in length and structure, or drop strength before assuming something's broken.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning_1 | CONDITIONING | — | |
| conditioning_2 | CONDITIONING | — | |
| blend_mode | COMBO | lerp | 486 options: a_only, b_only, bislerp_wrong, slerp, colorize, cosinterp, +480 |
| strength | FLOAT | 0.50-99999–999999 | — |
| blend_cond_tensor | BOOLEAN | true | Controls whether the base conditioning tensor is blended. When disabled, this will use the conditioning tensor from conditioning_1. |
| blend_tensors | STRING | pooled_output | Comma-separated list of other tensors to blend if they exist (for example pooled_output) |
| metadata_base_mode | COMBO | prefer_cond_1 | Controls what metadata ends up in the blended conditioning item. Items in the blend_tensors list will always be included. Possible values: cond_1 - Uses conditioning_1 cond_2 - See above prefer_cond_1 - Uses the key from conditioning_1 if it exists, otherwise conditioning_2 prefer_cond_2 - See above. empty - Starts with empty metadata. |
| size_mismatch_strategy | COMBO | zero | Handles the case of size mismatches between items to be blended. zero - Uses the larger size, fills extra elements with zero (how ComfyUI usually handles it) mean_cond_1 - Same as above, uses the mean from conditioning_1. mean_cond_2 - See above. match_cond_1 - Matches the size to conditioning_1. Similar to choosing larger/smaller mode per-dimension (so alignment may apply). match_cond_2 - Same as above aside from using conditioning_2's sizes. replicate - Replicates the smaller size to match the larger. It is an error if the sizes aren't evenly divisible. May be use for conditioning types like CLIP where mismatches will be increments of the CLIP max tokens size (77). larger - Uses the values from the item with the larger size. smaller - Prunes the tensor to the smaller size. error - Size mismatches are an error. |
| size_mismatch_alignment_mode | COMBO | left | Only applies to size mismatch strategies that use the larger size and pad. left - Aligns existing values to lower indexes, padding will apply after them. This is ComfyUI's normal behavior, the other options are probably quite weird. right - Padding will apply to lower indexes. center - Tries to center (left-biased when the size isn't divisible by 2) populated values in the space. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |