FA

FaceFusion

Industry-leading face manipulation and swapping platform

Self-Hosted AI ★ 30k stars Medium setup MIT

FaceFusion is an open-source platform for face swapping and facial manipulation in images and video. It bundles processors for enhancement, expression restoration, and lip syncing with a desktop UI.

Key features

  • Image and video face swap
  • Face enhancement processors
  • Lip sync support
  • Desktop UI and CLI

Pros & cons

Strengths

  • Polished workflow UI
  • Many enhancement processors
  • Actively developed

Trade-offs

  • GPU strongly recommended
  • Built-in content restrictions

FaceFusion replaces

Last reviewed Aug 26, 2026 · 853 words

FaceFusion is a desktop tool, not a service. There is nothing to reverse-proxy, no user accounts, no database, and the "self-hosted" part means the entire face-swap and face-restoration pipeline runs on your own machine with nothing uploaded anywhere. What you need to make that pleasant is a GPU with about 8 GB of VRAM; what you need to use it responsibly is the consent of every face involved, and the tool's own filters will not make that decision for you.

Install is a Python venv and a runtime choice

FaceFusion (MIT, about 29,700 stars, Python, first released in 2023) runs its models through ONNX Runtime, and the only real install decision is which execution provider to build against:

git clone https://github.com/facefusion/facefusion
cd facefusion
python3 -m venv .venv && source .venv/bin/activate
python install.py --onnxruntime cuda
python facefusion.py run

Swap cuda for rocm on AMD, openvino on Intel, directml on Windows without NVIDIA, or default for CPU. The last command opens a Gradio interface in your browser on localhost, and models are downloaded into .assets/models on first use, so the first run needs internet and several gigabytes of disk; after that it works offline. The 8 GB RAM floor in the catalogue is system memory for the CPU path; on a GPU the constraint is VRAM, and 6 to 8 GB is where video work stops being painful.

Processors are the product, and most of them are not swapping

The interface is built around a chain of processors you enable per job. The face swapper gets the headlines, but the ones I use are the others: face enhancer (GFPGAN and CodeFormer-family models) for restoring soft or damaged faces in old photographs, frame enhancer for upscaling the whole image, frame colorizer for black-and-white footage, expression restorer to pull a source expression back after a swap, and the lip syncer, which re-times mouth movement to an audio track and is genuinely useful for dubbing your own recordings. Age modifier and face debugger round it out. Every processor is a separate model, so enabling four means four passes over every frame.

Headless mode is what you will actually script

The UI is for exploring; the CLI is for batches:

python facefusion.py headless-run \
  --source-paths me.jpg \
  --target-path talk.mp4 \
  --output-path talk-restored.mp4 \
  --processors face_enhancer frame_enhancer

That runs the enhancers over a video with no swap at all. Wrap it in a shell loop over a folder of scanned family photos and you have an offline restoration pipeline that a cloud service would charge per image for. A fully documented option list is at docs.facefusion.io, and the flags change between releases, so check it against your installed version rather than an old forum post.

CPU-only works, at about a frame a second

The CPU path exists and is fine for single photos: a few seconds per image on a modern laptop. Video is where "GPU strongly recommended" becomes "required": at a rough frame a second on CPU, a 60-second clip at 30 fps is half an hour, and adding a second processor doubles it. On a mid-range NVIDIA card the same clip is a couple of minutes. Apple silicon is supported through CoreML and sits between the two in my experience.

The lines it will not cross, and the ones you should not

Stock FaceFusion ships with a content filter that blocks explicit material and it is not a toggle; that is the "built-in content restrictions" con, and the maintainers are deliberate about it. It is also the weaker of the two restraints. The stronger one is you: swapping a face onto footage of someone who did not agree is a legal problem in a growing number of jurisdictions and an ethical one everywhere. The legitimate uses (your own photos, your own videos, consenting collaborators, VFX previews) are more than enough to justify the tool. Treat consent as a requirement, not a courtesy.

Where it sits next to ComfyUI

If you already run ComfyUI, face-swap and restoration nodes exist there too, and for a single still image inside a larger generation workflow that is the better home. FaceFusion wins on video: frame tracking, occlusion masks, and a pipeline built for temporal consistency, none of which are pleasant to reproduce in a node graph. Most people in the AI image generation space end up with both, used for different jobs.

What I'd do

Install it on the same GPU box that runs your other local AI tools, cuda runtime, models cached once, and use the headless mode from a script for photo restoration, which is the job it does that nothing cloud-hosted does as well or as privately. Leave the swapper for projects where everyone in frame has signed off. Run that way it is a small, actively maintained, MIT-licensed tool that earns its place, and the desktop-only nature is a feature: your faces never leave the room.

Similar self-hosted ai apps