Split tunneling means some traffic goes through the VPN and the rest doesn't. On Windows and Android nearly every provider offers it. On macOS the picture is patchier, and a lot of what's written about it online is out of date.
Every row below is checked against the provider's own documentation, linked at the bottom. Last verified 24 September 2026.
| Provider | On macOS | What you get |
|---|---|---|
| NordVPN | No | Their own feature page lists Android, Android TV and Windows. The Mac app has none, in either the App Store or the website version. The browser extension covers only the browser, not other apps. |
| ExpressVPN | Yes | In the version from ExpressVPN's website, on macOS 11 and later; the App Store version doesn't have it. Each app, IP or subnet is set to Only VPN or Bypass VPN, so it can include apps as well as exclude them. Needs its split-tunnel network extension. |
| Private Internet Access | Yes | Each app is set to Only VPN or Bypass VPN, with a default for all other apps, so it works both ways. Needs a system extension to be allowed. |
| Surfshark | Yes | Called Bypasser. Apps, websites and IPs. Exclude-only on macOS: the Route via VPN mode is Windows-only. Needs macOS 12 or later and a system extension. |
| Mullvad | Yes | Since app version 2024.4, on macOS 13 and later. Exclude-only, outgoing connections only, and it may ask for full-disk access so the daemon can track processes. |
| Windscribe | Yes | Both ways: Exclusive leaves chosen apps out, Inclusive sends only chosen apps through. Apps, IPs or hostnames. Needs its split-tunnel system extension. |
| Proton VPN | Experimental | Exclude-only on macOS, and their docs still call it experimental. Include mode — choosing which apps go into the tunnel — exists on Windows, Linux and Android but not here. Doesn't work reliably with Safari or other WebKit apps, and changes apply after you reconnect. |
Surfshark, Mullvad and Proton do it one way on macOS: your whole Mac joins the VPN, and you list apps to exclude from it. The tunnel is the default and exclusions are the exception.
That matters more than it sounds. Every app you didn't think about, including ones you open later, goes through another country by default. You're opting things out of a decision that's already been made for the whole machine.
The other model is the opposite: your Mac stays on its normal connection, and individual apps opt in. Nothing is tunneled unless you asked for it. ExpressVPN, PIA and Windscribe can be set up this way in their own apps. It's also how VPNonly works, and if its tunnel drops, the apps you picked lose internet access rather than silently falling back.
Every feature in that table only works with that company's own service. Surfshark's Bypasser doesn't help if you're on Mullvad. If you switch providers, or run two, or use a WireGuard server you host yourself, you start again.
A separate tool sits above all of them. VPNonly takes a WireGuard config from any provider — Mullvad, Proton, IVPN, AirVPN, your own server — or a NordVPN access token, and routes per app the same way regardless.
Tested end to end with VPNonly: NordVPN and Mullvad, exit address verified in both cases. Surfshark, Proton, IVPN and AirVPN all publish standard WireGuard configs, which is exactly what the import takes, but those rows come from their documentation rather than from a test on this Mac. We'll say which is which.
One difference you'll notice: VPNonly relaunches an app once when it moves it into the tunnel, because what it routes by is fixed when an app starts. Split tunneling built on Apple's Network Extension framework, which ExpressVPN and PIA use, can switch apps without that. Why VPNonly works this way.
Safari is hard to split-tunnel. WebKit hands its connections to separate system processes that macOS launches on its own, so they don't carry Safari's identity. Mullvad and Proton both document that their split tunneling doesn't work with Safari or other WebKit apps, VPNonly can't route them either and won't switch them on, and none of the providers above document Safari working. If you want a browser on a different exit IP, use Chrome, Firefox, Arc or Brave.
If something here is wrong or has changed, tell me and I'll fix it. These pages get out of date quickly, which is most of the reason the rest of the internet's versions are wrong.
The app’s exact privileged engine source is public and MIT licensed.