AudioPriorityBar is a native macOS menu bar app that provides automatic audio device switching based on user-defined priorities. Belonging to the system utility category, this tool is designed for users who frequently connect and disconnect multiple audio devices and want a seamless, hands-free experience. The core value of the app is eliminating the need to manually change audio output in System Preferences every time a device connects or disconnects. By intelligently selecting the highest-priority available device, it streamlines workflows and reduces interruptions, making it an essential utility for power users, streamers, and audio professionals.
The primary pain point this app solves is the repetitive and disruptive process of manually switching audio outputs. Anyone who uses multiple audio devices on a Mac—such as external speakers, headphones, Bluetooth headsets, or USB interfaces—knows the frustration of having to open System Preferences, navigate to Sound settings, and select the correct device each time. This becomes especially problematic for professionals who need to stay focused on creative or technical work. AudioPriorityBar eliminates these interruptions by automatically detecting device connections and disconnections, then switching to the highest-priority device without any user intervention, saving time and maintaining concentration.
The first major feature group is priority-based auto-switching with separate speaker and headphone modes. The app allows users to assign a priority rank to each audio device, and when a device with a higher priority connects, it automatically becomes the active output. Additionally, output devices are categorized as either speakers or headphones, each with its own independent priority list. This distinction ensures that when headphones connect, they take over from speakers automatically, but speakers never interfere with headphone priority. The feature is built on CoreAudio enumeration and real-time change listening, making the switching instantaneous and reliable.
Another core feature set includes manual override and device memory. The Custom mode, indicated by a hand icon in the menu bar, disables auto-switching entirely, giving users full control to select any device manually. This is useful for troubleshooting or specific situations where the user wants to keep a particular device active regardless of priority. Complementing this is device memory, which remembers every device that has ever been connected, even when it is currently disconnected. In Edit mode, users can see a list of all devices with 'last seen' timestamps, reorder them in the priority list, or forget devices that are no longer used. This comprehensive memory prevents confusion and keeps the device list clean.
admin
Additional capabilities include per-category ignore, drag-to-reorder, and volume control. The per-category ignore feature allows users to hide a device from either the speaker or headphone category without affecting its presence in the other. For example, a Bluetooth speaker that you never want to use as headphones can be ignored in the headphone list. Drag-to-reorder enables intuitive rearrangement of device priority by dragging the handle or using up/down arrows on hover. Volume control is integrated directly into the menu bar, adjustable via a slider or scroll wheel, with the current volume percentage displayed. These features are all accessible from the compact menu bar popover, maintaining a minimal footprint.
The overall workflow of AudioPriorityBar is straightforward yet powerful. The app launches as a menu bar icon, where it displays the current mode (speakers, headphones, or custom) and volume percentage. Under the hood, it uses CoreAudio to enumerate all audio devices and to listen for device connection and disconnection events. Device UIDs are stored in UserDefaults, ensuring stable priority assignments across reconnects. When a device is removed or added, the app evaluates the highest-priority available device for the active mode and switches to it automatically. Categories are assigned based on a built-in headphone detection list that includes over 80 brand and model keywords, though users can manually adjust a device's category. The app is built entirely with Swift and SwiftUI, providing a native and responsive user interface.
Concrete use cases demonstrate the app's real-world impact. A podcaster who uses an external USB microphone and headphones can set the microphone's paired output as highest priority for headphones, so it auto-switches when the microphone is plugged in. A developer who frequently switches between built-in speakers and a Bluetooth headset can prioritize the headset, and the app will handle the transition automatically while they stay focused on code. In a shared workspace scenario, a user can set a conference room speaker as the highest priority for speakers, and the app will activate it whenever the user's Mac connects to that speaker via Bluetooth. When troubleshooting audio issues, the Custom mode allows temporary manual selection without disrupting the priority list. The outcome is a consistent, hassle-free audio experience that adapts to the user's environment.
The target audience includes macOS power users, audio engineers, podcasters, streamers, video editors, and developers who require reliable and automatic audio device management. The app requires macOS 13.0 (Ventura) or later and is built using Swift, SwiftUI, and CoreAudio. It is open source under the MIT license, available via GitHub for self-building or downloading pre-built binaries from the Releases page. The project has received 670 stars and is actively maintained by contributors. AudioPriorityBar's primary value rests in its automatic audio device switching: it removes the friction of manual device selection, allowing users to focus on their work while the app silently ensures the best audio output is always active.
AudioPriorityBar is ideal for macOS users who regularly switch between multiple audio devices, including podcasters, streamers, video editors, audio engineers, and developers. It benefits anyone using a Mac with external speakers, headphones, Bluetooth headsets, or USB audio interfaces who wants hands-free automatic switching without digging into system preferences. Power users who value efficiency and minimal interruptions will find the app indispensable for maintaining a seamless audio workflow across different environments.