BT Audio Idle app icon: headphones with a Bluetooth symbol and a crescent moon

Your Bluetooth headphones disconnect themselves when your Mac goes quiet

BT Audio Idle lives in your macOS menu bar and listens for silence. When nothing has played for 10 minutes, it disconnects your Bluetooth headphones and speakers, so they stop draining battery on your desk and are free for your phone.

Version 1.1.0 · macOS 13 or later · DMG · free

The Devices tab in BT Audio Idle preferences: four paired audio devices, each with a monitoring switch and an optional custom idle timeout

Problem

Headphones stay connected to a Mac that stopped playing ages ago

The music stopped, the headphones are on your desk and you are in the kitchen. macOS won’t let go of them on its own: you have to turn Bluetooth off or disconnect them by hand.

Battery drained by silence

Connected headphones use power even when nothing is playing. By evening they need charging again.

Your phone can’t take over

While the Mac holds the connection, headphones often won’t pair up with your phone or tablet unless you switch them over manually.

Sound ends up in the wrong room

A forgotten speaker in another room is still the default output, so the next sound plays there.

Features

What BT Audio Idle does

Everything is set up in one window with four tabs: General, Devices, Apps and About.

Silence detection with a warning first

The app asks CoreAudio whether the default output device is actually playing anything. Once it goes quiet, a countdown starts, and right before disconnecting you get a notification with a Cancel button.

  • Idle timeout: how many minutes of silence trigger a disconnect (1–60, default 10).
  • Pre-disconnect grace: how many seconds of warning you get before the disconnect (0–120, default 30).
  • Snooze on cancel: how many minutes Cancel buys you (1–60, default 5).
  • Confirm playback after: short system sounds such as alerts don’t reset the countdown (0–15 s, default 6).
  • Reconnect cooldown: a device that reconnects right after being dropped isn’t immediately dropped again (0–300 s, default 60).

Settings per device

The list shows every paired Bluetooth audio device and whether it is connected right now. You can exclude any of them from monitoring or give it its own idle timeout instead of the global one.

  • The Monitor switch decides whether the app touches that device at all.
  • Custom timeout sets a separate time for one device, say 20 minutes for the kitchen speaker.
  • With several devices connected, the countdown uses the shortest of their timeouts.

App whitelist

Zoom or Teams calls have long quiet stretches, and your headphones should stay put. Add those apps to the whitelist: while any of them is running, the countdown doesn’t start.

  • Pick apps from the ones currently running (Add running app…).
  • If a whitelisted app launches during the countdown, the disconnect is called off.

Sleep, launch at login and logs

The app reacts when your Mac sleeps and can start at login. Everything it does goes into a log file.

  • Pause timer when system sleeps: the countdown stops while the Mac sleeps and starts over on wake (on by default).
  • Disconnect immediately on system sleep: disconnects devices the moment the Mac goes to sleep.
  • Launch at login: starts the app at login via SMAppService.
  • Log at ~/Library/Logs/BTAudioIdleDisconnect.log, rotated at 1 MB.

How it works

Four steps, then forget about it

  1. Install

    Download the DMG and drag the app into Applications. On first launch, right-click it and choose Open.

  2. Allow notifications

    Without them the app still disconnects, but you won’t get the warning with its Cancel button.

  3. Set times and devices

    Open Preferences… from the menu bar icon and choose the idle timeout, devices and whitelisted apps.

  4. Listen as usual

    While music plays, nothing happens. When it stops, a countdown appears next to the icon, followed by the warning and the disconnect.

What the app does, and when
Something is playingNo countdown.
It goes quietThe countdown starts and the menu bar shows the time left, e.g. 9:42.
Time is upA notification appears and the icon counts down in seconds.
You click CancelThe disconnect is pushed back by the Snooze on cancel time.
The warning runs outMonitored devices are disconnected.
Mac sleeps / wakesThe countdown stops (or devices are disconnected, if you chose that) and starts over on wake.

The menu bar menu

The pre-disconnect notification (text from the app) Title: “Disconnecting Bluetooth audio”
Body: “Studio Headphones will be disconnected in 30s. Tap Cancel to keep connected.”
Button: Cancel

Install

Download the app or build it yourself

Ready-made DMG

  1. Download the latest version from GitHub Releases.
  2. Open the DMG and drag BT Audio Idle.app into Applications.
  3. On first launch, right-click the app and choose Open. It is ad-hoc signed, so Gatekeeper will ask.
  4. Allow notifications and, if you like, turn on Launch at login.

Requirements: macOS 13 or later and a paired Bluetooth audio device.

From source

You need Xcode 15+ or Swift 5.9+. The script builds a release binary, assembles the .app bundle and ad-hoc signs it.

git clone https://github.com/jash90/bt-audio-idle-disconnect.git
cd bt-audio-idle-disconnect
./scripts/build-app.sh
mv "build/BT Audio Idle.app" /Applications/
open "/Applications/BT Audio Idle.app"
Tech stack and files
  • Swift 5.9 · SwiftPM
  • AppKit (NSStatusItem)
  • SwiftUI
  • CoreAudio
  • IOBluetooth
  • UserNotifications
  • ServiceManagement

Settings: ~/Library/Application Support/BTAudioIdleDisconnect/settings.json. Log: ~/Library/Logs/BTAudioIdleDisconnect.log. ./scripts/build-dmg.sh builds the DMG.

Good to know

  • Not on the App Store. Disconnecting relies on the legacy IOBluetooth API, which the App Store sandbox doesn’t allow, so the app is distributed directly.
  • Default output only. An app that plays straight to a non-default device can slip past detection.
  • The whitelist only checks whether an app is running. It can’t tell whether that app is actually playing audio.
  • Auto-reconnect. Some devices reconnect on their own. They are dropped again after the next quiet period, no sooner than the Reconnect cooldown.