Nodes/OmniNodes/CLIP Text Weight ⚖️
ComfyUI Node

CLIP Text Weight ⚖️

Prompt Strength as a Slider Instead of Bracket Soup

By TensorVizion·Created 3 months ago·Updated about 8 hours ago· 0
CLIP Text Weight ⚖️
  • clip
  • conditioning_in
  • conditioning
prompt
weight1.00
blend_ratio0.50

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.

CategoryTensorVizion/Model Utilities

Inputs (5)

NameTypeDefaultDescription
clipCLIP
promptSTRING
weightFLOAT1.00-3–3
conditioning_inoptCONDITIONING
blend_ratiooptFLOAT0.500–1

Outputs (1)

NameTypeDescription
conditioningCONDITIONING