Show Wi-Fi signal strength in your Mac menu bar

macOS shows Wi-Fi as three arcs. The real number is the signal strength in dBm (closer to 0 is stronger), which is what you want when you’re moving a router or finding the dead spot in the house. Option-clicking the Wi-Fi icon shows it once; this keeps it on screen.

Apple’s airport tool is gone and system_profiler takes over 10 seconds, so this recipe builds a tiny command with Apple’s own Wi-Fi framework that answers in a tenth of a second.

Recipe tested October 29, 2026 with Multimeter 1.1. Source: Script.

Preview: the Signal Bars face and two alternatives, with sample values like the ones this recipe returns.

What you need

  • Multimeter for macOS 13 or later, $19.99 once.
  • The direct download version of Multimeter from this site (the Script source isn’t in the Mac App Store version).
  • Apple’s command line tools for building the helper: run xcode-select --install if xcrun isn’t found.

Set it up

  1. Build the helper once. This writes a two-line Swift file, compiles it into ~/.local/bin/wifi-rssi and runs it:
    Terminal (once)
    mkdir -p ~/.local/bin && cat > /tmp/wifi-rssi.swift <<'EOF'
    import CoreWLAN
    if let wifi = CWWiFiClient.shared().interface() { print(wifi.rssiValue()) }
    EOF
    xcrun swiftc -O /tmp/wifi-rssi.swift -o ~/.local/bin/wifi-rssi && ~/.local/bin/wifi-rssi
  2. Add a Script meter with the command wifi-rssi (the folder is already on the meter’s PATH). Refresh every 5 seconds.
  3. Set the range to -90 to -30 and the unit to dBm. Alerts on Low values: warning at -70, critical at -80.

Multimeter settings

In Customize This Meter… (from the meter’s menu):

Settings for this meter
SettingValue
SourceScript
Commandwifi-rssi
Refresh every5 seconds
Range-90 to -30
UnitdBm
AlertsLow values: warning -70, critical -80
LabelWIFI
FaceSignal Bars, Sparkline or Arc Gauge

Tested: Built and run on October 29, 2026 on macOS 27: printed -48 in 0.12 seconds. The system_profiler approach took 13 seconds, past the limit.

Script meters need the direct download version of Multimeter from this site, which is the one on sale now. How commands run, the PATH they see and the 10 second limit are in the Script meters guide.

Limits

  • The helper reads the strength only, which needs no Location permission. Network names do, which is why it leaves them out.

Variations

Signal-to-noise and link speed

Change the print line to print(wifi.rssiValue() - wifi.noiseMeasurement()) for signal-to-noise in dB (above 25 is good), or print(wifi.transmitRate()) for the link rate in Mbps, and build it under another name.

Troubleshooting

What the meter says, why, and what to do
SymptomCauseFix
The script didn’t print a numberThe command failed or printed an error message instead.Run the exact command in Terminal. If it works there, check for tools that live outside the meter’s PATH and use their full path (which tool).
The script took longer than 10 secondsA slow network call. Multimeter stops scripts after 10 seconds.Keep the -m timeout on curl, and refresh less often.
Scripts need the version from multimeterapp.comThis copy of Multimeter came from the Mac App Store, which can’t run scripts.Use the direct download version, or run the command from cron or launchd and point a File meter at its output.
xcrun: error: invalid active developer pathThe command line tools aren’t installed.Run xcode-select --install, then build again.
Prints 0Wi-Fi is off or not connected.Connect to a network.

Questions

What is a good signal?

Around -30 to -55 dBm is excellent, -55 to -67 is fine for video calls, below -70 gets unreliable and -80 is about where connections drop.

Does this work in the Mac App Store version?

Script meters need the direct download version from multimeterapp.com, because the App Store sandbox doesn’t let apps run your commands. Web Address, File and Sent Value meters work in every version.

Related

Put it in your menu bar

$19.99 one-time. No subscription. Needs macOS 13 Ventura or later.