Turn Bluetooth Absolute Volume on or off from a system tray icon — instead of editing the registry and rebooting every time.
Absolute Volume ties the Windows volume slider directly to your Bluetooth headphones' or speaker's internal volume. On many devices that means giant volume jumps between slider steps, a first step that's already too loud, or broken dual-knob control. The fix is to disable it — but Windows gives you no UI for it at all: the only switch is a registry value, and it only takes effect after the device reconnects. AbsVol turns it into one click.
- Works on Windows 10 and 11, for any Bluetooth audio device
- Tray icon shows the state — blue = Absolute Volume on, orange = disabled
- Apply now restarts the Bluetooth radio so the change takes effect without opening Settings
- Tiny (~150 KB), no runtime required, fully offline (no network, no data collection), open source
Launch the app and it sits in the notification area (look under the ⌃ overflow
flyout on Windows 11 and drag it onto the taskbar to pin it):
- Left-click the icon — toggle Absolute Volume
- Right-click — menu: Disable absolute volume, Apply now (restart Bluetooth), Skip UAC prompts (one-time setup), Exit
The registry value lives under HKLM, so writing it needs administrator rights.
By default each toggle shows one UAC prompt; the app itself runs unelevated.
The right-click menu has "Skip UAC prompts (one-time setup)". Choosing it
registers a Task Scheduler task (AbsVol Toggle, run with highest privileges)
after a single UAC prompt; from then on each toggle triggers that task and no
prompt appears. The same menu item removes the task and restores per-toggle
prompts.
This is a deliberate convenience-vs-security tradeoff: a registered highest-privileges task that an unelevated app can trigger is, by design, a way to change the setting without re-consenting each time. It's opt-in, clearly labelled, and fully reversible — leave it off if you'd rather approve each toggle. Nothing is set up unless you choose it.
Absolute Volume is controlled by a single registry value:
HKLM\SYSTEM\CurrentControlSet\Control\Bluetooth\Audio\AVRCP\CT
DisableAbsoluteVolume (DWORD) 0 = on (Windows default), 1 = disabled
AbsVol writes exactly that value — nothing else. No services, no drivers, no
network. Because the Bluetooth stack only reads it when a device connects, the
Apply now menu item bounces every Bluetooth radio off and on through the
WinRT Windows.Devices.Radios API so the reconnecting device picks up the
change immediately (your devices briefly disconnect).
The unelevated tray app performs the privileged write in one of two ways: by
relaunching itself elevated for a single --set (default, one UAC prompt), or —
if you opted into setup — by triggering the highest-privileges scheduled task,
whose action inverts the current value (--apply).
Rust with the MSVC toolchain is the supported build environment:
rustup default stable-x86_64-pc-windows-msvc
cargo build --release
The exe lands in target\release\absvol.exe. Copy it anywhere and/or make a
shortcut.
The
x86_64-pc-windows-gnutarget can't currently build thewindowscrate's raw-dylib import libraries with rustup's bundled binutils, so use the MSVC target (it needs the Visual Studio Build Tools "Desktop development with C++" workload installed).
Smart App Control: if SAC is enabled, Windows blocks locally-built unsigned executables, so both building and running this tool require SAC to be off.
MIT — see LICENSE.