Nodes/comfyui-reactor-node/Face Similarity 🌌 ReActor
ComfyUI Node

Face Similarity 🌌 ReActor

Put a number on how close your face swap actually landed

By GourieffΒ·Created 2 years agoΒ·Updated 3 months agoΒ· 1,309
Face Similarity 🌌 ReActor
  • image1
  • image2
  • similarity_float
  • similarity_text

Most of the time you judge a face swap by eyeballing it - does this look like the person or not. Face Similarity replaces the eyeball with a number. Feed it two images and it tells you how alike the faces in them actually are, instead of leaving it to vibes.

It's a genuinely new addition - it shipped alongside the pack's 0.7.0 "Core" rewrite, so if you're following an older tutorial you won't see it mentioned. Face-similarity scoring like this isn't unique to ReActor; it's the same kind of metric other identity tools in this space get benchmarked on (cosine similarity between face embeddings is the standard way the community compares how close PuLID or InstantID land to a reference face), so this node is really ReActor exposing that same idea as a usable output instead of keeping it internal.

How it works

Give it two images. It reads the face out of each and compares them, returning both a raw score and a plain-language readout of what that score means. Nothing about the pack requires you to run a swap first - you could just as easily use it to check "are these two random photos the same person," though its obvious use is checking your own swap output against the source face you fed in.

The inputs and outputs that matter

Just two required inputs, no optional ones:

  • image1 and image2 (both IMAGE) - the two faces you're comparing. Order doesn't functionally matter; put your swap result in one slot and your source face in the other.

Two outputs:

  • similarity_float - the raw score. Wire it into a number display, or into a conditional gate if you're automating a pipeline.
  • similarity_text - a text readout of the same result, handy for wiring straight into a Show Text node instead of interpreting the float yourself.

How to install it

ComfyUI Manager: search "ReActor", install, restart. Manually, git clone https://github.com/Gourieff/ComfyUI-ReActor into custom_nodes, then run install.bat (Windows) or python install.py (Linux/macOS). This node is lighter than it looks: it only needs the face-analysis model (buffalo_l), not the swap model (inswapper_128), since it isn't swapping anything. buffalo_l auto-downloads into ComfyUI/models/insightface/models/buffalo_l the first time any ReActor node runs - if you're adding this node to a fresh install and haven't run a swap node yet, run one once so the download happens, or grab buffalo_l by hand from the pack's Hugging Face dataset.

Common issues & troubleshooting

The score seems arbitrary. There's no published absolute scale for this metric - treat it as relative, not as a number you look up a meaning for. Run it on a few pairs of images where you already know the answer (same person, clearly different people) to get a feel for what "high" and "low" mean for your own use case before trusting it in an automated pipeline.

Low similarity even though the swap looked fine to you. Check what you're actually comparing first. If one of the two images is the direct output of a ReActor swap node, remember that node carries a built-in NSFW detector that returns a solid black image when it fires - compare a black rectangle against a real face and you'll get a meaningless score that has nothing to do with swap quality.

It's not finding a face at all. Same detection pipeline as the rest of the pack, so the usual causes apply: a very small or heavily obscured face in frame, or the underlying buffalo_l model not having downloaded correctly. Confirm the model file actually landed in ComfyUI/models/insightface/models/buffalo_l before assuming the node is broken.

Category🌌 ReActor

Inputs (2)

NameTypeDefaultDescription
image1IMAGEβ€”
image2IMAGEβ€”

Outputs (2)

NameTypeDescription
similarity_floatFLOATβ€”
similarity_textSTRINGβ€”