Redux Style with Prompt Control
Dial style detail and influence in one node
- conditioning
- style_model
- clip_vision
- reference_image
- mask
- CONDITIONING
- IMAGE
Flux Redux is the best style-transfer tool in the Flux world and also the most frustrating one: at full strength it doesn't stylize your image, it replaces your prompt and hands you a variation of the reference. People have been fighting that since the model launched - the community consensus has been that Redux needs a strength around 0.04–0.07 to leave room for your text. This node is a cleaner answer to the same problem. Instead of one global strength knob you balance by feel, ReduxPromptStyler mixes your text prompt and the reference style in token space, with separate sliders for each and a detail slider for how much of the reference actually survives.
It's a fancier ApplyStyleModel, effectively. You feed it your text conditioning, a Redux style model, a CLIP vision encoder, and a reference image; it does the whole pipeline - preprocess image, encode, extract the style condition, blend with your prompt - and hands you a CONDITIONING you drop straight into your sampler. The author built it for e-commerce apparel work (virtual try-on, outfit consistency), but the same trick is what makes it good for plain art-style transfer onto a subject you described in words.
How it works
The mechanism is right there in the source, and it's simple under the hood. The reference image gets preprocessed and resized (SigLIP's sweet spot is 384×384), encoded by your CLIP vision model, then run through style_model.get_cond(). That call returns the style as a 27×27 grid of patch tokens - the full-resolution read of what your reference looks like.
Here's the part nobody else gives you: style_grid_size (1–14) downsamples that grid before it ever touches your prompt. A slider value of 1 keeps the full 27×27 grid, so every bit of the reference's detail flows through. Values climb 27 → 25 → 23 … → 3 → 1 until 14 is a single 1×1 token - at that point only the overall vibe of the image survives, not the specifics. The interpolation happens with whichever interpolation_mode you pick (bicubic is the default and usually fine; nearest is there when you want the patch boundaries to stay crisp).
Then both influences are applied - squared, if you're the type who reads source, so 1.0 is identity - and your scaled prompt tokens and the scaled style tokens get concatenated into one conditioning. Wire that to your sampler's positive and you're done.
The inputs that matter
reference_influence(0.1–2.0): how hard the style tokens push. Start at 1.0, but expect to drop it - Redux overwhelms prompts at high weight.prompt_influence(0.1–2.0): how hard your text pushes back. This is the knob the stock workflow doesn't give you.style_grid_size(1–14): detail vs. vibe. Start at the default 9, drop toward 1 when you want the reference's colors/composition to really bite.image_processing_mode:center crop (square),keep aspect ratio(passes your image through at native resolution), orautocrop with mask- which crops tight around amaskyou connect, withautocrop_padding(0–256) of slack. The mask is only read in that last mode; an empty mask silently falls back to center crop.
The outputs are CONDITIONING (into KSampler) and IMAGE (the preprocessed reference - wire it to a preview so you can see exactly what the CLIP got, especially with autocrop).
Install
Via ComfyUI Manager, search "Redux Prompt". Or the old-fashioned way:
cd ComfyUI/custom_nodes
git clone https://github.com/CY-CHENYUE/ComfyUI-Redux-Prompt.git
Restart ComfyUI. The only declared dependencies are numpy and torch, which you already have, so there's nothing heavy to pull. What you do need are the two model files this node consumes: flux1-redux-dev.safetensors in models/style_models and sigclip_vision_patch14_384.safetensors in models/clip_vision (both load via ComfyUI's stock StyleModelLoader and CLIPVisionLoader). Remember Redux falls under the FLUX.1 [dev] non-commercial license.
Where people get burned
The big one is expecting Redux to behave like an IP-Adapter. It doesn't - full-strength style tokens will eat your prompt and you'll get near-identical variations of the reference. That's precisely why the two influence sliders exist: drop reference_influence, nudge prompt_influence up, and raise style_grid_size when you want the reference to stop being the boss. If your output looks mushy at 14, you've dialed the detail out; come back down to the 5–9 range.
Also worth knowing: the negative conditioning in the author's example workflow is just zeroed out - this node's output belongs on the positive side, and you don't feed Redux conditions to negative. And since it's built on the STYLE_MODEL type, this is Flux-only. It's the style-transfer lever for the model you're already running, not a general image-reference gadget for SDXL.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | — | |
| style_model | STYLE_MODEL | — | |
| clip_vision | CLIP_VISION | — | |
| reference_image | IMAGE | — | |
| prompt_influence | FLOAT | 1.00.1–2 | — |
| reference_influence | FLOAT | 1.00.1–2 | — |
| style_grid_size | INT | 91–14 | — |
| interpolation_mode | COMBO | bicubic | 4 options: bicubic, bilinear, nearest, area |
| image_processing_mode | COMBO | center crop (square) | 3 options: center crop (square), keep aspect ratio, autocrop with mask |
| maskopt | MASK | — | |
| autocrop_paddingopt | INT | 80–256 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |
| IMAGE | IMAGE | — |