Per-app volume control and audio routing for macOS
Control volume for each app independently. Route audio to different output devices. Native, lightweight, free.
Built with Swift and SwiftUI. No Electron, no web views, no bloat.
- Per-app volume control — Adjust volume independently for Chrome, Spotify, Zoom, and any other audio-producing app
- Per-app mute — Silence individual apps without affecting others
- Audio routing — Send each app's audio to a different output device (speakers, headphones, AirPods)
- System volume & input controls — Manage your default output device and microphone from the menu bar
- Global microphone mute — One-click mute that works across all apps
- Smart app detection — Automatically discovers audio-producing apps, including Chrome helpers and Electron apps
- Lightweight & native — Built with Swift 6 and SwiftUI. No daemons, no kernel extensions, no virtual audio drivers
- Lives in your menu bar — Stays out of your way until you need it
- Free & open — No ads, no subscriptions, no telemetry
Download the latest version from Releases. Unzip, drag SoundFlow.app to your Applications folder, and launch.
| Requirement | |
|---|---|
| OS | macOS 14.2 (Sonoma) or later |
| Chip | Any Mac (Apple Silicon or Intel) |
SoundFlow uses the Core Audio Tap API which was introduced in macOS 14.2. Earlier versions are not supported.
On first launch, SoundFlow needs Screen & System Audio Recording permission to read audio streams from other apps. This is the standard permission for the Core Audio Tap API — it does not record your screen.
To grant access:
- Click the SoundFlow menu bar icon and try to adjust an app's volume
- macOS will prompt you to grant permission
- Click Open System Settings, then enable SoundFlow under Privacy & Security > Screen & System Audio Recording
- Quit and relaunch SoundFlow
SoundFlow has a built-in update checker. Click the version number at the bottom-left of the menu bar popover to:
- Automatically check GitHub for newer releases
- Download the update directly
- Install with one click (macOS will ask for your password)
You can also browse releases manually on the Releases page.
This repository hosts the translation files for SoundFlow. You can help translate the app into your language or improve existing translations.
- Fork this repository
- Edit an existing file in the
languages/folder, or create a new one by copyingEnglish.xml - Translate the string values (the text between
<string>tags) — do not change thekeyattributes - Keep any
%1,%2,%@,%dplaceholders in place — the app needs them - Submit a pull request
| Language | File | Status |
|---|---|---|
| English | English.xml |
Complete |
Want to add a new language? Copy English.xml, rename it to your language name (e.g. French.xml), translate the values, and submit a PR.
Please use Issues to report bugs or request features.
If SoundFlow is useful to you, consider supporting development:
SoundFlow is signed with an ad-hoc signature (not yet notarized with Apple). On first launch you may see a Gatekeeper warning.
To fix this:
- Click Done to dismiss the dialog
- Open System Settings > Privacy & Security
- Scroll down — you'll see a message that SoundFlow was blocked
- Click Open Anyway
This only needs to be done once. After that, the app will open normally.
Some apps need a moment to attach their audio stream. Try playing audio in the app first, then adjust the volume. If it still doesn't work, the app may be using a non-standard audio path (e.g. virtual audio drivers like BlackHole).
SoundFlow only shows apps that have a real app icon. Background daemons and helper processes are filtered out automatically. If your app uses Electron or web views, the audio may come from a helper process — SoundFlow detects this and shows the parent app's name.
MIT © Beyond the Code


