Nodes/Ultimate Face Fix/Ultimate Face Fix
ComfyUI Node

Ultimate Face Fix

The face detailer that speaks your checkpoint's language

By Merserk·Created 2 months ago·Updated 2 months ago· 20
Ultimate Face Fix
  • image
  • model
  • vae
  • positive
  • negative
  • face_detector
  • face_landmarker
  • bboxes
  • face_parser
  • sam_model
  • fixed_image
  • original_face_crops
  • processed_face_crops
  • face_mask
  • debug_preview
face_selectionall
detection_qualitymaximum
max_faces16
min_face_size24
detection_confidence0.25
context_scale1.80
target_resolution1024
repair_modecustom
custom_denoise0.40
seed0
steps25
cfg5.5
sampler_nameeuler
schedulerbeta
mask_presetcore_face
sam_refineauto
mask_grow_percent1.5
mask_feather_percent2.5
color_match_strength0.65
blend_modemultiband

ComfyUI's face-fix story usually ends in one of two places: a fixed restoration model (GFPGAN, CodeFormer) that smooths faces into plastic, or Impact Pack's FaceDetailer, which works but makes you wrestle a two-dozen-input node. Ultimate Face Fix is the new kid that splits the difference. It does what ADetailer did for the A1111 crowd - detect faces, give each one its own img2img pass, blend it back - but the "fix" is done by your checkpoint, VAE, prompt, and sampler, not by a generic face model. The name is a promise, and it mostly keeps it.

The mechanism is a detect → crop → repair → mask → blend pipeline, all inside one node:

  1. A YOLO face detector finds every face (or just the largest, or the first N).
  2. Each face is cropped square with context around it (context_scale, default 1.8) and resized to target_resolution (default 1024).
  3. Each crop is re-rendered as img2img using the model, vae, positive, negative, sampler, and scheduler you connected, at whatever denoise you set.
  4. The SegFace parser builds a precise semantic mask - which face parts to keep versus background - instead of a sloppy blob.
  5. Colors are matched to the original boundary, then the crop is blended in with multiband pyramid blending rather than a plain feather.

Where people get burned: the biggest lever is repair_mode. Detail (0.28), Repair (0.42), and Reconstruct (0.58) are fixed denoise presets; Custom (the default, 0.4) uses custom_denoise. Higher denoise reconstructs more aggressively but changes identity and facial geometry - on a character you care about, start at Detail and work up. The other knobs that matter: face_selection (all, largest, largest_n) and max_faces for crowd shots, and detection_quality set to maximum, which runs tiled detection and is what finds the small background faces the full-image pass misses.

Wiring follows the ADetailer-shaped habit: image in, a generation model/vae/positive/negative that matches the source image's style, plus the face_detector connection from the YOLO loader node (or external bboxes, which skip YOLO entirely). face_parser is technically optional, but don't skip it - without it you fall back to SAM/landmark/geometry masks and lose the precise part masks. Outputs: fixed_image goes to your Save Image node; the other four (original_face_crops, processed_face_crops, face_mask, debug_preview) exist so you can see exactly what changed and why.

Install is the pack's shared setup: in ComfyUI Manager search for Ultimate Face Fix, hit Install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/Merserk/ComfyUI-Ultimate-Face-Fix.git
cd ComfyUI-Ultimate-Face-Fix
pip install -r requirements.txt
python scripts/prepare_models.py --comfy-root ../..

That last step downloads, verifies, and prepares the three required models (YOLO detector, SegFace parser, MediaPipe landmarks) - it can take a minute on first run. It pins ultralytics==8.4.102, which is the right call given Ultralytics' supply-chain incident in late 2024.

This pack is young - one launch thread in July 2026 - so treat the defaults as a starting point, not doctrine. The early community signal is genuinely good: a tester who ran it for a couple days called it "much better than what I have been using for the last 2 years" and migrated their face repair onto it. The one thing it doesn't do is hold identity across the pass by itself; people pair it with an identity LoRA (works fine - load the LoRA before the model input) and keep denoise under about 0.5.

Categoryultimate face fix

Inputs (30)

NameTypeDefaultDescription
imageIMAGE
modelMODELGeneration model used for crop img2img.
vaeVAE
positiveCONDITIONING
negativeCONDITIONING
face_selectionCOMBOall3 options: all, largest, largest_n
detection_qualityCOMBOmaximum2 options: maximum, balanced
max_facesINT161–64
min_face_sizeINT244–1024
detection_confidenceFLOAT0.250.01–1
context_scaleFLOAT1.801.1–3
target_resolutionCOMBO10245 options: none, 512, 768, 1024, 1536
repair_modeCOMBOcustom4 options: detail, repair, reconstruct, custom
custom_denoiseFLOAT0.400–1
seedINT00–18446744073709550000
stepsINT251–200
cfgFLOAT5.50–100
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBObeta9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
mask_presetCOMBOcore_face3 options: core_face, portrait_safe, head
sam_refineCOMBOauto3 options: auto, always, off
mask_grow_percentFLOAT1.50–15
mask_feather_percentFLOAT2.50–15
color_match_strengthFLOAT0.650–1
blend_modeCOMBOmultiband2 options: multiband, alpha
face_detectoroptFACE_FIX_DETECTORConnect Load Face Fix Detector. It may be omitted only when bboxes is connected.
face_landmarkeroptFACE_DETECTION_MODELConnect ComfyUI's Load Face Detection Model (MediaPipe) output for landmark-aware crops.
bboxesoptBOUNDING_BOX[object Object]When connected, these boxes replace YOLO detection.
face_parseroptFACE_FIX_PARSERConnect Load Face Fix Parser. When omitted, SAM/landmark/geometry fallback masks are used.
sam_modeloptMODELConnect the MODEL output from the supplied SAM 3.1 checkpoint.

Outputs (5)

NameTypeDescription
fixed_imageIMAGE
original_face_cropsIMAGE
processed_face_cropsIMAGE
face_maskMASK
debug_previewIMAGE