macOS doesn't ship with one. So I built it. Native Swift, Core Audio Taps, dual real-time spectrum analyzer. No virtual driver. No Electron. No paywall.
"macOS doesn't have a system-wide parametric EQ.Built at 04:57 in Bavaria · Listening to Opera by Ballarak
So I built one in a day."
Other system EQs install a virtual audio device — a kernel-adjacent shim that hijacks your output. iQualize doesn't. It uses CATap, Apple's native system audio tap introduced in macOS 14.2. It exists because the alternative was a hassle to install, tiny and fiddly to use, half paywalled — and then a crash took it down anyway.
Install a kernel extension or audio driver. You don't notice it — until you do.
Apple's own system audio tap, used the way Apple intended.
Lives in your menu bar. No system extensions, no audio device changes. Launch it and it's running. Quit it and it's gone without a trace.
Drag band nodes across the frequency response. Add up to 31 parametric bands anywhere from 20 Hz to 20 kHz. The spectrum shows you what's happening, pre and post.
Spotify, YouTube, Final Cut, system sounds — everything through the same curve via Core Audio Taps. One EQ for your entire Mac.
Per-band frequency, gain, and bandwidth — accurate biquad response curves rendered from Audio EQ Cookbook formulas. Q or Octave display, your call.
2048-point Hann-windowed FFT via Accelerate vDSP, log-frequency binned, 60 fps double-buffered. Watch what you're doing.
Edit a built-in and it forks — never overwrites the original. Star favorites to pin them to the top of the picker; switch from the menu bar or the EQ window.
Search and import community headphone/IEM profiles straight from the OPRA database. Also accepts AutoEQ ParametricEQ.txt files — and presets are plain-JSON .iqpreset in and out, with batch import.
Pin a preset to an output device and it's recalled automatically whenever that device becomes the active output — including at launch. Studio curve on the DAC, loudness on the AirPods.
One-time install from Settings → General. Status, presets, bypass, gain — all drivable from Shortcuts, launchd jobs, or a keyboard launcher. Not running? The CLI launches it.
AUPeakLimiter on the output stage prevents clipping at 0 dBFS. Boost without fear.
+ buttons either side of the EQ — a new band copies its neighbor. Right-click for "Add Suggested Band": finds the largest frequency gap and drops one in. Move Left/Right from the same menu.
Shared-memory ring buffer between the real-time IOProc and AVAudioEngine. Only changed parameters are written to the audio unit. Slider drags coalesce into single undo entries.
Per-channel gain applied in the render callback. Centered by default, snap-to-center with a double-click reset.
Tap ownership lives in a separate helper process, so Apple Continuity keeps working — AirPods switch between your Mac and iPhone mid-playback like iQualize isn't even there.
Presets submenu with live checkmarks, Bypass EQ (⌘B), pin/unpin for the current output device, in-app Help. Option-click the icon to jump straight to the EQ window.
The tap lives in a small helper process; the EQ lives in the app. A shared-memory ring buffer in between keeps the audio thread lock-free — no glitches on slider drags.
Apps render audio. CATap reads the post-mix stream inside a helper process — iQualizeCapture — whose IOProc writes into a shared-memory ring buffer. The main app pulls from it and does the actual work: input gain, parametric EQ, output gain, peak limiter, out to your device.
Why two processes? A process that both holds an active tap and renders to the same output device gets treated as non-preemptible by coreaudiod — which silently breaks AirPods Continuity handoff. Splitting tap ownership from rendering keeps that path free. And if the helper ever dies, the app stops cleanly instead of leaving audio broken.
Audio is captured at the tap's native sample rate; AVAudioEngine's output node converts to whatever the device needs, so playback stays correct across device switches.
Grab the latest release, open the disk image, drag iQualize into Applications. That's it.
Releases on GitHubCurious what changed? Read the changelog →
Swift Package Manager. No Xcode project. One script.
Requirements: macOS 14.2+ (Core Audio Taps API) · System Audio Recording permission · Apple Silicon or Intel.