CLIP Text Weight ⚖️
Prompt Strength as a Slider Instead of Bracket Soup
- clip
- conditioning_in
- conditioning
Prompt weighting has a classic ComfyUI friction point: you express emphasis as (word:1.3) inside a text box, and fine-tuning it means editing text, re-encoding, and hoping you didn't break the syntax. CLIP Text Weight moves that dial out of the prompt and onto a slider. You type the prompt once and control its strength with a weight FLOAT - no brackets, no retyping, no syntax errors.
Mechanically it's straightforward: encode the prompt with the CLIP model, then multiply the conditioning tensor (and the pooled output) by the weight scalar. Negative weights work too - useful for the same "negative LoRA" trick, where you push a concept away instead of toward. The range is -3 to 3, and for the SD1.5/SDXL-style encoders this is the same math the bracket syntax produces under the hood.
The input that does the real work
weight is the star - default 1.0, slide it up to push the concept harder, down toward zero to weaken it. The practical range matches what the KB's prompt-engineering essay records for bracket weights: roughly 0.5–1.5. Below 0.5 a concept barely registers; much above 1.5 you get oversaturation and distortion, not more emphasis.
There are two optional inputs that turn this into more than a weighted encoder:
conditioning_in- feed it an existing conditioning and the node blends the newly-encoded prompt with it.blend_ratio- controls that blend: 1.0 is pure new prompt, 0.0 is pure incoming conditioning, anything between is a weighted mix.
So it's really two nodes in one: a weighted encoder, and a two-conditioning blender with a ratio slider. A neat pattern is wiring one of these per concept and blending them - e.g. "character" at one weight and "environment" at another, tuned separately without ever editing a prompt string mid-iteration.
Where people get burned
The big one, from the prompt-engineering side of the KB: weighting does nothing on LLM-encoded models. Flux, Z-Image, and friends pass (word:1.4) through as literal text, and a scalar weight applied to an LLM-produced conditioning isn't the clean "more or less emphasis" it is on a CLIP encoder. On SD1.5/SDXL/Illustrious/Pony this node is a genuine quality-of-life upgrade; on Flux-era models, treat the numbers with suspicion.
Also worth knowing: because this node encodes the prompt internally, you're replacing the standard CLIPTextEncode → KSampler chain with this node feeding the sampler directly. If you already have a well-tuned workflow, subbing this in changes nothing about the output at weight 1.0 - it just gives you the knob.
Install
ComfyUI Manager → search OmniNodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/TensorVizion/OmniNodes
Restart ComfyUI; it's under TensorVizion/Model Utilities. No extra dependencies.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| prompt | STRING | — | |
| weight | FLOAT | 1.00-3–3 | — |
| conditioning_inopt | CONDITIONING | — | |
| blend_ratioopt | FLOAT | 0.500–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |