Meme Swap app icon

Your face.
Any meme.

AI face swapping for GIFs — running 100% locally on your Mac. No cloud. No uploads. Just memes.

🍎 Apple Silicon · CoreML 🔒 On-device only 🆓 Open source

How it works

Three steps.
Zero editing skills.

1
🤳

Pick a face

Drop in any photo of a face — yours, your friend's, your cat's owner's. One image is all it takes.

2
🎬

Pick a meme

Choose a target GIF — search Giphy right from the app, or use your own file.

3
✨

Swap & share

The AI pipeline swaps every frame, restores expressions and enhances the result. Download as GIF or MP4.

GIF in → FFmpeg → MP4 → FaceFusion swap → Enhance → GIF / MP4 out

See it in action

A serious tool,
disguised as a toy.

Meme Swap — localhost:3010
Meme Swap web app — dark interface with GIF library, search and quality presets

Giphy, plugged in

The entire Giphy library,
one click away.

Search Giphy without ever leaving the app — trending memes, hashtag shortcuts, instant previews. Pick a GIF and Meme Swap downloads and converts it for the AI pipeline automatically.

  • Built-in search with #meme hashtag pills
  • One click: fetch, convert, ready to swap
  • Curated offline library when no API key is set
  • Or just drag & drop your own GIF
Built-in Giphy search — GIF grid with trending memes and hashtag pills

Privacy by design

Your face never
leaves your Mac.

Everything — the AI models, the processing, the results — lives in a single folder on your machine. Nothing is ever uploaded, tracked or stored in someone else's cloud.

📁~/.meme-swap/
  • ├── facefusion/AI engine + Python venv
  • ├── models/Neural networks, downloaded once
  • └── process/Temp files & results
🛜

Works offline

Once installed, face swapping needs no internet connection at all.

⚡️

Apple Silicon fast

Inference runs through CoreML on the Neural Engine and GPU, with CPU fallback.

🧹

Easy to remove

Delete one folder and every model, cache and result is gone. That's it.

Under the hood

Serious AI.
Silly results.

Meme Swap orchestrates FaceFusion, the state-of-the-art open-source face manipulation platform, as a headless engine — wrapped in a fully typed TypeScript pipeline.

Core engine

FaceFusion

The industry-reference face swapping platform, driven headlessly through its Python CLI. Meme Swap installs it in an isolated virtual environment and streams real-time progress back to the UI — analysing, extracting, processing, merging.

Python 3.11 ONNX Runtime CoreML · CPU · CUDA
Face swapper

inswapper_128

InsightFace's flagship swap model (with an fp16 variant for speed) transfers identity frame by frame.

Face enhancer

CodeFormer

Transformer-based face restoration sharpens each swapped face with an adjustable blend.

Frame enhancer

Real-ESRGAN ×2

Optional super-resolution upscales the whole frame for crispier final GIFs.

Expression & lips

Expression Restorer + Lip Syncer

Keeps the original grimaces, blinks and mouth movement so the meme stays the meme.

Media pipeline

FFmpeg

Seamless GIF ↔ MP4 conversion with palette-optimized GIF encoding on the way out.

Built with TypeScript Turborepo + pnpm Next.js 14 Electron Model Context Protocol

One engine, three apps

Swap from anywhere.

🌐

Web app

A Next.js 14 interface with drag & drop, Giphy search, model settings and live progress. Runs on localhost — the browser is just the UI, processing stays on your machine.

pnpm frontend:dev
🤖

MCP server

A Model Context Protocol server that lets AI assistants like Claude or Cursor run face swaps as a tool. "Put my face on the Success Kid meme" — done.

run_faceswap(...)

Get started

One download away
from meme greatness.

Meme Swap for macOS

Native desktop app · Apple Silicon .dmg · guided first-run setup installs FaceFusion for you

Download latest release

The app isn't notarized yet — on first launch, right-click Meme Swap.app → Open.

meme-swap — zsh
# 1. Clone & install the monorepo
$ git clone https://github.com/Tlahey/meme-swap.git && cd meme-swap
$ pnpm install

# 2. One-time: install FaceFusion into ~/.meme-swap
$ pnpm install:facefusion

# 3. Build & launch
$ pnpm build && pnpm frontend:dev
▲ Next.js ready on http://localhost:3010 ✨

Requires macOS with Node.js ≥ 18, pnpm ≥ 9, Python ≥ 3.9 and FFmpeg (brew install ffmpeg). Full guide in the README.

Make your friends
the meme they deserve to be.