A tiny notarized macOS menubar app that streams whatever's playing on your Mac to the browser — bit-perfect, including Safari and Firefox, where the web can't capture system audio at all. The way Zoom does it. Not a hack.
Browsers deliberately can't capture system audio.
getDisplayMedia is Chromium-desktop only, grabs tab
not system audio on macOS, and is often DSP-mangled. Safari and
Firefox drop the audio entirely. DRM streams read as silence.
Zoom, Webex and Teams don't work around the sandbox — their desktop clients are native apps using an OS audio API. SJAudioBridge does exactly that, then hands the audio to the browser over a WebSocket. The page just reads a socket, so it works everywhere, at full fidelity, DRM included.
/Applications, open it.capturing — <dBFS> · <N> blk/s.sj-audio injects the PCM into the same analysis pipeline every other source uses — so any sj-audio visualizer works with system audio for free.
import { createNativeBridgeSource } from
'https://cdn.jsdelivr.net/gh/jayvee6/sj-audio@v0.2.0/dist/sj-audio.esm.js';
const source = createNativeBridgeSource({ token }); // from the menubar
source.onFrame((f) => drawBars(f.magnitudesSmooth)); // 32 mel bands
await source.start();
It's a local audio tap — so trust is the whole point.
excludesCurrentProcessAudio).The cross-browser web audio capture + analysis library. Four other sources (mic, media element, display, file) need no helper at all.
A tiny, documented, cross-platform protocol: JSON hello → token auth → ready → binary Float32 PCM.
macOS shipped (ScreenCaptureKit). Windows next — a WASAPI-loopback helper speaking the same protocol unchanged.