Android split tunneling lets you decide which apps use a VPN route and which apps continue using the ordinary network connection. This is useful when only selected services need an alternate route, while banking apps, local services, casting tools, or work applications should remain direct. It can also reduce unnecessary traffic through the VPN and make troubleshooting much easier because every app has an explicit routing choice.
However, split tunneling is not simply an on/off switch. Different Android clients use different names for the same idea, such as app-based routing, per-app proxying, bypass mode, include mode, or exclude mode. Some clients apply rules through an Android VPN service, while others depend on a local proxy, a system VPN profile, or a protocol core such as sing-box. The result depends on the selected mode, the app list, DNS handling, Android battery restrictions, and whether the application opens traffic through a browser or another companion process.
The safest way to configure Android split tunneling is to define the desired traffic scope first, change one routing setting at a time, and test the actual app workflow instead of relying only on the client’s “connected” status.
What Android Split Tunneling Actually Does
When an Android VPN client connects, it generally creates a virtual network interface. Applications send traffic toward that interface, and the client decides whether each connection should go through the selected proxy route or leave through the normal network. Split tunneling adds a decision layer based on the application that generated the traffic.
There are two common routing models. In an include model, only the apps you select are sent through the VPN. Everything else remains direct. In an exclude model, most apps use the VPN, but the applications you explicitly select bypass it. The names differ between clients, so do not assume that a setting called “bypass” means the same thing everywhere. Read the description and confirm the resulting behavior with a test application.
Application-based routing is different from domain-based routing. An app rule asks which application created the connection. A domain rule asks which destination name the connection is trying to reach. A single Android app may contact many domains for login, API requests, images, advertisements, analytics, updates, and push notifications. Therefore, selecting the main app may be easier than maintaining a long domain list, but it does not guarantee that every related service will behave identically.
There is another important distinction between app traffic and system traffic. Android may handle operating-system updates, captive-portal checks, push messaging, DNS resolution, and connectivity tests outside the exact app path you are observing. Some clients provide separate controls for DNS, local network access, IPv6, or system applications. If an app appears partly connected, these additional paths may be the reason.
Choose the Right Routing Mode Before Selecting Apps
Start by describing your intended result in one sentence. For example: “Only the video application and its browser login should use the VPN,” or “All applications should use the VPN except local payment and casting tools.” This sentence tells you whether to use include mode or exclude mode.
Include mode: route selected apps only
Include mode is usually the easiest choice when you have a small, known group of applications that need the alternate route. Select the target apps, save the setting, connect the client, and leave the rest of Android outside the VPN path. This reduces the chance that a local service is unexpectedly affected.
It is also easier to audit. If the selected application works through the VPN and an unselected application continues to use the ordinary connection, the result is close to the original goal. The limitation is that companion apps may not be selected automatically. A video application may use a separate browser for account authentication, and a social application may open media through a system viewer. If one part of the workflow fails, inspect the related app rather than immediately changing the entire routing mode.
Exclude mode: bypass specific apps
Exclude mode is suitable when most of your apps should use the VPN and only a few need a direct connection. It can be convenient for frequent travelers or users who want a consistent default route. The risk is that a newly installed application may inherit the VPN route without you noticing. Local discovery, printer access, payment verification, and enterprise security apps can be sensitive to that change.
Use exclude mode only after identifying which apps must remain direct. Some clients also offer an option for local network access. If you need to reach a local printer, router panel, smart television, or file server, enabling local network access may be necessary even when the application itself is included in the VPN route.
- ✅ Use include mode when only a clearly defined group of apps needs the VPN.
- ✅ Use exclude mode when the VPN should be the default for most applications.
- ✅ Keep a written note of selected apps so a later update does not change your intended scope.
- ❌ Do not switch between include and exclude mode while judging the same test result.
- ❌ Do not assume that selecting a browser also selects every app opened from that browser.
Before saving, check whether the client offers separate switches for “route system apps,” “allow LAN,” “bypass private networks,” or “use VPN for DNS.” These settings can alter the result without changing your application list. There is no universal best combination: the correct choice depends on whether your priority is local access, privacy, destination reachability, or a narrowly controlled app route.
Android Split Tunneling Setup: A Practical Sequence
First install a compatible Android client from a trusted source. VPNHT supports Windows, macOS, iOS, Android, and Linux, and the Android client can be obtained from the site’s download page. If you use a compatible third-party client instead, confirm that it supports the subscription format and protocol parameters provided by the service. A subscription link contains sensitive connection information; do not post it publicly or paste it into an unfamiliar conversion website.
After opening the client, import the subscription using the account panel or the subscription field provided by the application. Depending on the client, this may be a URL import, a QR-code import, or a manual profile operation. Refresh the profile after importing and verify that nodes or outbound entries appear. If the list is empty, the problem is usually the link, an expired account session, an unsupported format, or a client that cannot parse one of the supplied protocols.
- Choose a node or outbound. Select a route that matches the destination and connection type you intend to test. Shadowsocks, VMess, Trojan, VLESS, Hysteria2, TUIC, and WireGuard are different protocol families; compatibility and transport support depend on the client.
- Open the routing section. Look for application proxying, per-app VPN, split tunneling, app rules, or a similarly named menu. Avoid changing DNS, protocol, and routing settings at the same time.
- Select include or exclude mode. Decide whether the listed apps should use the VPN or bypass it. Read the client’s explanation because terminology is not consistent across applications.
- Choose the applications. Select the main target app and any companion application that is essential to its login, media, or sharing workflow.
- Review local-network options. Enable LAN access only if you need local devices or services. If you want strict separation, leave this option disabled unless the client’s documentation says otherwise.
- Connect and accept Android permission prompts. Android normally asks for permission to create a VPN connection. Confirm that the system VPN indicator appears, then wait for the client to finish establishing the route.
- Run a real test. Open the selected app, sign in, perform its main action, and then test an unselected app. Close and reopen the apps if they had existing connections before the rule was enabled.
Do not add every application during the first test. A small test set makes the result easier to interpret. Once the expected behavior is confirmed, add other applications gradually. If the client supports rule export or profile backup, save a copy after the configuration works, but handle that file as sensitive information because it may contain subscription or node details.
How to Test Whether App Rules Work
A successful connection indicator only proves that the client has started a VPN or proxy process. It does not prove that the intended application is using it. Test the app while the client is connected, then disconnect and repeat the same action for comparison. The test should include the operation that originally required selective routing: loading content, authenticating, sending a request, opening media, or maintaining a session.
Use at least one selected app and one unselected app. For the selected app, check whether the target page or service completes its normal workflow. For the unselected app, check whether local access and ordinary services still work. If possible, use the client’s connection log to identify whether the application generated a connection and which outbound handled it. Logs are more useful than guessing from a single page load.
Remember that applications can cache DNS records, login tokens, media, and open connections. A result may remain visible after you change the route even though new traffic is no longer following the same path. Force close the test app, reopen it, and repeat the operation. If Android does not allow a full force close from the client interface, use the system application settings or reboot the app session by signing out and back in.
| Test | Expected observation | If the result is wrong |
|---|---|---|
| Selected app | The app completes the destination-specific workflow through the chosen route | Check the active node, protocol support, DNS mode, and whether a companion app is missing |
| Unselected app | The app continues using the direct or bypass path | Confirm that include and exclude modes were not reversed |
| Local device | A printer, router, or casting device remains reachable when LAN access is intended | Review local-network permissions and private-network bypass settings |
| After reconnecting | The same app behavior remains after the VPN session is restarted | Check whether the client saved the profile and whether Android stopped the background service |
When testing privacy-sensitive traffic, avoid using a single IP-check result as proof of every application’s route. An IP-check page normally reports the route used by the browser, not necessarily the route used by another app. Instead, combine application-specific tests, client logs, and the routing configuration. A browser test can confirm browser behavior, but it cannot certify the path of a game, messenger, streaming client, or background service.
Battery Optimization and Background Operation
Android power management can pause a VPN client when the screen is off, the app stays in the background, or the system detects extended inactivity. This is especially noticeable with applications that maintain long-lived connections. The app may work immediately after connecting but fail after the phone sleeps, or notifications may arrive only after the client is opened again.
Open Android settings for the VPN client and review battery usage. Where the device provides an unrestricted, allow-in-background, or do-not-optimize option, apply the least restrictive setting required for stable operation. Manufacturer interfaces may use different names or add their own auto-start and background-cleanup controls. If the client has a persistent notification or always-on connection option, understand what it does before enabling it.
Do not disable every battery safeguard without a reason. A better approach is to protect the VPN client and the selected app that needs continuous connectivity, while leaving unrelated applications under normal power management. Also check whether Android is switching between Wi-Fi and mobile data. A network change can recreate the VPN interface and invalidate an existing app connection even when the rule itself remains correct.
- ✅ Allow the VPN client to run in the background when persistent routing is required.
- ✅ Recheck auto-start permissions after a phone-system update or manufacturer cleanup action.
- ✅ Test again after locking and unlocking the screen.
- ❌ Do not judge stability from a test performed only while the client is open on screen.
- ❌ Do not run two VPN applications simultaneously unless you fully understand which profile owns the Android VPN interface.
Troubleshoot Traffic That Ignores the Rule
If a selected app still uses the direct route, begin with the simplest possibilities. Confirm that the correct profile is active, that the desired node is selected, and that the routing mode was saved. Some clients keep separate settings for each profile, so changing a rule in one profile may not affect the profile currently connected.
Next, inspect whether the app is actually included. Application names can be similar, and a system may expose separate entries for a main app, a work-profile copy, a cloned app, or a beta version. Select the exact package shown by the client. If the app opens an external browser, document viewer, login helper, or media player, test that companion process independently.
If the selected app connects but specific content does not load, the issue may be incomplete destination coverage rather than an app-rule failure. Review DNS handling, IPv6 behavior, UDP support, and the protocol’s transport requirements. Hysteria2 and TUIC, for example, rely on QUIC or UDP characteristics, while other protocols may behave differently when UDP is unavailable. WireGuard also requires a client and configuration that correctly support its tunnel parameters. A protocol label alone does not guarantee that every transport or application pattern will work.
If an unselected app unexpectedly uses the VPN, check for global mode, system-wide proxy mode, always-on VPN, lockdown behavior, or a rule priority that overrides per-app selection. Some clients interpret an empty include list as “include all,” while others interpret it as “include none.” Read the client’s status page and add a deliberately simple test rule rather than relying on assumptions.
When nothing works, disconnect the client, close the affected app, reconnect, and test again. If the issue continues, refresh the subscription and try another compatible node. Keep the change small: do not replace the client, protocol, node, DNS mode, and app list all at once, or you will lose the ability to identify the cause. The new user guide can help confirm the basic import and connection sequence before you return to advanced routing rules.
A Safe Daily Configuration Pattern
For regular use, keep one profile for selective routing and another profile for a broader connection mode if your client supports multiple profiles. Give each profile a clear name that describes its purpose rather than the date or a node nickname. This prevents accidental use of a profile with the wrong app list.
Review the configuration after Android updates, client updates, subscription refreshes, and app replacements. An application update may preserve its package identity, but a cloned or work-profile installation can appear as a separate entry. A client update may also rename routing options or reset permissions. Record the intended behavior in plain language: which apps use the VPN, which apps bypass it, whether local devices are allowed, and whether background operation is required.
Choose routes based on the destination and workflow rather than a protocol name alone. VPNHT provides access to 110+ countries and 180+ lines, while the best choice still depends on your current network, destination region, server load, and whether the application requires persistent TCP or UDP communication. Keep one working configuration as a baseline, and change only one variable when comparing another route.
Finally, treat selective routing as a control mechanism, not a guarantee that every request from an app follows one identical path. Modern Android applications may use embedded browsers, content-delivery domains, push services, and background components. Clear rules, controlled tests, sensible battery permissions, and careful logs will usually reveal where the traffic is going and why it differs from your expectation.