Nodes/ComfyUI-Nunchaku-Klein/Nunchaku FLUX.2 Klein Text Enhancer
ComfyUI Node

Nunchaku FLUX.2 Klein Text Enhancer

The simpler dial for pushing a Klein prompt harder or softer

By tom-m-2020·Created 2 months ago·Updated 17 days ago· 2
Nunchaku FLUX.2 Klein Text Enhancer
  • conditioning
  • CONDITIONING
magnitude1.00
contrast0.00
normalize_strength0.00
skip_bostrue
debugfalse

Your prompt is a whisper or a shout, and ComfyUI's normal weighting syntax is deaf. The NunchakuKleinTextEnhancer is the stripped-down sibling of the pack's full Enhancer: three knobs that scale and reshape the Qwen3 text conditioning after encoding, no layer-slice depth required. Where the full Enhancer lets you aim at structural vs. semantic layers separately, this one just asks "how loud is the prompt, and how distinct are the tokens?"

It's part of the same family as the Klein Enhancer port - experimental, close-to-but-not-identical to the original Flux2Klein-Enhancer behavior - and the README marks it as one of the "Enhancer" nodes that only work on the 9B variant. Feed it a 4B model's conditioning and it may simply not apply. Worth knowing before you build a workflow around it.

What the knobs do

  • magnitude - the main event. Scale the text embeddings: below 1.0 makes the prompt weaker, above 1.0 makes it stronger. This is the closest thing Klein has to a global "prompt weight" slider, and it's a lot more predictable than trying to emphasize individual words.
  • contrast - token differentiation. Positive sharpens the difference between tokens (stronger topic separation), negative blends them together (everything influences everything). Zero is off. Think of it as the "is my prompt coherent or a pile of unrelated nouns" dial.
  • normalize_strength - equalizes token magnitudes across the sequence. Useful when one concept is hogging the conditioning; 1.0 flattens everyone to the same volume.
  • skip_bos - default on, and leave it on. Token 0, the beginning-of-sequence token, has a huge norm that would dominate any normalization. The tooltip tells you exactly why it exists.

Output is CONDITIONING, wired straight to the KSampler.

How to actually use it

Start at magnitude 1.0 and nudge in 0.05-0.1 steps. This is conditioning-space surgery; the model was trained on Qwen3's natural distribution, and shoving magnitude to 2.0 produces images that look like the prompt was shouted at them. A common pattern is pairing it with the Detail Controller or Sectioned Encoder upstream, then using magnitude as the master volume and contrast to tighten topic focus.

Install is the pack standard - Manager → "Nunchaku-Klein", or:

cd ComfyUI/custom_nodes
git clone https://github.com/tom-m-2020/ComfyUI-Nunchaku-Klein

Backend first: Vitoom Nunchaku wheel, then the tonera Klein checkpoint in diffusion_models/.

Common issues

  • No effect at all - check your model size. This node targets the 9B per the README; on a 4B setup it won't do what you expect.
  • Everything looks oversaturated - you're combining magnitude >1 with contrast >0 and normalize_strength 0. Pick one axis of attack at a time.
  • Same seed, different output - the README documents that Nunchaku can produce materially different outputs run-to-run; don't burn time chasing determinism here.
CategoryNunchaku/FLUX.2 Klein/Enhancer/Text

Inputs (6)

NameTypeDefaultDescription
conditioningCONDITIONING
magnitudeFLOAT1.000–3Scale text embeddings. <1=weaker prompt, >1=stronger
contrastoptFLOAT0.00-1–2Token differentiation. >0=sharper, <0=blended
normalize_strengthoptFLOAT0.000–1Equalize token magnitudes
skip_bosoptBOOLEANtrueSkip token 0 (BOS token with huge norm)
debugoptBOOLEANfalse

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING