The question arrives with a data warning after a month of travel: did the VPN eat the allowance? A tunnel does add bytes, because every packet gains a new outer header and the connection carries control traffic of its own. What it does not do is double the file you downloaded or make the provider stop counting. The honest answer has two halves, one about overhead and one about how the numbers are produced.

The myth: the VPN multiplies your usage

The belief is that tunnelling roughly doubles traffic, so an allowance disappears twice as fast. That would require overhead approaching the payload size, which only happens with very small packets and chatty protocols. For ordinary browsing and streaming the extra bytes are a small fraction of the whole, and the tunnel is rarely the reason a month runs out early. An unstable tunnel is a different story, and that is where real multiplication lives.

The provider meters the outer connection regardless of what sits inside it, so a tunnel cannot make traffic free. It also cannot hide volume from the carrier, because the carrier is the party moving it.

What actually adds bytes

Encapsulation wraps each packet in a fresh header and authentication adds fields of its own, with the exact cost depending on the protocol and the address families in use. Small packets suffer most, because a fixed header is a larger share of a small total. A sustained transfer with full-size payloads pays proportionally less, which is why two people on the same VPN can see very different percentages. Packet size and MTU decide how much of the path is spent on headers rather than on content.

Keepalives and handshakes add traffic that exists only to hold the tunnel open, and they stay negligible until something breaks. An unstable link turns them into a real cost, because every reconnect repeats setup work and every dropped stream invites an application retry. The retry is the expensive part: an upload that restarts from zero can cost more than a week of keepalives.

Applications also send more than file contents. Requests, acknowledgements and protocol chatter existed before the tunnel and still count, so the difference between with and without is the wrapper rather than the whole conversation. The wrapper is the only part the VPN actually owns.

Why two counters never agree

Four places can report usage: the phone, the VPN app, the router and the carrier, and each measures a different interface over a different window. A virtual interface counter sees the inner traffic while the physical interface sees the outer packets, so the two differ by roughly the overhead you are trying to measure. Some attribution views overlap as well, which means adding every displayed number can double-count the same bytes. The billing cycle, the app session and the operating system reset also begin at different moments.

On Android the supported view of this is NetworkStatsManager, which reports per-interface and per-uid buckets over time windows. For anything involving money, trust the provider accounting over an app session total. The app is a convenience view and may include or exclude traffic depending on how it was implemented, and delayed reporting makes a later reading look wrong when nothing changed.

adb shell dumpsys netstats | grep -A3 "iface=wlan0"
adb shell dumpsys netstats detail | grep -i vpn

Read the interface name in each line before comparing anything. Two totals for different interfaces are not two measurements of the same thing, and treating them as one produces an overhead figure that is really an accounting difference.

Measure a repeatable task instead of a speed test

Pick one counter, one device, one network and one task, then repeat the task and compare the readings. A speed test is the wrong instrument because it deliberately consumes as much as it can, and its cost can exceed the everyday problem you were investigating. Pause backups and updates first, let background activity settle, and record the protocol and client version beside the number. A resumed upload is a different workload from a clean transfer, so comparing the two measures nothing useful.

If a direct comparison conflicts with your privacy requirements, compare two supported VPN configurations instead and state that limitation alongside the result. Record which configuration produced which number, so the comparison survives the next person who reads it.

Where to look when the bill and the app disagree

Check the window first, then the interface, then the layer. A mismatch that survives all three is a provider question rather than a client setting, and the answer usually names a reporting delay or a shared allowance.

Keep application update and mobile-data settings appropriate to the allowance, and schedule bulk transfers for a connection that can afford them. If you tether, check hotspot coverage separately, because the phone tunnel says nothing about how tethered traffic is routed or counted.

འབྲེལ་བའི་རྩོམ་ཡིག