When one app on your Mac plays from the wrong speaker while everything else sounds right, it's almost never a broken speaker — it's a device mismatch. Either that app has its own output-device setting pointed at a device you forgot about, or macOS switched its single system output (often the moment a Bluetooth device connected) and that one app was following a different rule. macOS has no per-app output control of its own, so the durable fix is to assign each app to the output you actually want and make it stick.
Here's the thing most people don't realize: macOS only has one output "steering wheel." System Settings gives you a single output device, and by design every app is supposed to follow it. So when one app stubbornly comes out of the laptop speaker while your music is happily on the desk speakers, something has broken that one-output assumption — and it's usually one of a small handful of causes. Let's rule them out in order, fastest first.
First, check the app's own audio settings
The most common culprit is the app itself. A lot of Mac apps carry their own output-device picker that overrides the system output. Zoom, Microsoft Teams, Discord, OBS, VLC, and most conferencing and broadcast tools all have a "speaker" or "audio output" dropdown buried in their settings. If that dropdown is set to a device — say the built-in speakers, or a headset you unplugged last week — the app will keep using it no matter what the system output says. The app isn't confused; it's doing exactly what you once told it to.
Open the misbehaving app's audio or sound preferences and look for an output/speaker selector. Set it to the device you want, or set it to "Same as System" / "Default" if that option exists. For browsers playing web audio, check whether you've routed a tab or the whole browser to an AirPlay device — macOS lets Safari and Chrome send audio to AirPlay speakers independently, and that choice sticks until you change it back.
Then check the system output and Bluetooth
If the app has no output picker of its own, the problem is upstream: the system output moved. Open System Settings → Sound and look at the selected output device. macOS will happily switch the system output on its own when a Bluetooth device connects — AirPods waking up, a headset powering on, a speaker your Mac has paired before coming into range. When that happens, the app that was "on the right speaker" a minute ago follows the system to the new device, and it feels like one app jumped.
A close relative: a Bluetooth headset switching into its low-quality call profile (HFP) mid-call, which can change how and where audio comes out. And if you ever built an Aggregate Device or a Multi-Output Device in Audio MIDI Setup, selecting it as the system output sends sound to every device in the group at once — so audio comes out of a speaker you weren't expecting on top of the one you were.
The causes at a glance
| What you're hearing | Likely cause | Where to fix it |
|---|---|---|
| One app on the wrong speaker, the rest correct | The app's own output-device setting | That app's audio preferences |
| Everything jumped to a new device at once | Bluetooth device connected and grabbed the system output | System Settings → Sound |
| Sound from two speakers at once | Aggregate or Multi-Output Device selected | Audio MIDI Setup |
| A browser tab on a different speaker | AirPlay output set per-tab or per-browser | The browser's audio/AirPlay menu |
| App keeps reverting after you fix it | App re-selects its stored device on launch | Pin it with a per-app router |
Why the "fix" keeps not sticking
You can chase this manually, and for a one-off it works: set the app's dropdown, or switch the system output back. But two things make it recurring. First, apps that store their own device will happily re-select it every launch — you fix it, quit, reopen, and it's wrong again. Second, macOS has no concept of "this app always plays here." There is one system output for everyone, and the only apps that escape it are the ones with a private picker — which is exactly what created the mess. Apple never shipped a per-app output map, so there's nothing native to set once and forget.
That's the real gap. What you want is simple to say and impossible to do in stock macOS: "Slack alerts to the laptop speaker, music to the desk speakers, this call to my headset" — and have it hold whether or not a Bluetooth device wanders in. For that you need something sitting at the audio layer that assigns each app an output and keeps it there.
The fix that sticks: pin each app to an output
A per-app audio router adds the layer macOS is missing: every running app gets its own output device, set by you, remembered across launches, and independent of whatever the system output is doing. Set the noisy app to the speaker you want once, and a stray Bluetooth connection no longer drags it anywhere.
Fader does this from the keyboard. You assign an app to an output device, and it stays — no menu-bar hunting each time a device connects. Because the whole app is keyboard-driven, switching one app's output is a keystroke rather than a trip into three different settings panels, which matters when devices come and go all day. Fader is $19.99 one-time (3-day free trial, macOS 14.4+), so there's no subscription hanging over a problem you're trying to solve once. If your issue is really about moving an app between devices on the fly, the walkthrough in how to switch one app's output device without unplugging anything covers the exact flow, and how to set a default output device for a specific app covers making it stick.
What about SoundSource or Audio Hijack?
Both are solid, and worth naming honestly. SoundSource by Rogue Amoeba does per-app output routing well — you can send any app to any device, it added grouped multi-output and per-app AirPlay in version 6, and it layers on a 10-band EQ and effects. It's $49 one-time. Audio Hijack, also from Rogue Amoeba, can define an output route per app but is really built for recording and processing pipelines, which is more machinery than a "wrong speaker" problem needs. If you want deep EQ and effects alongside routing, SoundSource is the richer tool. If what you want is to assign the right output fast and move on — and to do it from the keyboard for less than half the price — that's Fader's lane.
Bottom line
A Mac playing one app from the wrong speaker is a device mismatch, not a hardware fault. Check the app's own output picker first, then the system output and any Bluetooth device that may have grabbed it, then rule out an aggregate device. When the fix won't stick because the app keeps re-choosing its own device, the answer is a per-app router that pins each app to the output you want. Fader does exactly that, from the keyboard, for $19.99 once.
Send each app to the right speaker — and keep it there
Fader assigns every app its own output device, set from your keyboard and remembered across launches. $19.99 one-time, 3-day free trial, no account. macOS 14.4+.