Culvert VPN

WireGuard vs OpenVPN on a phone

WireGuard is quicker, lighter on battery and roams without reconnecting; OpenVPN can run over TCP 443 where UDP is filtered. Which wins on a phone.

Protocols and the technology · 4 min read · By Culvert VPN

On a phone, WireGuard is the better protocol for almost every connection: it handshakes in one round trip, uses less battery per megabyte, and follows your phone from Wi-Fi to mobile data without dropping. OpenVPN's advantage is reach. It can run over TCP on port 443, which gets through networks that filter UDP or block VPN ports, where WireGuard cannot connect at all. The right answer is not to pick one but to use WireGuard when the network allows it and something TCP-based when it does not.

The short comparison

WireGuardOpenVPN
TransportUDP onlyUDP or TCP
HandshakeOne round trip, 148-byte initiation packetTLS handshake plus OpenVPN's own control exchange
CryptographyFixed: Curve25519, ChaCha20-Poly1305, BLAKE2sNegotiated over TLS; usually AES-GCM
Code sizeA few thousand linesHundreds of thousands, counting the TLS library
RekeyRoughly every two minutes, automaticConfigurable, typically hourly
Network changeContinues on the new addressReconnects
Gets through UDP-filtering networksNoYes, over TCP port 443
Default tunnel MTU1420Varies; lower over TCP

Speed and battery

Two things make WireGuard quicker on a phone. The first is the handshake: one packet out, one back, and the tunnel is up. OpenVPN runs a full TLS handshake for its control channel and then its own key exchange on top, which is several round trips, so every reconnect costs more time and more radio use.

The second is per-packet work. ChaCha20-Poly1305 was chosen partly because it runs well on processors without dedicated AES hardware, which describes a lot of phones. OpenVPN's design also moves each packet through more layers, and in TCP mode the phone maintains acknowledgements for both the tunnel and everything inside it. None of this is dramatic on a fast connection with a nearby server, but over a day of intermittent use it shows up as battery.

Getting through difficult networks

This is OpenVPN's strength and the reason it still ships in many apps. Because it can run over TCP, and because its control channel is TLS, an OpenVPN connection on port 443 looks, to a network that filters by port, like an HTTPS session. A hotel or campus network that drops UDP entirely will still let it through. WireGuard has no TCP mode, so on that network it simply gets no reply.

The cost of TCP mode is real, though. Running one reliable protocol inside another causes stacked retransmission, where both layers try to recover the same lost packet and slow each other down, which the UDP vs TCP post explains. It should be the fallback, not the default.

Note that OpenVPN is not the only way to get a TLS-shaped tunnel on 443. A VPN can wrap WireGuard's own packets inside a TLS stream on TCP 443, keeping WireGuard's cryptography and roaming while gaining the ability to connect on a port-filtering network. The VPN over TLS post covers that design.

Reconnects and roaming

Phones change networks constantly: leaving the house, entering a lift, switching between Wi-Fi bands. WireGuard treats a packet arriving from a new address as the same client on a new address, so nothing is renegotiated and the tunnel usually survives without a visible gap. OpenVPN's session is tied to its connection; when the address changes it detects the loss, tears down and reconnects, which takes a few seconds and a fresh handshake each time. On a laptop that sits on one network all day the difference is invisible. On a phone it is the difference between a VPN you notice and one you forget about.

Configuration surface

OpenVPN's flexibility is also its main risk. It supports many ciphers, several authentication modes, compression options that have had real vulnerabilities, and a long list of directives that interact. A correct configuration is entirely secure; an incorrect one can be subtly weak while appearing to work. WireGuard has none of those choices. There is no cipher to select and no compression to enable, so the difference between a good setup and a bad one is limited to key management. For an app you install rather than configure yourself, that means less that can go wrong quietly.

What this means on Android

An app cannot rely on either protocol alone. WireGuard alone fails on any network that filters UDP. OpenVPN alone spends battery and latency on every connection to solve a problem most networks do not have. The sound design is a ladder: try WireGuard, give it a few seconds, and if it gets nothing back move to a TCP transport on 443. The protocols overview puts IKEv2 into the same picture.

Culvert VPN starts with WireGuard over UDP on several ports, moves to a TLS-wrapped transport on TCP port 443 when that goes silent, then to IKEv2, and shows you none of the names because the choice is automatic; it is on Google Play.

Questions people also ask

Is OpenVPN less secure than WireGuard?

No. Both are secure when configured well. OpenVPN's risk is the size of its configuration surface, not a weakness in the protocol; WireGuard removes that surface by having no options.

Why does OpenVPN use more battery?

Its packets need more processing per byte, its handshake is heavier, and in TCP mode the phone has to manage two layers of acknowledgements. Each is small on its own; together they add up over a day.

Which should I turn on in my VPN app?

If the app asks you, WireGuard, unless the network refuses it. A better app does not ask, and instead tries WireGuard first and falls back on its own.