macOS keeps a live list of every audio device it can currently see, and that list changes constantly: plugging in headphones, a Bluetooth speaker pairing, a USB interface waking up all add or remove an entry. Each time the list changes, macOS runs a simple rule to decide the new default, and that rule, more than any bug, is why speakers seem to switch themselves.
Most explanations of Mac audio trouble jump straight to symptoms: wrong speaker after reconnecting, headphones that won't let go, a shared Mac that never remembers anyone's preference. Those are all downstream of one mechanism. Once you see how the device list and the default get decided, the symptoms stop looking random.
The device list is not fixed, it is live
Underneath the Sound settings pane sits Core Audio, the system framework that tracks every device attached to your Mac and gives every app one shared idea of the current output and input. (We cover what Core Audio is and does more broadly in our explainer on the framework itself.) One of its jobs is maintaining that device list in real time. Built-in speakers and microphone are always on it. Everything else, AirPods, a monitor with speakers, a USB audio interface, a Bluetooth soundbar, is only on the list while it is actually connected and available.
That list is not a setting you configure. It is a live snapshot, rebuilt the instant something connects or drops off: plugging in a cable, a Bluetooth device finishing its pairing handshake, waking a Mac and having a paired accessory reconnect, even a display with built-in speakers coming back after being unplugged. Each of those is a device-list event, and macOS reacts to every one of them.
What happens the moment the list changes
Here is the part that actually causes the frustration: macOS has no ranked preference list sitting behind the device list. There is no setting anywhere that lets you mark one speaker as "always use this one if it's available." Instead, when the list changes, macOS generally hands the default output (or input) to whichever device most recently became available. A newly connected or newly reconnected device is treated as a strong signal that it should take over, and it usually does, immediately and without asking.
That single rule, most recent wins, is the entire mechanism behind "my Mac keeps switching speakers." AirPods reconnecting mid-call, a desk speaker pulling focus back after your Mac wakes, a second monitor's speakers taking over the moment you dock: none of these are faults. They are the recency rule doing exactly what it is built to do, just not what you wanted in that moment.
Every feature free for 30 days. No account, no card details.
Download for MacWhy one shared default causes most of the friction
The recency rule is simple, and simple is exactly why it scales badly. macOS keeps one system-wide default output and one system-wide default input, not one per app and not one per person using the Mac. Every app reads from the same setting, which is genuinely useful when you want your speaker choice to apply everywhere at once. But it also means there is only ever one answer to "what device is default right now," decided by whatever connected most recently, with no memory of what you actually preferred five minutes ago.
That single shared model is the root cause behind a lot of everyday audio friction on a Mac: the wrong speaker greeting you after a reconnect, a family or office Mac where whoever plugged in headphones last sets the default for the next person too. If more than one person uses the same Mac regularly, this same single-default model is why audio settings never seem to "stick" for anyone in particular, a problem we cover directly in setting up shared Mac audio for multiple users.
Working with the mechanism, not against it
None of this is a defect to patch out. Core Audio's device list and its recency rule are simple on purpose, and simple is why a new pair of headphones or a new USB interface just works the moment it connects, with no driver to install and no app to configure first. The friction shows up specifically when what you want is not "whatever connected most recently," but a fixed rule: this speaker when it's here, that one otherwise.
That is the gap Chorus's Auto-Switch feature is built to close, and it does it by working alongside the same mechanism rather than replacing it. Auto-Switch watches for the same connect and disconnect events Core Audio already reacts to, but instead of letting whichever device is most recent win by default, it applies the rule you set: switch to this output when it connects, fall back to that one when it disconnects, treat a group of speakers as one target. Core Audio still owns the device list and still makes the underlying switch. Chorus just tells it, in advance, which device should win each time, so the outcome matches what you actually wanted rather than whatever happened to connect last.
For every option available on a Mac, see Apple's own guide to sound output settings.
Frequently asked questions
What decides which speaker or microphone macOS treats as the default?
macOS keeps a live list of every audio device it can currently see, and generally hands the default to whichever one most recently connected or became available. There is no ranked preference list behind it, just a live device list and a recency rule.
Why does my Mac keep switching speakers when I plug something in or a Bluetooth device reconnects?
Because every connect or disconnect event updates macOS's device list, and a device that just became available is usually treated as the strongest signal for who should be default next. That is the exact mechanism behind speakers switching without you choosing it.
Does macOS treat the default output and the default input the same way?
Each one is tracked as its own device list, one for output and one for input, but both follow the same recency-based rule for choosing the current device. A microphone connecting can change your default input the same way a speaker connecting changes your default output.
Why does this cause problems on a Mac that several people share?
Because there is one shared default per Mac, not one per person. Whichever headphones or speaker most recently connected becomes the default for whoever uses the Mac next, until someone changes it by hand.
How does Chorus's Auto-Switch work with this system instead of fighting it?
Auto-Switch does not replace macOS's default-device mechanism. It watches the same connect and disconnect events and sets the default explicitly for the outputs, inputs or groups you choose, rather than leaving the outcome to whatever most recently became available.