Painters gave the face its own session at its own scale. A detail pass is the same idea, automated.
It is a resolution problem wearing the costume of a prompt problem.
Generate a portrait framed at the shoulders and the face comes out clean. Generate the same character standing in a doorway across a room, same model, same prompt, same seed logic, and the face turns into a smear with two dark holes in it. People assume the model got worse. It did not. The face just got smaller.
In a tall portrait canvas, a head that fills the frame gets hundreds of pixels of width to work with. Push the camera back to a full body shot and that same head might occupy sixty pixels across. Diffusion happens in a compressed latent space, so those sixty pixels are a handful of latent cells, and no amount of adding "detailed face, beautiful eyes" to the prompt creates room that is not there.
The fix is old and boring and it works every time: render the face again, by itself, at a size where the model has room, then put it back. Painters have always done this. What changed is that you no longer have to draw the mask yourself. A detector finds the region, the pipeline crops it, re-diffuses it at working resolution, and blends the result into the original.
ADetailer ships with a menu of YOLO detection models and the choice matters more than most of the sliders below it. For faces, face_yolov8n is the nano variant: fastest, and entirely sufficient when your subjects are facing the camera at a normal size. If it starts missing profiles or very small faces in a crowd, step up to face_yolov8s, which is slower but noticeably more willing to commit on hard detections.
Hands get their own model, hand_yolov8n, and they need a separate pass with different settings because a hand and a face fail in different ways. There are also person-level detectors for when you want to re-render an entire figure rather than a feature.
Run more than one detector in sequence. Faces first, then hands. Most people set the face pass, see it work, and never enable the second slot, which is why so many otherwise-clean renders still have a claw somewhere in the lower third.
Once the crop is made, inpaint denoising strength controls how much of the original the model is allowed to throw away. This single number is the difference between a repaired face and a stranger's face pasted onto your character.
Between 0.30 and 0.35 you keep the likeness. Features sharpen, eyes resolve, the person stays recognisably the same person. That range is where you want to live if you are running a consistent character across a series.
Between 0.35 and 0.45 is the general working recommendation, and it is where badly broken faces need to sit, because a genuinely mangled region does not contain enough correct information to be worth preserving. Hands usually want a touch more than faces, around 0.4 to 0.5, since a wrong finger count cannot be nudged into correctness, it has to be replaced.
Push it to 0.8 and the pass stops repairing and starts inventing. The new face will be technically excellent and completely disconnected from the scene: wrong lighting direction, wrong colour temperature, wrong grain, a floating cutout. If your detailed faces look pasted on, this number is almost always why.
| Setting | Where it lives | What to use |
|---|---|---|
| Detection model | ADetailer model dropdown | face_yolov8n for normal shots, face_yolov8s when it misses profiles, hand_yolov8n on a second pass |
| Inpaint denoise | ADetailer inpainting section | 0.30 to 0.35 to keep likeness, 0.35 to 0.45 general, 0.4 to 0.5 for hands |
| Inpaint only masked | ADetailer inpainting section | On. It restricts the work to the crop and is most of the speed benefit |
| guide_size | ComfyUI FaceDetailer | Default 256. A detected region smaller than this gets upscaled to it before re-rendering |
| bbox_threshold | ComfyUI FaceDetailer | Default 0.5. Drop toward 0.3 to catch small or partly hidden faces, at the cost of false hits |
| Detailer prompt | Both | Short and face-specific. The full scene prompt belongs to the base render |
In ComfyUI's FaceDetailer, guide_size defaults to 256 and it is the parameter that makes the entire technique work. When the detected bounding box comes back smaller than that, the node upscales the crop to at least 256 pixels before running diffusion on it. The model is then generating a face at a size where it has real latent room, instead of at the sixty pixels the face occupied in the original composition.
That is the whole idea, stated as a number. Everything else on the node is control over how the result gets blended back down into the frame.
Alongside it sits bbox_threshold, a confidence cutoff that defaults to 0.5. Lower it toward 0.3 and the detector will find faces that are small, turned away or partly occluded, and it will also start finding faces in wallpaper patterns and tree bark. Raise it and you get only confident hits and quietly miss the background figure whose face you actually wanted fixed. When a detail pass appears to do nothing, this threshold is the first thing to check, because a detector that found no region simply passes the image through untouched.
A bounding box is a rectangle, and a rectangle around a face also contains hair, background and part of a shoulder. When the blend edge lands somewhere visible, that rectangle is usually the reason.
SAM, the segment-anything approach, fixes that. It cannot find anything on its own, so it is always fed by a detector: the bounding box model says where to look, and SAM converts that region into a silhouette mask that follows the actual contour of the subject. The re-rendered pixels then stop at the edge of the face rather than at the edge of a box. On dark hair against a bright background, or a face turned partly out of frame, this is the difference between a clean result and a faint rectangular seam.
The most common failure is running the detail pass before an upscale instead of after. Detail the face at base resolution, then upscale the whole image, and the upscaler will soften exactly the detail you just spent a pass creating. Upscale first, detail last.
The second is prompt bleed. If the detailer inherits your full scene prompt, the model is trying to fit a windswept street and a neon sign into a crop containing one face. Give the pass its own short prompt describing the face and nothing else.
The third is identity drift, and it is the one that bites series work. A detail pass is a fresh diffusion of that region, so at higher denoise your character's face can wander a few percent every time. Across twenty images those few percent stack into a visibly different person by the end of the set. Keep denoise low on character work, and if you are matching a face across a series, an identity adapter belongs in the base render rather than in the detail pass.
The honest limit is structural. A detail pass re-renders a region, so it can fix mush, wrong eye alignment and a bad finger count. It cannot fix a head that is cropped by the frame edge, a face turned so far away that there is nothing to detect, or a pose whose arm connects to the body at an impossible angle. Those are composition problems, and they get solved in the base generation or not at all.
Take a full body render you already gave up on and run one face pass at 0.32 denoise with nothing else changed. That single number, applied to a crop the model can actually see, recovers more images than any prompt rewrite you were about to attempt.