Skip to content
VPNmine
SPEED

Does a VPN drain phone battery?

A modern phone running WireGuard typically loses a few percent of battery a day to the tunnel. OpenVPN costs more. What costs far more than either is a client reconnecting repeatedly on a weak signal, which is the usual explanation for dramatic battery complaints.

4 min read

Illustration of a low battery and a phone, joined by a dashed tunnel line on a dark grid.

Battery complaints about VPNs are common and the numbers people report vary wildly, from "I cannot tell" to "it halves my day". Both are accurate, because they are describing different failures.

Where the energy actually goes

Encryption. Almost nothing on a modern phone. ChaCha20-Poly1305 is designed to be fast in software, and a phone chip encrypts far more than a mobile connection can carry without noticing.

Keeping the radio awake. This is the real cost. Phones save power by letting the radio drop into deep idle, and returning from it is expensive. A tunnel sending a keepalive every twenty-five seconds prevents the deepest idle states more often than an otherwise idle phone would experience.

Reconnection. By far the largest, when it happens. Establishing a tunnel costs a handshake, a full radio wake and a burst of CPU. A client doing this every couple of minutes on a marginal signal is running the expensive part continuously.

The realistic figures

Setup Rough daily cost
WireGuard, stable connection 1 to 4 percent
OpenVPN, stable connection 3 to 8 percent
Any protocol, reconnection loop 20 percent and up

The gap between the first two rows is protocol overhead. The gap to the third is a fault, and it is the one worth diagnosing.

Diagnosing a reconnection loop

Check the client's connection log or its notification history. A tunnel that establishes several times an hour is looping.

Common causes:

  • Weak or fluctuating signal, where each cell handover drops a session-based protocol.
  • Battery optimisation suspending the app, so the system kills it and the tunnel restarts when you unlock the phone.
  • Carrier NAT timeouts with no keepalive, producing a dead tunnel that the client detects and rebuilds.
  • A distant or overloaded server that times out under load.

What to change

Use WireGuard if the client offers it. It reconnects statelessly, so a network change costs one packet rather than a full handshake. That removes the most common source of loops.

Turn on a keepalive. Counterintuitive — it sends more packets — but it prevents the far more expensive teardown and re-establishment cycle.

Exclude the client from battery optimisation. On Android, Settings, Apps, the app, Battery, Unrestricted. Combined with Always-on VPN this is the configuration that stops the system fighting the tunnel.

Pick a nearby server. Fewer timeouts, faster handshakes, less time with the radio active.

Check for two VPN-like apps. Android allows one active tunnel; an ad blocker implemented as a local VPN will displace your client repeatedly, and each displacement is a reconnection.

iOS specifics

iOS is stricter about background execution, and a VPN extension is granted latitude that ordinary apps are not, so it does not get suspended in the same way.

On-demand rules matter here. A rule that brings the tunnel up on every network change, on a phone moving between cells, produces more activity than one scoped to particular Wi-Fi networks. The iOS client exposes this as per-network behaviour, and narrowing it is worth doing if battery is a concern.

What is not worth doing

Turning the VPN off to save battery. On a healthy setup you are recovering two or three percent a day and giving up the protection entirely.

Switching protocols repeatedly. If WireGuard is available it is the right answer; there is no third option that costs less.

Blaming the tunnel for a phone that is old. Battery capacity declines, and a three-year-old phone loses charge faster at everything. Compare against a day with the VPN off before concluding.

The honest summary

On a modern phone with a good connection and a well-configured client, the cost is small enough to be within the noise of how much you used the screen that day. Anything dramatic is a symptom, not the expected price, and it is almost always fixable in the settings above.

Why the operating system's battery screen misleads here

Both Android and iOS attribute energy to the process that was running, and a VPN client is running whenever the tunnel is up. So a VPN often appears high in the list even when its actual contribution is small, because it is credited with being awake during work another app requested.

A better comparison is total screen-on and standby drain across two similar days, one with the tunnel and one without. That measures the difference you actually care about rather than an attribution.

Data usage, which is the other quiet cost

A keepalive every twenty-five seconds is roughly 100,000 packets a month, which is a few megabytes. Negligible on any normal plan and worth knowing about on a metered one.

Tunnel overhead adds a few percent to everything else you transfer, for the same reason it costs a few percent of throughput. On a tight data allowance that is real, and it is the one situation where turning the tunnel off for a large download is a defensible saving rather than a false economy.

Sources

  1. Android developers — power management restrictions
  2. Apple — Energy efficiency guide for iOS apps
  3. RFC 8439 — ChaCha20 and Poly1305

Try it on the network this was written from

VPNmine is a free no-logs VPN running its own WireGuard servers, with native apps for Windows, macOS, Android, iOS, Android TV and Apple TV. No ads, no card.

Get VPNmine