Donut Detailer (Unified)
The one detailer node that finally merges the three formulas
- model
- MODEL
If you've ever stared at the Donut pack's detailer family and wondered why there are three nearly-identical nodes with different formulas, this is the answer: DonutDetailerUnified is the consolidation. It takes the three "detailer" model-patch formulas - Scale/Weight/Bias, K/S1/S2, and direct multipliers - and folds them into one node with a formula dropdown. It targets the same SDXL regions as its ancestors (the first input block and output blocks 0 and 2) and shares a single patch engine, so the only thing that changes between formulas is how the knobs map onto the final weight and bias multipliers.
The name is a trap in the good way: "Detailer" here means a per-block model patch, not a face-fixing inpaint detailer. It detects nothing, masks nothing, re-renders nothing. It multiplies weights and biases inside the UNet so the model itself draws with more or less high-frequency detail. If you arrived expecting ADetailer-for-ComfyUI, you have the wrong node - that's the Impact Pack's FaceDetailer.
What's on the node
Two required inputs: model and formula, with the formula dropdown offering scale_weight_bias, k_s1_s2, and direct. Everything else is optional and prefixed by formula so the node shows only the knobs for the mode you picked:
swb_*- Scale/Weight/Bias (the original "Donut Detailer" formula).ks_*- Multiplier/S1/S2 (the "Donut Detailer 2" formula; S1 drives the weight side, S2 the bias side, scaled by 0.01/0.02).dir_*- direct Weight/Bias multipliers (the "Donut Detailer 4" formula; what you set is what you get).
Each group has three regions: _in (input block 0), _out0, and _out2 (the two output regions). Output is the patched MODEL, ready for your sampler. The patch is applied on a clone via ComfyUI's patch system, so the original model object is untouched and everything stays in-memory - no files written, no permanent edits.
When to reach for it
This is the one to use instead of the deprecated standalone trio. If you already know which formula you like, pick it and ignore the others; the defaults for each group are tuned so the node is a no-op until you move something (the Scale/Weight/Bias formula starts with Weight at 0, the direct one with everything at 1.0). That no-op default is deliberate - it's a tuning instrument.
Start small: change one group's Scale or Weight by ±0.1, re-run, and compare against the baseline. The out0/out2 regions are where detail response is most visible, so they're the natural first knobs. Overdo it and you'll get oversharpened, crunchy textures - the patch is a gain control, and gains clip.
Installing and gotchas
Ships with the pack: ComfyUI Manager → search DonutNodes, or clone into custom_nodes/ and pip install -r requirements.txt with the same Python that launches ComfyUI. No model downloads.
One gotcha worth knowing: the patch happens when the node runs, so changing a slider does not update the image in your preview - you must re-run the graph. And because it clones the model, chaining several of these (or combining with a LoRA stack) is fine, but each one adds work at model-load. For full per-block control across every SDXL block, the sibling Donut Detailer XL Blocks node is the heavy version; this one is the three-most-relevant-regions sweet spot.
Inputs (26)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| formula | COMBO | 3 options: scale_weight_bias, k_s1_s2, direct | |
| swb_Scale_inopt | FLOAT | 1.000-100–100 | — |
| swb_Weight_inopt | FLOAT | 0.000-10–10 | — |
| swb_Bias_inopt | FLOAT | 0.000-10–10 | — |
| swb_Scale_out0opt | FLOAT | 1.000-100–100 | — |
| swb_Weight_out0opt | FLOAT | 0.000-10–10 | — |
| swb_Bias_out0opt | FLOAT | 1.000-10–10 | — |
| swb_Scale_out2opt | FLOAT | 1.000-100–100 | — |
| swb_Weight_out2opt | FLOAT | 0.000-10–10 | — |
| swb_Bias_out2opt | FLOAT | 1.000-10–10 | — |
| ks_Multiplier_inopt | FLOAT | 0.00-100–100 | — |
| ks_S1_inopt | FLOAT | 1.00-100–100 | — |
| ks_S2_inopt | FLOAT | 2.00-100–100 | — |
| ks_Multiplier_out0opt | FLOAT | 0.00-100–100 | — |
| ks_S1_out0opt | FLOAT | 1.00-100–100 | — |
| ks_S2_out0opt | FLOAT | 2.00-100–100 | — |
| ks_Multiplier_out2opt | FLOAT | 0.00-100–100 | — |
| ks_S1_out2opt | FLOAT | 1.00-100–100 | — |
| ks_S2_out2opt | FLOAT | 2.00-100–100 | — |
| dir_Weight_inopt | FLOAT | 1.000-10–10 | — |
| dir_Bias_inopt | FLOAT | 1.000-10–10 | — |
| dir_Weight_out0opt | FLOAT | 1.000-10–10 | — |
| dir_Bias_out0opt | FLOAT | 1.000-10–10 | — |
| dir_Weight_out2opt | FLOAT | 1.000-10–10 | — |
| dir_Bias_out2opt | FLOAT | 1.000-10–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |