ComfyUI Node

Face Swap

FaceFusion's swap engine, wired into ComfyUI

By jeffy5·Created 2 years ago·Updated 4 months ago· 61
Face Swap
  • images
  • face_image
  • IMAGE
swapper_model
detector_model
recognizer_model

This is the node people are actually looking for when they search this pack: take a face from one photo, put it onto the person in another. Classic face swap, no training, no LoRA, just point it at two images and go. Under the hood it's not a bespoke model this pack invented - the README says so directly, thanking FaceFusion and calling this "a special version for ComfyUI" of that project. FaceFusion itself is a genuinely well-known, actively developed tool (its 3.0 launch thread on r/StableDiffusion cleared 2,400+ upvotes); this ComfyUI wrapper is a much smaller, newer surface on top of it and barely shows up in community discussion on its own. Worth knowing before you go looking for troubleshooting threads about it specifically - you mostly won't find any, because almost nobody's written about this node, even though the engine underneath it is well-traveled.

How the swap actually happens

Three models do the work, in sequence, and you pick all three from dropdowns: a detector finds the face and its landmarks in the target image, a recognizer turns both the source and target faces into an identity embedding (the same ArcFace-style approach every no-training face tool in this space uses - FaceID, InstantID, PuLID, ReActor, Roop, and this pack all ultimately lean on the same recognition backbone), and a swapper blends the source identity into the target's face region while trying to preserve the target's pose and lighting.

That swapper model - the pack's README lists inswapper_128.onnx as the default - comes with a real, well-documented ceiling: it's capped at 128x128 resolution internally, and its own upstream project calls it "no longer maintained," pointing people at a paid service for anything sharper. Every tool built on it inherits that ceiling, this one included. That's not a bug you'll fix by tweaking settings - it's why the pack's own example workflow chains a restore node right after the swap, and you should plan to do the same.

Inputs and outputs

  • images - the target photo(s) you're swapping a face onto.
  • face_image - the source face you want to appear in the result.
  • swapper_model, detector_model, recognizer_model - three dropdowns, populated from whatever matching .onnx files you've got sitting in your models folder.

Output is a single IMAGE, ready to feed straight into a Face Restore node, a save node, or anywhere else an image goes.

Installing it

Through ComfyUI Manager: search Faceless Node for ComfyUI, install, restart. By hand:

cd ComfyUI/custom_nodes
git clone https://github.com/jeffy5/comfyui-faceless-node
pip install -r requirements.txt

The part that trips people up: models don't go in ComfyUI's usual folders. They live in ComfyUI/models/faceless/, in subfolders like face_detector/, face_recognizer/, face_swapper/. The pack ships a download_models.py script under its own custom_nodes directory - run python download_models.py for the default set, or --all if you want every variant available, then restart ComfyUI so the dropdowns pick them up.

Where people get burned

Empty dropdowns. If swapper_model and friends show nothing to pick from, you either haven't run download_models.py yet or haven't restarted since you did - the enums are populated from files on disk at startup, not live.

Blurry results. Expected, not broken. See the 128x128 ceiling above - chain a Faceless Face Restore node right after this one, the way the pack's own example workflow does.

Commercial use. The swapper and recognizer weights trace back to InsightFace's model zoo, which is released for non-commercial research only, regardless of how you obtained the files. If this is going into a paid product, that's a real licensing question, not a formality - either license the models separately or swap the identity step for something else.

It's young. The README calls itself under development with possible compatibility issues on future ComfyUI upgrades. Don't be surprised if an update breaks something; this isn't a mature, heavily-battle-tested pack yet.

Categoryfaceless

Inputs (5)

NameTypeDefaultDescription
imagesIMAGE
face_imageIMAGE
swapper_modelCOMBO0 options:
detector_modelCOMBO0 options:
recognizer_modelCOMBO0 options:

Outputs (1)

NameTypeDescription
IMAGEIMAGE