PairPods: a menubar app for sharing one audio stream across several Bluetooth devices
Free and open source app to share audio on macOS
At a glance
- What is it?
- PairPods is a SwiftUI menubar app for macOS that streams the same audio to two or more Bluetooth devices at once, with per-device volume, sample rate display and a master clock picker. The interesting part is the documented failure mode: when two headphones run at different native sample rates, one of them can end up pitch-shifted.
- Who is it for?
- PairPods fits a macOS user with two or more Bluetooth headphones or speakers who wants one source of audio playing on all of them, and who is willing to check the sample rate readout before assuming the two devices will match. It does not fit a Linux or Windows user, a setup with only one output device, or anyone who needs the devices to behave as independent mixes rather than one shared stream.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 51 days ago.
- What is it written in?
- Mainly Swift, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 25, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A menubar app for a problem macOS does not solve
PairPods is a macOS menubar app whose stated purpose is sharing audio between multiple Bluetooth devices simultaneously. The documentation frames the use case plainly: watching a movie with a friend on a train, or sharing your favourite music. The site is pairpods.app and the repository is Swift, with the app itself built as a native SwiftUI application.
The interaction is deliberately short. You connect two or more Bluetooth devices to your Mac, click the PairPods menubar icon, use checkboxes to select which devices take part, then toggle Share Audio on and off. There is no pairing wizard, no account and no configuration file to edit.
The feature list is worth reading closely because it tells you what the app does with the audio rather than just how it selects devices. Beyond the sharing itself there are per-device toggles, per-device volume adjustment, automatic reconnection when a device disconnects, a configurable auto-reconnect timeout with Off, 5, 10 and 30 second options, a sample rate readout per device, a battery level display where the device supports it, and a one-click way to set any device as the master clock.
The requirement list sets the floor: macOS 13.5 Ventura or later, both Apple and Intel silicon supported, and two or more compatible Bluetooth audio devices. That last one is the point of the whole application, and it also means the app is not a single-device utility.
Sample rate mismatch is the failure mode worth understanding
The documentation has a dedicated Known Limitations section, and it covers one problem in detail: audio pitch shifting between devices with different sample rates. When two Bluetooth devices have different native sample rates, such as 44,100 Hz against 48,000 Hz, the audio may sound pitch-shifted or warped on one device.
This is not a hypothetical edge case. PairPods exists to play one stream on several devices, and the devices are independent pieces of hardware with independent clocks. The app cannot make a 44.1 kHz headset and a 48 kHz headset agree natively, so something has to be resampled, and resampling between mismatched rates is exactly where pitch artefacts come from.
The design response is diagnostic rather than magical. The menu shows each device's sample rate so you can identify a mismatch, and the documentation suggests two workarounds: use two devices of the same model or brand, since they are more likely to share the same native sample rate, or tap the crown icon to set one device as the master clock. The second option moves the burden of synchronisation onto a device you choose, which is the right lever if you have three devices and one of them is the odd one out.
The sample rate display is therefore a feature with a job to do, not decoration. If you are pairing two devices from different manufacturers, that readout is the fastest way to know whether you are heading for the artefact before you press play.
Two ways to install it, and an update story that differs between them
The Homebrew route is a single cask command:
brew install --cask pairpodsThe manual route is four steps: download the latest release from the releases page, double click the .zip to unzip it, move PairPods.app into your Applications folder, and launch it from there.
The distinction that matters after installation is about updates rather than about the files themselves. PairPods uses Sparkle to check for and notify you of new updates automatically, and the documentation states plainly that Homebrew does not provide update notifications. So if you install the cask, the app still tells you about updates itself, and you have two update paths in play rather than one. That is not necessarily a problem, but it is the kind of detail that shows up as a confusing double prompt later.
Building from source needs more. The prerequisites are macOS 15.0 Sequoia or later and Xcode 16.0 or later, which is a noticeably higher bar than the macOS 13.5 needed to run the app, and it is worth noting that the runtime requirement and the build requirement are different versions.
The clone step is the usual one:
git clone https://github.com/wozniakpawel/PairPods.gitAfter that you open PairPods.xcodeproj in Xcode and build and run the project. The repository also contains a PairPodsTests directory, a ScreenshotGenerator directory, a Sparkle directory for the update framework, a scripts directory and a Configs directory, plus a CHANGELOG.md and a CONTRIBUTING.md.
Where the menubar approach limits you
The menubar design has an obvious consequence: PairPods does one thing, and it does it while you are already looking at another application. There is no dock icon, no window with panels, and no scene to reopen. For an app whose job is to be toggled when a movie starts, that is the right tradeoff. For anything more involved, such as routing different sources to different devices, you are outside the feature list.
The device selection model is also blunt. Checkboxes decide which connected devices participate, and per-device volume sliders adjust levels. That is a shared stream with individual levels, not a mixing desk. If your goal is one device playing a call and another playing music at the same time on your Mac, this app is not that.
The compatibility claim is worth reading at its actual strength. The feature list says compatible with all macOS-supported Bluetooth audio devices, and the requirements list two or more compatible Bluetooth audio devices. Neither statement is a tested matrix, and the pitch-shifting limitation is the concrete reminder that the underlying Bluetooth audio stack on macOS imposes its own constraints that the app can report on but not fully control.
The auto-reconnect timeout, with options for Off, 5, 10 and 30 seconds, is the sort of setting that exists because the underlying behaviour is imperfect. Whether a given device reconnects quickly depends on the device, and the timeout lets you decide how long the app keeps waiting before it gives up on a participant.
Release pace and project maturity
The release history is short and recent. v0.5.1 was published on 2026-03-02, v0.6.0 on 2026-03-15 and v0.7.0 on 2026-03-22, and the last push to the repository was on 2026-09-05. The repository is not archived.
Those numbers say two things at once. The project is alive and recently touched, and it is still at version 0.7.x, which is an honest signal about how settled the behaviour is. An app that reconfigures the Bluetooth audio stack of macOS is exactly the kind of software where a small version number is informative: it depends on undocumented and shifting parts of the operating system, so regression risk in a new macOS release is real and the version number reflects that.
The licensing is MIT, with a LICENSE file in the repository, which is about the simplest case for an app you want to run personally. The funding links are GitHub Sponsors and a Buy Me a Coffee page, both pointing at the same author, and the project also has a website and a release workflow badge. For an application rather than a library, there is no dependency risk to audit, which is a genuine advantage over the many GUI toolkits that arrive with a transitive dependency tree.
Editorial conclusion
PairPods fits a macOS user with two or more Bluetooth headphones or speakers who wants one source of audio playing on all of them, and who is willing to check the sample rate readout before assuming the two devices will match. It does not fit a Linux or Windows user, a setup with only one output device, or anyone who needs the devices to behave as independent mixes rather than one shared stream. Before adopting it, confirm your Mac runs macOS 13.5 Ventura or later, check that both devices report the same native sample rate in the menu, and if you install the Homebrew cask rather than the manual build, remember that update notifications then come from the app itself through Sparkle and not from Homebrew.
Frequently asked questions
What does PairPods do and what does it need?
PairPods is a macOS menubar app that shares one audio stream between two or more Bluetooth devices at once. It requires macOS 13.5 Ventura or later, supports both Apple and Intel silicon, and needs two or more compatible Bluetooth audio devices.
How do I install PairPods on my Mac?
You can install the Homebrew cask with `brew install --cask pairpods`, or download the latest release from the releases page, unzip it, move PairPods.app into Applications and launch it. Building from source needs macOS 15.0 or later and Xcode 16.0 or later.
Why does the audio sound pitch-shifted on one of my Bluetooth devices?
The two devices likely have different native sample rates, such as 44,100 Hz against 48,000 Hz. PairPods shows each device's sample rate in the menu so you can spot the mismatch, and the documentation suggests using two devices of the same model or setting one as the master clock with the crown icon.
Does PairPods notify me about updates when installed with Homebrew?
Yes. The app uses Sparkle to check for and notify you of new updates automatically, and the documentation notes that Homebrew does not provide update notifications itself.
Can I control the volume of each shared device separately?
Yes. The feature list includes per-device volume adjustment alongside per-device toggles for choosing which devices participate, a battery level display where supported, and a configurable auto-reconnect timeout of Off, 5, 10 or 30 seconds.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/wozniakpawel-pairpods)Was this useful?