A workshop, not a face filter
Faceswap gives you the machinery behind a trained face replacement. The workflow starts with two sets of photos or videos. You extract and align faces, train a model to learn the relationship between them, then convert frames with the trained result. A separate tools entry point handles work such as video conversion, while the GUI exposes the same broad process without asking users to remember every command.
That scope is the reason to choose it. You can inspect extracted faces, correct alignments, manage masks, and revisit a model instead of accepting whatever a hosted app returns. Reusing a model can shorten later training. These are hands-on controls for people willing to learn what changes the output.
The tradeoff is time. This is a data-preparation and model-training application, so a successful installation is only the first checkpoint. Results depend on the source footage, alignments, chosen model, training run, and conversion settings. If your actual requirement is a quick social clip from one portrait, most of Faceswap's value becomes work you did not want.
What happened when we ran it
We cloned commit f530cb7 into a fresh Debian container with 3 CPUs, 8 GB of RAM, no secrets, and an unprivileged user. The checkout contained 578 files and about 96,644 lines of source, occupying 7 MB. Installation completed in 37 seconds. It installed 33 packages and added 36 MB on disk. The build also completed, taking 31 seconds.
The test result was mixed. Pytest ran for 30 seconds and exited with code 1. It recorded 93 passing tests, zero ordinary failures, and 71 collection or setup errors out of 164. The final log lines repeatedly name configuration-file cases in tests/lib/config/ini_test.py, including synchronization from the app, synchronization to the app, loading, and updates. The log tail does not identify a cause, so it would be wrong to blame a missing library or a particular Python incompatibility.
The dependency audit found no known vulnerabilities in the installed Python packages. The repository has a tests directory and one CI workflow, but much of the suite did not complete an assertion. A contributor should reproduce those errors before trusting a change.
Hardware decides whether setup was the easy part
Faceswap supports Windows, Linux, and macOS, with downloadable installers for each. The v3.0.0 release says its installers obtain missing tools such as Git, MiniConda, and PyTorch, create the environment, and add a desktop launcher. The manual route uses setup.py plus hardware-specific requirement files. A virtual environment is strongly recommended because the maintainers do not generally support installations where package conflicts share the system environment.
GPU details matter more than the base command. The install guide says training on a CPU can take weeks instead of several hours on a capable GPU. NVIDIA is the direct route on Windows, Linux, and macOS where supported. AMD acceleration uses ROCm on Linux; Windows users need WSL2 for that path. Native Apple Silicon GPU processing is labeled experimental. Those distinctions can turn an appealing GUI download into a hardware migration, so check them before preparing a dataset.
Video work also means managing frames and FFmpeg. Faceswap includes an Effmpeg tool, or you can use FFmpeg directly to split and reassemble video. Storage, model state, and intermediate assets belong in the setup plan even though they are not Python dependencies.
Controls are useful, and failure modes are specific
The current issue list is small, but several reports touch normal use. Issue #1563 shows a macOS installation ending with an AttributeError in Python logging while the installer still prints that installation is complete and creates a launcher that does not open. Issue #1536 reports that the documented GPU Docker build cannot find one NVIDIA requirements file. Issue #1544 describes landmark meshes missing from some thumbnails in the manual tool. These are narrower than a broken core pipeline, yet each can block a new user at an awkward point.
There is a more serious trust boundary around downloaded models. Issue #1556 notes that common PyTorch, TensorFlow, and pickle model formats may execute code during unsafe deserialization. Faceswap's release notes tell people not to run the Windows installer as Administrator. Treat model files like executable software: use a trusted source and avoid an administrator or root account.
Consent belongs in the product decision too. The README devotes a manifesto to ethical use and rejects non-consensual, deceptive, illicit, or inappropriate swaps. That statement does not enforce consent for you. A studio or research team still needs permission records, access limits around source faces, and human review before anything leaves the workstation.
Maintenance and the decision
The repository's last push was August 5, 2026. Issues and pull requests were updated later in August, including installation reports and proposed security hardening. GitHub showed 14 open issues and pull requests combined. The latest packaged release was v3.0.0 on December 21, 2025, two days after v2.3.0; the prior listed release was from 2023. The recent push and issue activity show current work even though public releases have arrived unevenly.
Documentation is unusually deep for a tool with this many moving parts. The README explains the four-stage workflow and points to dedicated installation and usage manuals, plus a forum and Discord for support. Some phrasing assumes users will explore command help, but the separate manuals provide the substance missing from the overview.
Choose Faceswap when training control and repeatable local work matter enough to justify dataset preparation and GPU planning. It is a poor match for one-click edits, CPU-only training, or unattended output. Our build passed, but the incomplete test run means developers should verify the configuration suite in their own target environment before extending the code.

