Nodes/ComfyUI-DonutNodes/Donut Detailer (Unified)
ComfyUI Node

Donut Detailer (Unified)

The one detailer node that finally merges the three formulas

By DonutsDelivery·Created about a year ago·Updated about 13 hours ago· 25
Donut Detailer (Unified)
  • model
  • MODEL
formula
swb_Scale_in1.000
swb_Weight_in0.000
swb_Bias_in0.000
swb_Scale_out01.000
swb_Weight_out00.000
swb_Bias_out01.000
swb_Scale_out21.000
swb_Weight_out20.000
swb_Bias_out21.000
ks_Multiplier_in0.00
ks_S1_in1.00
ks_S2_in2.00
ks_Multiplier_out00.00
ks_S1_out01.00
ks_S2_out02.00
ks_Multiplier_out20.00
ks_S1_out21.00
ks_S2_out22.00
dir_Weight_in1.000
dir_Bias_in1.000
dir_Weight_out01.000
dir_Bias_out01.000
dir_Weight_out21.000
dir_Bias_out21.000

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.

CategoryModel Patches

Inputs (26)

NameTypeDefaultDescription
modelMODEL
formulaCOMBO3 options: scale_weight_bias, k_s1_s2, direct
swb_Scale_inoptFLOAT1.000-100–100
swb_Weight_inoptFLOAT0.000-10–10
swb_Bias_inoptFLOAT0.000-10–10
swb_Scale_out0optFLOAT1.000-100–100
swb_Weight_out0optFLOAT0.000-10–10
swb_Bias_out0optFLOAT1.000-10–10
swb_Scale_out2optFLOAT1.000-100–100
swb_Weight_out2optFLOAT0.000-10–10
swb_Bias_out2optFLOAT1.000-10–10
ks_Multiplier_inoptFLOAT0.00-100–100
ks_S1_inoptFLOAT1.00-100–100
ks_S2_inoptFLOAT2.00-100–100
ks_Multiplier_out0optFLOAT0.00-100–100
ks_S1_out0optFLOAT1.00-100–100
ks_S2_out0optFLOAT2.00-100–100
ks_Multiplier_out2optFLOAT0.00-100–100
ks_S1_out2optFLOAT1.00-100–100
ks_S2_out2optFLOAT2.00-100–100
dir_Weight_inoptFLOAT1.000-10–10
dir_Bias_inoptFLOAT1.000-10–10
dir_Weight_out0optFLOAT1.000-10–10
dir_Bias_out0optFLOAT1.000-10–10
dir_Weight_out2optFLOAT1.000-10–10
dir_Bias_out2optFLOAT1.000-10–10

Outputs (1)

NameTypeDescription
MODELMODEL