A desktop app that removes image backgrounds locally using ONNX models. No cloud upload, no account, no telemetry.
Built with Tauri 2, React, and Rust (ONNX Runtime via ort).
Main window — quality modes on the left, drop target on the right. The CUDA chip shows the active execution provider (your machine may show CPU or DirectML instead).
Prebuilt installers are published on GitHub Releases.
chmod +x swiftmask-linux.AppImage
./swiftmask-linux.AppImage-
No install step required.
-
NVIDIA GPU (optional): install proprietary drivers as usual. SwiftMask selects CUDA when the stack is available; otherwise it uses CPU.
-
If the window is blank or glitchy on some WebKit/GTK setups, try:
WEBKIT_DISABLE_COMPOSITING_MODE=1 ./swiftmask-linux.AppImage
-
If your desktop cannot run AppImages (missing FUSE), use the
.deb/.rpm, or extract with./swiftmask-linux.AppImage --appimage-extract.
sudo dpkg -i swiftmask-linux.deb
# if dependencies are missing:
sudo apt-get install -f# Fedora / RHEL-family
sudo dnf install ./swiftmask-linux.rpm
# or
sudo rpm -i swiftmask-linux.rpm- Download
swiftmask-windows-setup.exe(NSIS) orswiftmask-windows.msi(MSI) from the release. - Run the installer.
- SmartScreen may warn on unsigned builds — choose More info → Run anyway if you trust the release source. Signing is planned for later releases.
On first run the app benchmarks available execution providers (CPU, CUDA on Linux NVIDIA, DirectML on Windows) and picks the fastest for your hardware. You can override this anytime in Settings.
Stable builds can check GitHub Releases for signed updates (Settings → Check for updates; also a quiet check after launch). There is no telemetry — only a single HTTPS request for the release manifest when checking.
- In-app update packages: AppImage (Linux) and NSIS (Windows).
.deb/.rpm/ MSI remain on Releases for first install / package managers. In-app update from those installs may pull AppImage/NSIS instead — prefer AppImage or NSIS if you want the built-in updater path.- Prereleases do not move GitHub “latest”; auto-update stays quiet until a non-prerelease tag is published.
- Local inference — images never leave your machine
- Multiple quality modes — Balanced through Max Quality (downloadable ONNX models)
- GPU acceleration — CUDA on Linux (NVIDIA), DirectML on Windows; CPU fallback everywhere
- Flexible image input — open images from the file picker, drop them on the preview pane, or paste a copied image with
Ctrl+V - Batch queue — multi-drop or open a folder; serial processing with per-item progress, cancel, and retry
- Folder watch (optional) — auto-enqueue new images in a watched folder after you start Process once
- Before/after slider — scrub between input and output after processing
- Signed auto-updates — optional check against GitHub Releases (no telemetry)
Supported input formats: PNG, JPG, WEBP, BMP.
| Mode | Model | Size | License |
|---|---|---|---|
| Balanced | isnet-general-use | ~178 MB | Apache-2.0 (download on first use; good default) |
| Balanced+ | rmbg-1.4 | ~176 MB | CC BY-NC 4.0 (download on first use) |
| High | birefnet-general-lite (birefnet-lite-512.onnx, 512²) |
~183 MB | MIT (download on first use; lower VRAM than 1024 models) |
| Max Quality | rmbg-2.0 | ~173 MB | CC BY-NC 4.0 (download on first use) |
A small bundled model (u2netp) is used only for offline GPU/CPU benchmarks — it is not offered as a quality mode.
Downloads are verified with SHA-256 before use and cached under the app data directory (models/).
- Open images — Select image, drop one or more files on the preview (
Ctrl+O), paste an image from the clipboard (Ctrl+V), or Open folder (Ctrl+Shift+O). Multi-drop and folders fill the queue drawer. - Pick a quality mode — download on first use (Balanced is the preferred default).
- Click Process / Process all (
Ctrl+Enter). Cancel with Escape while a job is running. For a watched folder, turn on Watch and run Process once so later arrivals auto-process. - Use the comparison slider to check the result. Output is saved as a transparent PNG.
Default output name: {original-stem}-nobg-{modelId}.png next to the input (or in the folder you set in Settings). If that file already exists, SwiftMask asks before overwriting.
| Problem | What to try |
|---|---|
| Blank / black window (Linux) | Launch with WEBKIT_DISABLE_COMPOSITING_MODE=1. Some Arch/CachyOS WebKit builds need this. |
| AppImage won’t start | chmod +x the file. Ensure FUSE is available, extract with ./swiftmask-linux.AppImage --appimage-extract, or install the .deb / .rpm instead. |
| CUDA not used (Linux) | Install proprietary NVIDIA drivers. The title-bar chip should read CUDA when active. Without drivers, CPU is used automatically. |
| Windows SmartScreen | Expected for unsigned builds — More info → Run anyway if you trust the release. |
| Download fails | Check network access to GitHub / Hugging Face. Incomplete files are re-downloaded and re-verified. |
| Out of memory on large images | Prefer Balanced or High (High runs at 512² to cut VRAM vs 1024 models). Avoid Max Quality on low-VRAM GPUs, or use a smaller source image. GPU OOM may automatically retry on CPU when the backend can detect it. |
| Need a commercial workflow | Use Balanced or High (Apache-2.0 / MIT models). Do not use Balanced+ / Max Quality for commercial work unless you have a separate license from the model rights holder. |
Report bugs and feature requests on GitHub Issues. Include OS, app version (Settings), execution provider chip, and what you were doing when it failed.
- Bun — package manager (
bun.lockis canonical; do not commitpackage-lock.json) - Rust 1.88+ (stable)
- Platform libraries for Tauri — see Tauri prerequisites
Optional GPU support
- Linux + NVIDIA: recent proprietary drivers; CUDA execution provider is selected automatically when detected
- Windows: DirectML via the system GPU stack (no separate CUDA install)
bun install
bun run tauri devThis starts the Vite dev server and opens the desktop window. On first launch the app benchmarks available execution providers and may prompt you to download a preferred model.
SwiftMask is open source under the MIT License. That covers the application itself — UI, Tauri shell, inference pipeline, and tooling.
The ONNX models are third-party works with their own terms (see the table above and src-tauri/src/models.rs). SwiftMask downloads and runs them on your machine; it does not relicense them.
| Mode | Can end users use outputs commercially? |
|---|---|
| Balanced | Generally yes, under Apache-2.0 (attribution and license notice as required by Apache) |
| High | Generally yes, under MIT (birefnet-lite-512 / BiRefNet_lite) |
| Balanced+, Max Quality | No — CC BY-NC 4.0 allows non-commercial use only |
The non-commercial restriction applies to people who use the RMBG models (Balanced+ and Max Quality), not to publishing SwiftMask as free software. If you process images for paid work, client deliverables, product photography, or other commercial purposes, use Balanced or High, or obtain a separate commercial license from the model rights holder (BRIA for RMBG-1.4 / RMBG-2.0).
This section is a plain-language summary, not legal advice.



