Skip to main content

Overview

Split tunneling allows you to exclude specific applications from the VPN tunnel. Excluded apps communicate with the internet as if Mullvad VPN were disconnected or not running, while all other apps remain protected by the VPN. This is useful for:
  • Local network services: Printers, file shares, media servers
  • Banking apps: Some require your real IP address
  • Performance-critical apps: Gaming, video calls that benefit from direct routing
  • Testing: Comparing behavior inside vs. outside the tunnel
Split tunneling is available on Windows, Linux, macOS, and Android. It is not available on iOS due to platform limitations.

How Split Tunneling Works

Normal VPN Connection (No Split Tunneling)

With Split Tunneling Enabled

Key Concepts

  • Excluded app: Traffic goes outside the VPN tunnel (uses your real IP)
  • Included app: Traffic goes inside the VPN tunnel (default for all apps)
  • Split tunneling state: Feature can be enabled/disabled globally

Platform Implementations

Split tunneling works differently on each platform:

Path-Based Exclusion

  • Exclude apps by executable path
  • Uses split tunnel driver (mullvad-split-tunnel.sys)
  • Excludes app and all child processes
Example:

Enabling Split Tunneling

Windows & macOS

Using the GUI

1

Open Split Tunneling Settings

Navigate to SettingsVPN settingsSplit tunneling
2

Enable Split Tunneling

Toggle Split tunneling to On
3

Add Applications

  • Click Add application
  • Browse to the application’s executable or bundle
  • Select the app to exclude
4

Manage Excluded Apps

  • View list of excluded applications
  • Remove apps by clicking the remove button
  • Apps take effect immediately (no reconnection needed)

Using the CLI (Windows)

Using the CLI (macOS)

Linux

Using the mullvad-exclude Helper

Using the CLI Directly

On Linux, use mullvad-exclude launcher for simplicity. It handles PID management automatically.

Android

Using the App

1

Open Settings

Tap ☰ menu → Settings
2

Open Split Tunneling

Navigate to Split tunneling
3

Enable and Select Apps

  • Toggle Split tunneling On
  • Tap Apps to see installed applications
  • Select apps to exclude from VPN
4

Apply Changes

Changes take effect immediately

DNS Behavior

DNS handling with split tunneling is complex:

Desktop (Windows, Linux, macOS)

*DNS requests originate from system DNS service (not the excluded app directly), so they’re sent through the tunnel.
Important: On desktop, excluded apps use the same DNS as normal apps (tunnel DNS) because DNS requests go through system services, not directly from applications.

Android

Android properly routes DNS for excluded apps outside the tunnel.

Process Inheritance

Parent-Child Relationships

Excluded status is inherited by child processes:
Implications:
  • Subprocesses automatically excluded
  • Browser tabs, helper processes included
  • Launched applications may inherit status

Process Tracking (Windows)

On Windows, you can see excluded processes:
Output:
  • No marker: Directly excluded (executable path matches)
  • subprocess: Inherited exclusion from parent

Limitations and Known Issues

General Limitations

Split tunneling has important limitations:
  1. DNS may leak: Desktop DNS requests might go through tunnel
  2. Process inheritance: Child processes automatically excluded
  3. IPC complications: Opening links/files may not behave as expected
  4. No iOS support: iOS does not allow split tunneling

macOS Specific

  • WebKit browsers: Safari, WebKit-based apps cannot be excluded
  • Full Disk Access required: Must grant permission in System Preferences
  • IPC limitations: Apps using multiple processes may not work correctly

Linux Specific

  • PID-based: Must manage process IDs manually
  • No persistent list: Excluded PIDs lost on reboot
  • Process lifetime: Exclusion removed when process exits

Android Specific

  • System apps: Some system apps cannot be excluded
  • Split VPN: OS may show “Split VPN” warning

Firewall Behavior

During connection transitions (connecting, error states), excluded apps:
  • Desktop: May have connectivity issues (firewall blocks non-tunnel traffic)
  • Android: Should maintain connectivity (VPN Service API)

Security Considerations

What Split Tunneling Exposes

Excluded apps:
  • Use your real IP address (not VPN IP)
  • Traffic is not encrypted by the VPN
  • Can be monitored by ISP, network administrators
  • May reveal your location and identity
  • DNS requests may still go through tunnel (desktop)

Use Cases to Avoid

Do NOT exclude:
  • Privacy-critical applications
  • Browsers for anonymous browsing
  • Torrent clients (use VPN for safety)
  • Apps accessing sensitive data

Safe Use Cases

Safe to exclude:
  • Local network applications (printer, NAS)
  • Banking apps requiring real IP
  • Gaming clients for better latency
  • Video conferencing for better quality
  • Speed test tools

Compatibility

Split tunneling works with: All features can be used simultaneously without conflicts.

Troubleshooting

App Still Using VPN

If excluded app appears to use VPN:
  1. Verify exclusion (Windows/macOS):
  2. Check process list:
  3. Restart application: Close and reopen excluded app
  4. Check correct path: Ensure exact executable path is excluded

App Not Working When Excluded

If excluded app has connectivity issues:
  1. Check if tunnel is connected: Ensure VPN is active
  2. Firewall blocking: During connection transitions, firewall may block
  3. Try including again: Remove from exclusion list
  4. Check DNS: App may require specific DNS configuration

Linux: mullvad-exclude Not Working

macOS: Permission Denied

If you get permission errors:
  1. Grant Full Disk Access:
    • Open System PreferencesSecurity & Privacy
    • Click Privacy tab
    • Select Full Disk Access
    • Add Mullvad VPN app
  2. Restart Mullvad VPN
  3. Try excluding app again

Windows: Driver Issues

Performance Impact

Split tunneling has minimal performance impact:
  • Excluded apps: Direct routing (no VPN overhead)
  • Normal apps: Standard VPN performance
  • System overhead: Negligible (path/PID filtering)

Best Practices

Application Selection

  1. Only exclude when necessary: Minimize excluded apps for privacy
  2. Document exclusions: Keep note of why each app is excluded
  3. Review regularly: Remove apps no longer needed
  4. Test functionality: Verify apps work as expected

Security Hygiene

Minimize exclusions:

Testing

Verify split tunneling works correctly:

Technical Details

Implementation

Windows: Windows Filtering Platform (WFP) driver
  • Driver file: mullvad-split-tunnel.sys
  • Service: mullvad-split-tunnel
  • Path-based filtering at kernel level
macOS: Packet Filter (PF) integration
  • Process-based rules
  • Requires Full Disk Access for process inspection
  • PID tracking in user space
Linux: cgroups v2 network controller
  • Cgroup path: /sys/fs/cgroup/mullvad-exclusions
  • PID-based exclusion
  • Fallback to v1 net_cls on older systems
Android: VPN Service API
  • disallowApp() method
  • Per-package exclusion
  • Native Android support

Environment Variables (Linux)

Further Reading