FLUX.2 Klein Text Enhancer
The simple, one-stop version of prompt strength control
- conditioning
- CONDITIONING
Klein reads your prompt through a Qwen3 LLM as an instruction, not through CLIP as weighted tags - which means the classic (word:1.4) emphasis syntax simply isn't parsed and does nothing. This pack has two answers to that gap. The full-featured one, FLUX.2 Klein Enhancer, is a mixing board with per-layer controls. This is the other one: four fields, no Klein-specific layer plumbing, good enough for most people most of the time.
What it's actually doing
It modifies the active text embeddings directly - magnitude (overall scale), contrast (how differentiated tokens are from each other), and normalization (how equalized their magnitudes are). It's worth being precise about what it isn't: it does not parse prompt meaning, doesn't assign semantic roles to specific words, and can't selectively boost "the dress" while leaving "the lighting" alone. Everything here is a global operation over the active token region. If you need per-section control - front of the prompt weighted differently from the end - that's what Sectioned Encoder plus Detail Controller are for, not this node.
The inputs that matter
magnitude- required, default1.0. Below 1 weakens the whole prompt's influence, above 1 strengthens it. This is the one field you'll actually reach for most often; it's the closest thing to a global "prompt strength" dial Klein has.contrast(optional, default0) - positive values sharpen how differentiated tokens are from each other; negative values blend them together. Think of it as controlling how distinctly the model treats different concepts in your prompt, not how strong any one of them is.normalize_strength(optional, default0) - equalizes token magnitudes toward the sequence average.0means off.skip_bos(optional, defaulttrue) - skips token 0, the beginning-of-sequence token, which the tooltip notes carries a disproportionately huge norm. Leave this on unless you have a specific reason not to; including the BOS token in magnitude/contrast operations tends to skew results toward that one outlier token.
Output is a single CONDITIONING, wired straight to your sampler's positive input.
Installing it
ComfyUI Manager: search ComfyUI-Flux2Klein-Enhancer, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/capitan01R/ComfyUI-Flux2Klein-Enhancer.git
No extra dependencies.
Where people get burned
magnitude at neutral (1.0) with everything else at 0 is a pass-through, so this is safe to drop into a working graph and dial up from there. The mistake people make is expecting contrast to behave like weighting a specific word - it doesn't touch individual concepts, it changes how sharply all tokens are differentiated from each other, which is a subtler and more global effect than most people expect from something called "contrast."
If you're not getting the emphasis control you want out of magnitude and contrast together, don't keep pushing them further off their defaults - that's usually the sign you actually need the more granular FLUX.2 Klein Enhancer (per-Qwen-layer scaling) or the section-based Sectioned Encoder/Detail Controller pair instead, rather than a reason to crank this node past sensible bounds. And don't stack this node with Enhancer on the same conditioning - their effects compound, and it gets hard to tell which one is responsible for a given result.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | — | |
| magnitude | FLOAT | 1.000–3 | Scale text embeddings. <1=weaker prompt, >1=stronger |
| contrastopt | FLOAT | 0.00-1–2 | Token differentiation. >0=sharper, <0=blended |
| normalize_strengthopt | FLOAT | 0.000–1 | Equalize token magnitudes |
| skip_bosopt | BOOLEAN | true | Skip token 0 (BOS token with huge norm) |
| debugopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |