FLUX.2 Klein Conditioning Enhancer
The FLUX.2 Klein prompt-following knob that replaces your dead (parentheses)
- conditioning
- CONDITIONING
You've been there. Klein isn't following your prompt hard enough, so you reach for ((make it pop)) - and nothing happens, because ComfyUI's prompt weighting is disabled for Klein's Qwen3 text encoder. The FLUX.2 Klein Conditioning Enhancer is what you actually wanted: a real gain knob on the text conditioning, working at the tensor level instead of the string level.
It's from the same pack as the Sectioned Text Encoder, and it's the node most people start with. Feed it the conditioning from your text encoder, turn one slider, and the sampler sees a prompt that's more (or less) assertive. Think of it as an LLM-friendly equivalent of the old CLIP-scale / prompt-strength tricks - except it doesn't rely on prompt syntax the model ignores.
How it works
The node finds the "active" token region in your conditioning - the tokens that are your actual prompt, not padding - using the attention_mask from the conditioning metadata (which is why this pack's own Sectioned Text Encoder is the ideal upstream: it preserves that mask; otherwise the node falls back to a 77-token heuristic). Then it edits only that region, leaving padding alone.
Three operations stack on top of each other:
magnitude(0–3, default 1) - plain multiplicative gain on the active tokens. This is the main dial.contrast(−2 to 3) - sharpens or softens token-to-token differences while keeping average token energy roughly flat. Positive contrast makes the strong prompt elements dominate more; negative pushes everything toward one mush. The implementation deliberately keeps contrast orthogonal to magnitude, so you can raise one without bloating the other.normalize_strength(0–1) - equalizes token norms toward the mean, so no single token runs away with the conditioning.
There's also the preserve_original / preserve_mode pair, which is the pack's answer to a subtle bug in the original repo it was rebuilt from: with multiple conditioning entries, later items could get re-dampened using already-modified values. This version computes per-item values cleanly. In practice preserve_original blends some of your original conditioning back in (blend_after), or pulls the edit strength back toward neutral before applying it (dampen), or both (hybrid). If your edit is overcorrecting, start here rather than at zeroing the whole node.
One Klein-specific extra: edit_text_weight. When reference latents are present - i.e. you're doing an image edit, not a fresh generation - this adds extra gain on the prompt side of the prompt-vs-reference tug-of-war. That's the knob for "the model is preserving the reference so hard it ignores what I typed."
Inputs that matter
Set magnitude first - 1.1 to 1.3 is a sane starting range, and anything above ~1.5 tends toward overcorrection. Add a little contrast if the prompt is there but weak against the image. Leave skip_bos on True - the BOS token should not be dominating your conditioning edits, which is why the pack defaults it that way. active_end_override (0–512) is your manual escape hatch when upstream metadata is missing or wrong: if the node is editing too many or too few tokens, force the end position.
Output is a single CONDITIONING that wires straight into your sampler (or into more conditioning nodes in the chain).
Install and gotchas
Part of the ComfyUI-Flux2Klein-Conditioning-Toolkit pack - ComfyUI Manager search "Flux2Klein", or:
cd ComfyUI/custom_nodes
git clone https://github.com/xmarre/ComfyUI-Flux2Klein-Conditioning-Toolkit
Restart, done. No model downloads, no dependencies beyond torch - it operates on small conditioning tensors, so it costs you almost nothing per step.
The most common "it does nothing" failure: your upstream text encoder didn't attach an attention mask, so the heuristic region is wrong. Use this pack's Sectioned Text Encoder, or set active_end_override to the real token count. And remember the golden Klein rule from the community teardowns: write sentences, not tag soup - a gain knob amplifies a good prompt; it won't resurrect a bad one.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | — | |
| magnitude | FLOAT | 1.000–3 | — |
| contrastopt | FLOAT | 0.00-2–3 | — |
| normalize_strengthopt | FLOAT | 0.000–1 | — |
| preserve_originalopt | FLOAT | 0.000–1 | — |
| preserve_modeopt | COMBO | blend_after | 3 options: blend_after, dampen, hybrid |
| edit_text_weightopt | FLOAT | 1.000–3 | — |
| active_end_overrideopt | INT | 00–512 | — |
| skip_bosopt | BOOLEAN | true | — |
| debugopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |