My Battery

Fourteen months of charge cycles from my daily phone, pulled out of AccuBattery's SQLite database over adb because the app still has no export button. How I got it is written up here.

3212mAh Estimated capacity now down from 3435 mAh, 6.5% lost. 75.6% of design
863 Sessions logged 423 charge, 440 discharge
416 Days tracked 18 Jul 2025 to 7 Sept 2026
407mA Screen-on drain 119 mA with the screen off

Capacity over time

  • Measured while charging
  • Measured while discharging
240026002800300032003400360031952579Jul 25Oct 25Jan 26Apr 26Jul 26Sep 26
Median estimated full-charge capacity per month, from sessions of 40% or deeper. Design capacity is 4250 mAh.
View as table
MonthChargingDischarging% of designSessions
Jul 253446294081.1%22
Aug 253426281380.6%49
Sep 253406277280.1%46
Oct 253413263280.3%38
Nov 253357262279%42
Dec 253272272077%46
Jan 263296285477.6%53
Feb 263311267077.9%43
Mar 263301275477.7%52
Apr 263322271178.2%44
May 263271269577%61
Jun 263266279476.8%56
Jul 263214264875.6%60
Aug 263167271774.5%69
Sep 263195257975.2%12

Why the two lines disagree. Charging and discharging are separate measurements of the same cell, and they differ by around 18% here: 3212 mAh counted going in against 2639 mAh counted coming back out. Some of that gap is genuine charging loss, the rest is the kernel's current sensor being more accurate at a steady charging current than across the ragged draw of real use. AccuBattery's own headline figure comes from the charging side, which is why it asks you to charge to 100% to take a reading, and it is the blue line here that matches what the app shows.

What one full charge buys

Per full 0-100% chargeWorstTypicalBest
Screen-on time hours2.076.178.78
Time off the charger hours8.229.454.8
Time to charge minutes1389453

Typical is the median across 345 deep discharges and 348 deep charges, each scaled to a full 0-100% swing so sessions of different depth can be compared. Charging times are projections from partial charges; across the 265 charges that actually reached 99%, the observed spread was 45 to 135 minutes.

How I charge, and what it costs

  • Plugged in at
  • Unplugged at
01503000102030405060708090battery level, %
Every charge session of 5% or more, counted by the level it started and finished at.

This is close to the worst pattern for a lithium cell. Of 396 charges, 353 (89%) started below 20%, and 273 (69%) ran all the way to 100%. Deep discharges and long sits at a full charge are the two habits that age a cell fastest, and I have been doing both, nearly every day, for 14 months. The capacity line above is what that looks like.

When the phone goes on charge

06121823MonTueWedThuFriSatSun
0 10 charges started
Every charge session start, bucketed by local time. Hours run 0 to 23 across.

Where the screen time went

******264.1hBrave251.5hNova Launcher247.5hFacebook244.5hFacebook Lite235.4hWhatsApp191.4hYouTube59.5hGmail31.5hMessenger30.2hInstagram28.3hTelegram27.2h****** Lite19.9h
Hours in the foreground, top 12 apps, paired from AccuBattery's own foreground and background events.

What each app costs to run

******490 mAFacebook437 mAEverything else437 mAYouTube395 mAWhatsApp388 mAFacebook Lite369 mANova Launcher363 mABrave338 mA
Estimated current drawn per hour of foreground use, fitted across 345 deep discharges. Hover a bar for how long a full charge lasts on it.

Read these as a rate: ****** at 490 mA means about 490 mAh gone per hour it is on screen, so roughly 6.6 hours of it would flatten a full 3212 mAh charge. At the other end, Brave would last about 9.5 hours.

These are fitted, not measured. AccuBattery records how much charge each session used and which app was in front, but never the drain of one app on its own. So this solves for it: treat each discharge as screen-on mAh ~= sum of (hours in app x that app's rate) and find the set of non-negative rates that best fits all 345 sessions at once. The fit explains 76% of the variance between sessions (R² 0.758), which is decent but leaves room for everything this model ignores: screen brightness, signal strength, and background work. Apps under 40 hours of use are pooled into "everything else", because below that the fitted rate says more about noise than about the app.

Screen-on drain over time

340380420460408Jul 25Oct 25Jan 26Apr 26Jul 26Sep 26
Average current drawn with the screen on, per month, across deep discharges.

Screen-on drain has drifted from 390 mA to 408 mA, up about 5%. That is not the battery ageing: a worn cell holds less charge but does not make the phone draw more. It means the phone is doing more work per hour of screen time than it used to, from some mix of heavier apps, more background activity, and software that has grown since Android 15 landed. Combined with a smaller battery, it compounds: less charge to spend, spent faster.

How this page is built

AccuBattery keeps everything in /data/data/com.digibites.accubattery/databases/batterysaver, an ordinary SQLite file. adb root on a custom ROM is enough to read it, no Magisk and no wipe. A script reduces the 90 MB database to the 3.1 KB of aggregates this page renders, so nothing raw is committed to the repo.

Device
Xiaomi 2109119DI
Android
SDK 35, build AP4A.241205.013
App sessions parsed
507,620 across 274 packages
Deep sessions used
348 charges, 345 discharges
Charging
396 sessions over AC, median 2123 mA
Data generated
7 Sept 2026