Monitor VPN bandwidth on Mac
Track traffic flowing through your Mac's VPN interface specifically — to test throughput, debug leaks, or just see what's actually tunneled.
When you’re on a VPN, your physical interface (Wi-Fi or Ethernet) and your VPN interface (typically utun0, utun1, etc.) are both active. macOS’s built-in monitoring is usually showing you one or aggregating both, which is exactly the wrong thing when you’re trying to figure out whether your VPN is slow or whether something is leaking outside the tunnel.
Inspect the VPN interface directly
List your interfaces
ifconfig | grep -E ’^[a-z]’
You’ll see a list including en0 (Wi-Fi), en1 (Ethernet, if present), and utun0, utun1, etc. The utun interfaces are tunnel interfaces — your VPN is one of them. Find yours by toggling the VPN off and on and watching which utun number appears.
Live throughput on the VPN interface
netstat -ibn -I utun0
The Ibytes and Obytes columns are cumulative since the interface came up. Run it twice a second apart and subtract for live bytes/sec — or use a wrapper:
while true; do netstat -ibn -I utun0 | awk ‘NR==2{print $7, $10}’; sleep 1; done
That prints bytes in / bytes out every second. Subtract consecutive lines for per-second throughput.
iftop and nettop on the VPN interface
sudo iftop -i utun0 (Homebrew) shows per-flow throughput on a specific interface. nettop -i utun0 works similarly. Both are useful for confirming “yes, this app’s traffic is going through the tunnel.”
A menu bar monitor with interface filtering
For ongoing awareness, a menubar tool that lets you pick an interface is the cleanest. Beacon lets you choose which interface its Network readout tracks, so you can have it show only the VPN interface’s traffic.
- Install Beacon.
- Enable Network in Settings > Menu Bar.
- In Network settings, set the interface to your VPN (
utun0or whatever yours is). - The readout now reflects only VPN traffic. Toggle the VPN off and you'll see it drop to zero — useful confirmation it's actually doing something.
Spotting leaks
If you expect all traffic to go through the VPN, here’s a sanity check:
- Start a known transfer (a 1 GB download from a known site).
- Watch
netstat -ibn -I utun0andnetstat -ibn -I en0simultaneously in two terminal panes. - The bytes counter on the VPN interface should be climbing roughly in line with the download size.
- If the physical interface is also climbing at the same rate, you have a split-tunnel configuration (or a leak), and traffic is bypassing the VPN.
Some VPNs intentionally split-tunnel certain apps or destinations — check your VPN client’s settings before assuming a leak.
More Beacon tips
-
Better alternatives to Activity Monitor on Mac
Activity Monitor is fine for a one-off check, but it's a window you have to keep finding. Here are faster, ambient ways to see what your Mac is doing.
-
Is your Apple Silicon Mac thermal-throttling?
Apple Silicon throttles less than Intel, but it still throttles. Here's how to tell — and what it costs you when it happens.
-
Comparing Mac system monitors (iStat, MenuMeters, Beacon, etc.)
An honest look at the main menubar system monitors for macOS in 2026 — what each does well, what's frustrating, and how to pick.
-
See CPU usage in your Mac menubar
How to keep an always-visible CPU readout in your menu bar, without leaving Activity Monitor open in the corner of every Space.