Nodes/comfyui_bmab/BMAB Simple Hand Detailer
ComfyUI Node

BMAB Simple Hand Detailer

The no-fuss fix for mangled hands

By portu-sim·Created 2 years ago·Updated 8 months ago· 124
BMAB Simple Hand Detailer
  • bind
  • image
  • lora
  • BMAB bind
  • image
  • annotation
steps20
cfg_scale8.0
sampler_name
scheduler
denoise0.45
padding32
dilation4
width512
height512

Hands are the thing that gives away an AI image, and this is BMAB's blunt-instrument fix for them. It finds a hand-shaped region, crops it out, redraws it at a decent working resolution, and pastes it back - no GroundingDINO, no fancy pose estimation, just detect-crop-resample. If you've used ADetailer in A1111 or Impact Pack's FaceDetailer in ComfyUI, the idea is identical: the reason distant hands come out as a claw is that they're taking up maybe 60x60 pixels of your final image, which is nowhere near enough latent budget for five fingers and knuckles to resolve correctly. Give that region its own dedicated pass at 512x512 and the model suddenly has room to actually draw a hand.

Where it sits in a BMAB pipeline

This node lives downstream of one of BMAB's Integrator nodes. Those pack your model, clip, vae, prompt, and seed into a single "BMAB bind" wire, and everything after - samplers, detailers, resize nodes - just takes that bind in and passes an updated bind back out. Simple Hand Detailer follows that pattern: feed it a bind, it does its detection-and-redraw pass, and hands you back a bind plus the finished image to keep chaining. There's also an annotation output - a visual of exactly what region got detected and redrawn, which is genuinely useful the first few times you use this, since a silent failure (nothing detected, nothing changed) looks identical to success unless you check it.

The inputs that actually matter

Most of the required fields - steps, cfg_scale, sampler_name, scheduler - mirror your main KSampler, and the sampler/scheduler dropdowns default to "Use same sampler" / "Use same scheduler," meaning by default this pass just inherits whatever you set upstream. The three worth tuning yourself:

  • denoise (default 0.45) - how much the hand region gets redrawn. Push it toward 0.6-0.7 for genuinely wrecked hands; drop it toward 0.3 if the hand is only slightly off and you don't want the style drifting.
  • width / height (default 512 each) - the resolution the cropped hand gets upscaled to before resampling. This is the entire trick - more pixels, more detail.
  • padding and dilation - how much extra area around the detected region gets included and how aggressively the mask grows. More padding gives the model context (wrist, sleeve) instead of an isolated blob of fingers.

There's also an optional image input (skip it and it pulls from the bind) and an optional lora slot (BMAB's own lora type, for applying a LoRA specifically to this detail pass without touching your base generation).

Installing it

Easiest path: ComfyUI Manager, search comfyui_bmab, install, restart. By hand:

cd ComfyUI/custom_nodes
git clone https://github.com/portu-sim/comfyui_bmab.git
cd comfyui_bmab
pip install -r requirements.txt

The README is upfront that BMAB needs two sibling packs installed alongside it - comfyui_controlnet_aux and ComfyUI_IPAdapter_plus - even though this particular node doesn't touch either directly. Clone and pip-install both the same way, then restart ComfyUI.

Where people get burned

Simple Hand Detailer is the one to reach for specifically because it skips GroundingDINO - the more precise Subframe and Openpose hand detailers depend on it, and GroundingDINO is the flakiest part of this pack (a mismatched transformers version breaks its box_threshold argument outright, a real complaint from BMAB users in the wild). If you're getting import errors or a broken hand detailer elsewhere in this pack, Simple is the fallback that still works. The other trap is padding set too low: a tight crop around just the fingers with no wrist or forearm context gives the sampler nothing to anchor proportions to, and you get a technically-detailed but anatomically wrong hand. When in doubt, bump padding before you touch denoise.

CategoryBMAB/detailer

Inputs (12)

NameTypeDefaultDescription
bindBMAB bind
stepsINT200–10000
cfg_scaleFLOAT8.00–100
sampler_nameCOMBO45 options: Use same sampler, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
schedulerCOMBO10 options: Use same scheduler, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
denoiseFLOAT0.450–1
paddingINT328–128
dilationINT44–32
widthINT512256–2048
heightINT512256–2048
imageoptIMAGE
loraoptBMAB lora

Outputs (3)

NameTypeDescription
BMAB bindBMAB bind
imageIMAGE
annotationIMAGE