intabai
/ video face swap
github
auto
light
dark
models (cached in browser)
show / hide model cache
Models download once into your browser and persist across visits. Nothing leaves your machine.
video
process at
video subset (full video)
start
preview
end
use separate preview frame
scope preview player above to selected range
face image
options
swap model
download a model first
face detector
SCRFD 500m (default, fast + good quality)
YOLOFace + 2DFAN4 (slowest, highest quality landmarks)
MediaPipe FaceLandmarker (fast, desktop only - silently fails on mobile)
YuNet (fast, lower quality than SCRFD)
face enhancement
(none) - faster
XSeg occlusion mask
- better blending around hair/hands. small per-frame cost.
preview single frame before processing full video
advanced
debug
- verbose diagnostics in a log pane below the processing box (file read, mp4 demux, decoder config, worker events) plus per-kernel WebGPU timings dumped to the browser devtools console for the single preview frame swap (requires "preview single frame" to be on).
GPU paste-back
- run paste-back on a WebGPU compute shader instead of the JS double-loop. modest win on mobile, neutral or slightly worse on desktop (GPU dispatch overhead vs the JS loop on typical frame sizes).
worker mode
- off: pipeline runs on the main thread. per-frame: worker holds the pipeline; main thread still extracts and muxes, sends each frame to the worker for processing. full: worker also extracts (mp4box + WebCodecs) and muxes - main thread is essentially idle during processing. note: loads the entire video file into memory (Android revokes picked-file handles between calls, so we slurp once up front).
off
per-frame in worker
full worker
reset to defaults
mobile-friendly defaults applied
swap
processing
cancel
PiP GPU keep alive