Skip to content

bahmetpalanci/mic-mute

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MicMute Logo

MicMute

One-click microphone mute/unmute for macOS menu bar

macOS 11+ MIT License Swift 5.5+ 79 KB Zero Dependencies Homebrew

MicMute - One-click microphone mute for macOS


Why MicMute?

Ever been in a Zoom call and couldn't find the mute button fast enough? MicMute lives in your macOS menu bar and lets you mute/unmute your microphone with a single click. No more fumbling through app windows.

  • Instant toggle — Left-click the icon to mute/unmute. No menus, no delays.
  • Visual feedback — Icon changes between 🎤 and 🔇 so you always know your mic status.
  • Works with all devices — Built-in mic, USB mics, Bluetooth headsets (AirPods, etc.) — all muted at hardware level via CoreAudio.
  • Mutes ALL inputs — Every physical input device is silenced simultaneously. No audio leaks through alternate mics.
  • Echo-free unmute — Gradual volume ramp on unmute prevents echo/feedback in video calls (Teams, Zoom, etc.). Sound feedback plays before mic goes live.
  • Survives device changes — Plug in headphones or switch audio devices mid-call; mute state persists automatically.
  • Lightweight — Single Swift file compiled to a native macOS app. No Electron, no bloat.
  • Zero dependencies — Built with native macOS APIs (CoreAudio + AppKit). Nothing to install except the app itself.
  • Remembers volume — Restores your previous input volume when you unmute.
  • Auto-start — Optional login item to start automatically when you boot your Mac.
  • Privacy-first — Runs locally, no network access, no analytics, no data collection.

How It Works

MicMute - Microphone Active
MicMute - Microphone Muted

Action Result
Left-click Toggle microphone mute/unmute
Right-click Show quit menu

Installation

Install with Homebrew

The easiest way to install MicMute:

brew tap bahmetpalanci/tap
brew install mic-mute

Then run:

open $(brew --prefix)/opt/mic-mute/MicMute.app

Install from Source

git clone https://github.com/bahmetpalanci/mic-mute.git
cd mic-mute
bash build.sh
open MicMute.app

Auto-Start on Login

bash install.sh

Uninstall

# If installed with Homebrew
brew uninstall mic-mute

# If installed from source
bash uninstall.sh

Requirements

  • macOS 11 (Big Sur) or later
  • Xcode Command Line Tools (xcode-select --install)

Build from Source

MicMute is a single Swift file that compiles to a native macOS app:

# Clone
git clone https://github.com/bahmetpalanci/mic-mute.git
cd mic-mute

# Build (creates MicMute.app)
bash build.sh

# Run
open MicMute.app

The entire source code is in MicMute.swift — a single file.

Project Structure

mic-mute/
├── MicMute.swift          # Complete source code (single file)
├── build.sh               # Build script
├── install.sh             # Install as login item
├── uninstall.sh           # Remove login item
├── MicMute.app/           # Compiled app bundle
│   └── Contents/
│       ├── Info.plist
│       └── MacOS/MicMute
├── assets/                # Logo and screenshots
└── README.md

How It's Built

MicMute uses native macOS APIs:

  • CoreAudio HAL — Direct hardware-level mute via kAudioDevicePropertyMute and kAudioDevicePropertyVolumeScalar
  • Multi-device control — Enumerates all input devices via kAudioHardwarePropertyDevices and mutes every physical mic simultaneously
  • Virtual device filtering — Skips virtual and aggregate audio devices (e.g., app-created process taps) to avoid breaking other audio tools
  • Echo-free unmute — Gradual volume ramp (10% → 50% → 100% over 200ms) gives apps time to recalibrate echo cancellation. Feedback sound plays before mic activation.
  • Device change listener — Monitors kAudioHardwarePropertyDefaultInputDevice and re-applies mute state when devices are connected/disconnected
  • AppleScript fallback — Also sets system input volume via osascript as a belt-and-suspenders approach
  • NSStatusItem — Places the icon in the menu bar with SF Symbols (mic.fill / mic.slash.fill)
  • LaunchAgent — Auto-start on login via standard macOS mechanism

No frameworks beyond system libraries, no package managers, no build systems. Just swiftc.

FAQ

Does it work with all apps? Yes. MicMute mutes at the hardware level via CoreAudio, so it affects all applications — Zoom, Teams, Discord, FaceTime, and any other app that uses your microphone.
Does it work with Bluetooth headsets (AirPods)? Yes. MicMute uses CoreAudio hardware-level mute which works with all device types including Bluetooth. It applies both mute property and volume control to ensure compatibility across all device types.
Does it need microphone permission? No. MicMute doesn't access the microphone directly — it controls device properties through the CoreAudio HAL and system input volume through AppleScript.
What happens when I plug in headphones? MicMute detects device changes automatically. If you're muted, the mute state is re-applied to the new device. If you're unmuted, nothing changes.
Does it interfere with per-app audio tools? No. MicMute filters out virtual and aggregate audio devices, so it won't break audio taps or per-app volume controllers (like TeamsVolume).
Can I use a keyboard shortcut? Not built-in yet, but you can easily set one up with macOS Automator or Shortcuts by running: osascript -e 'set volume input volume 0' to mute and osascript -e 'set volume input volume 100' to unmute.
How do I stop it? Right-click the menu bar icon and select "Quit MicMute". To remove auto-start, run bash uninstall.sh.

Alternatives

App Size Price Open Source
MicMute 79 KB Free Yes
Mutify 15 MB $3.99 No
Mute Me 8 MB Free No
SoundSource 25 MB $39 No

Disclaimer

  • This software is provided as-is, without warranty of any kind. Use at your own risk.
  • MicMute is not affiliated with, endorsed by, or associated with Apple Inc., Microsoft, Zoom, or any other company.
  • MicMute controls audio device properties at the system level. While it has been tested with built-in microphones, USB microphones, and Bluetooth headsets (including AirPods Pro), behavior may vary depending on your specific hardware and macOS version.
  • Some professional audio interfaces may not support all mute methods. MicMute uses multiple fallback mechanisms (CoreAudio mute/volume, AppleScript) to maximize compatibility.
  • MicMute does not collect, transmit, or store any personal data. It has no network access.

Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

License

MIT — Use it however you want.


Built with Swift and native macOS CoreAudio APIs

About

One-click microphone mute/unmute for macOS menu bar. Lightweight (79KB), zero dependencies, built with Swift. Just click to toggle your mic.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors