A VPN keeps disconnecting for one of a handful of reasons: the phone's battery manager is killing the app in the background, the device is switching between Wi-Fi and mobile data, the connection is idle and something along the path times it out, the network is throttling the protocol, or the server is overloaded. Each has a distinct symptom and a fix that takes a minute. Work through the list in order; most cases end at step one or two.

1. Battery optimization is killing the app (Android, some laptops)

The most common cause on Android, especially on Samsung, Xiaomi, Huawei, OnePlus and Oppo phones. The system sees a background app holding a connection and stops it to save power. Symptom: connected while you use the phone, disconnected when you pick it up after a while.

Fix: Settings → Apps → the VPN app → Battery → Unrestricted (or "Don't optimize"). On Xiaomi also enable Autostart. Then Settings → Network → VPN → gear icon next to the app → Always-on VPN, and Block connections without VPN if you want nothing to leak while it reconnects.

2. Switching between Wi-Fi and mobile data

Every switch is a brief network change, and the tunnel has to be rebuilt. Symptom: drops when you leave the house, arrive at the office, or walk between Wi-Fi zones. With a good protocol the reconnection takes under a second and you barely notice; with a slow one you see the "connecting" state.

Fix: WireGuard and VLESS reconnect quickly; OpenVPN does not. Switch protocol if the app allows it. On iPhone, on-demand rules keep the tunnel up across switches; on Android, Always-on VPN does the same. If a specific Wi-Fi network is the problem, VPN not working on Wi-Fi covers the network-side causes.

3. Idle timeout and NAT

Home routers and mobile carriers keep a table of active connections and drop entries that go quiet. A tunnel that sends nothing for a few minutes can be silently removed from that table, and the next packet has nowhere to go until the client notices. Symptom: fine while browsing, dead after the phone sat idle, reconnects when you open the app.

Fix: enable keepalive. In WireGuard configurations this is PersistentKeepalive = 25; most apps expose it as a setting or set it automatically on mobile. If the app has no such option, Always-on VPN on Android achieves a similar effect by reconnecting immediately.

4. The network throttles or interferes with the protocol

Some networks recognize VPN protocols and cut them periodically rather than block them outright. Symptom: connects, works for thirty seconds to a few minutes, drops, repeats; often only on one network.

Fix: switch to a protocol that looks like normal HTTPS, such as VLESS with Reality, which is what what is VLESS explains. If the app has automatic protocol selection, make sure it is on.

5. Overloaded or unstable server

Symptom: drops at any time of day, on any network, but only on one server; other servers in the same country are fine. Fix: pick another server, ideally one showing lower load on the server list. If a server repeatedly misbehaves, report it; it is probably known.

6. Weak or crowded Wi-Fi

The VPN gets blamed for what the Wi-Fi is doing. Symptom: drops coincide with poor signal, far from the router, on 2.4 GHz in a crowded building, or on a hotel network that limits each device. Fix: move closer, use 5 GHz, or switch to mobile data to confirm; if the drops stop, the Wi-Fi was the cause.

7. Another VPN, filter or antivirus

Two VPN apps, an ad blocker using the VPN slot, or a desktop security suite that inspects traffic can fight over the connection. Symptom: drops began after installing something. Fix: disable the other app; on desktop, add the VPN to the security suite's exceptions. On iPhone, only one VPN configuration can be active, and a content filter counts, as explained in what is VPN on iPhone settings.

8. MTU and IPv6

Packets that are too large for the network get dropped, and a mix of IPv6 outside the tunnel and IPv4 inside it can cause connections to stall and the app to give up. Symptom: connected, some sites load and others hang, then the app reconnects. Fix: lower the MTU to 1280 in the app or configuration; enable IPv6 inside the tunnel or disable it on the interface. The IPv6 leak test shows whether IPv6 is escaping.

Why a kill switch matters here

Every disconnection is a window in which traffic can fall back to the open connection. A kill switch blocks all traffic until the tunnel is back, so a flaky connection is an annoyance rather than a leak. Turn it on before troubleshooting, then fix the drops.

Checklist

  1. Battery: Unrestricted; Always-on VPN on Android.
  2. Protocol: WireGuard or VLESS; automatic selection on.
  3. Keepalive 25 seconds.
  4. Another server in the same country.
  5. Rule out Wi-Fi by testing on mobile data.
  6. Remove conflicting VPNs, filters, firewalls.
  7. MTU 1280; IPv6 inside the tunnel or off.
  8. Kill switch on throughout.

404 VPN's apps use keepalive on mobile, switch between VLESS and WireGuard automatically, show per-server load before you connect, and block traffic during reconnects with a kill switch. Details on the features page; get started here.