Remove backgrounds on your Mac. Free, private, and local — nothing is uploaded.
A native macOS app powered by withoutBG Open Weights. Drag and drop images for cutouts, or start the optional Local API on http://127.0.0.1:8000 for scripts, the GIMP plugin, and CI.
Download → · Local API docs → · Headless / CI →
Open Weights results → · Cloud API results → · Compare →
- Drop, open (⌘O), or paste (⌘V) up to 20 images
- Sequential auto-processing with Quick Look preview
- Responsive thumbnail grid with Photos-style selection
- Export transparent PNGs individually or as a zip
- Light / dark / system appearance
- Finder Services: Remove Background on selected images
- Start/stop from the menu bar extra or Settings
POST /v1/remove-background— same inference engine as the desktopGET /health,GET /openapi.json- Request log and operational metrics in the menu bar
- Loopback-only (
127.0.0.1) — sandboxed, private
| Product | Audience | Scheme |
|---|---|---|
| withoutBG (primary) | Creators + developers | WithoutBG |
| WithoutBG Server (headless) | CI / automation-only | WithoutBGServer |
Most users should install withoutBG. The headless server build is for environments that only need the HTTP API.
- macOS 14+
- Xcode 16+ (Swift 5.9+) — for building from source
- XcodeGen (
brew install xcodegen) — for building from source
- Launch withoutBG
- Click the menu bar icon → Start Local API
- Send a request:
curl -X POST \
--data-binary @photo.jpg \
-H "Content-Type: image/jpeg" \
http://127.0.0.1:8000/v1/remove-background \
-o result.pngOpenAPI spec: http://127.0.0.1:8000/openapi.json
The Xcode project is generated from project.yml (gitignored).
xcodegen generate
open WithoutBG.xcodeproj- WithoutBG — windowed desktop app with menu bar Local API controls
- WithoutBGServer — menu-bar-only headless distribution (
LSUIElement)
# Primary app
xcodebuild -scheme WithoutBG -destination 'platform=macOS' build
# Headless server (advanced)
xcodebuild -scheme WithoutBGServer -destination 'platform=macOS' buildRelease builds:
./scripts/release.sh # withoutBG DMG (primary)
./scripts/release.sh --server # WithoutBG Server DMG (headless)Background removal runs on-device via the bundled withoutBG Open Weights routed bundle (Core ML, fp32, v10.8.0). A MockProcessor is available behind the same BackgroundRemovalProcessor protocol for UI development without the model.
withoutbg-mac/
├── Packages/WithoutBGCore/ Shared inference, model, settings, product links
├── Apps/
│ ├── WithoutBG/ Primary desktop + embedded Local API
│ └── WithoutBGServer/ Headless menu-bar distribution
├── project.yml
└── scripts/release.sh
Both the desktop queue and Local API serialize through one SharedInferenceCoordinator actor backed by a single CoreMLProcessor instance — one model load, fair GPU scheduling.
Desktop UI ──┐ ┌─ matting (withoutbg-open-weights)
├── SharedInferenceCoordinator ── CoreMLProcessor ── router ─┤
Local API ───┘ (backbone + router) └─ BiRefNet (birefnet-general)
Xcode builds compile the bundled .mlpackages to .mlmodelc at build time. SwiftPM builds (swift test) verify each package against the manifest checksum and compile it once into ~/Library/Application Support/withoutBG/CompiledModels.
Shared code lives in Packages/WithoutBGCore. To run the UI without the model, inject MockProcessor() at app init.
The standalone withoutbg-mac-server repository is consolidated into this monorepo. See docs/MIGRATION.md.
Existing com.withoutbg.mac.server installs continue to work via the WithoutBGServer target. New users should install withoutBG instead.
This app is the native desktop path: drag-and-drop cutouts plus an optional Local API. Same open-weights technology powers the rest of the ecosystem:
| Surface | Choose when |
|---|---|
| GIMP plugin | You edit in GIMP 3 and want a private, mask-first workflow via this Local API or Docker |
| Docker / self-host | You want an HTTP API or browser UI on your own server (CPU or NVIDIA GPU) |
| Python package | You want to embed withoutBG in scripts, notebooks, or backends |
| Hugging Face · Space | You want to try a demo or download the ONNX weights directly |
| Cloud API | You need maximum quality without running inference yourself |
The withoutBG Open Weights Model (v10.8.0) is a routed bundle of three Core ML graphs shipped with the app, converted from the published ONNX bundle:
- Backbone + router — one DINOv3 ConvNeXt-Base pass at 448² classifies the image and yields shared features.
- withoutBG matting — fine strands, soft detail and transparency: Depth Anything V2 Small depth plus the matting trunk, reusing the backbone features.
- BiRefNet — hard opaque objects, flat scenes and vehicles: segmentation at 1024².
Only the selected branch runs, and its alpha is upsampled to the original resolution. Preprocessing matches the Python SDK and Docker host, and the Local API reports the decision in X-Route-Category / X-Route-Pipeline headers. Built with DINOv3.
Licensed under the withoutBG Open Model License (Apache 2.0 for withoutBG portions; Meta DINOv3 License for DINOv3 backbone weights). See THIRD_PARTY_NOTICES for model attributions (DINOv3, Depth Anything V2, BiRefNet).
This project’s source code is licensed under the Apache License 2.0.
Bundled withoutBG Open Weights are distributed under the withoutBG Open Model License (Apache 2.0 for withoutBG portions; Meta DINOv3 License for DINOv3 backbone weights). See THIRD_PARTY_NOTICES for model attributions (DINOv3, Depth Anything V2, BiRefNet).
- Bugs / questions: GitHub Issues
- Product page: withoutbg.com/mac
- Commercial: contact@withoutbg.com



