I ship a 0.91 MB media player client called RKMovies. The reason it is that small is not some trick. It is because it does not ship ad networks, tracking, or a backend that phones home. I keep getting asked why I bothered. This post is the answer: ad-supported players cost real money and real battery, and the part nobody budgets for is data.
What the research says
There is a paper from the ACM Web Conference 2024 ("Uncovering the Hidden Data Costs of Mobile YouTube Video Ads", LUMS Lahore) that measured over 46,000 ads and found two things that surprised me.
First, ads account for 13.2% of total data if you skip every ad, and up to 28% if you watch them. That is not the video. That is overhead.
Second, the player wastes the main video buffer. When a mid-roll ad starts, the player discards the buffered main-video content to prioritize the ad, then re-downloads the main video after the ad ends. So you pay twice for the same megabytes. The paper calls this "skip-loss" and "mid-roll buffer loss," and it says the ad-data proportion jumps by 4.7x once you count the wasted main-video re-downloads.
On a 2 GB monthly plan, these hidden waste streams eat roughly 6.7% of it on average, per the same study.
The battery side
A 2020 LCTES paper (Heitmann et al., using the Brave browser) found blocking ads could cut mobile page-load energy by up to 50% on some sites. The reason is simple: an ad script runs on the CPU after the page loads, and rendering video ads costs more than the page that carries them. If your phone is decoding two video streams (the ad and, sometimes, the main video), the decoder stays busy longer.
Ad blocking also drops the data cost: the ad bytes and their trackers never reach the phone. That is the same idea behind the battery numbers above, viewed from the carrier instead of the battery.
What this means for picking a player
If you watch on mobile data, the player choice is a data decision, not just a comfort decision. Three things to look for:
- No ad layer in the app. If the player itself injects ads, every video you open carries the ad overhead above, whether you want it or not.
- No tracking or analytics. Every analytics call is mobile data that never reaches the video. Ad-supported players ship analytics SDKs that run in the background.
- Small binary and no account. A small binary means nothing extra to download, and no account means no login payload on every open.
This is the entire reason I built RKMovies the way I did: it plays your own files and streams with no ads, no tracking, no account. The Android APK page and the Windows installer page are where you get it. I am the developer, and I will not pretend this post is neutral research; it is a build diary with numbers.
If you mostly watch on Wi-Fi, the data math matters less. The comfort of not having ads between your episodes still holds, and the battery line is real on long sessions. But if you are on a mobile plan, the 6.7% figure is the one to keep in mind.
Disclosure: I am the developer of RKMovies. The links point to my own product.
Top comments (0)