Batbrief

Your phone already wrote down what drained the battery. Batbrief reads it back to you.

What it looks like

Batbrief: verdict 1080x1920
Batbrief: use vs standby 1080x1920
Batbrief: apps 1080x1920
Batbrief: live 1080x1920

Android can produce a bug report: a complete record of what the phone did, minute by minute, including every time the battery level moved and why. It is the file developers ask for when something is wrong. Everything needed to explain a bad night is already in it.

The tools that read it show you charts. Batbrief gives you a verdict.

What it tells you

Claim, proof, action

Every finding has three parts, and it is not shown unless it has all three:

Without the proof it is a horoscope. Without the action it is a chart.

Measured, not modelled

Android’s own per-app battery estimates come from a model, and on many phones the model’s components add up to a fraction of what the battery actually lost. Batbrief reads the coulomb counter instead — the hardware register that says how many milliamp-hours are left — so the headline figures are measured rather than guessed.

Where a number is an estimate it says so, and where the device’s model disagrees with the charge actually lost, Batbrief tells you its per-app figures are not worth much on that phone rather than ranking your apps by them.

Honest about the limits. The battery history lives in a ring buffer that fills up and drops its oldest entries — a truncated history looks exactly like a quiet night, so Batbrief says when it is looking at one. Wakelocks are attributed to whoever took them first, because that is all the history records. And system components at the top of the app ranking are a symptom of what other apps are doing, not a culprit; they are labelled as such, because restricting them is a mistake worth preventing.

Privacy is the reason for half the design

A bug report is the most identifying file your phone can produce. It contains your Wi-Fi network names, your accounts, the text of your notifications and a complete list of your apps.

So the file never leaves your phone. It reaches the app through the standard Android share sheet, is unpacked into the app’s own private cache, analysed there, and deleted when you close it. Reports the app captures itself stay on the phone until you delete them, or until automatic deletion removes the oldest, and are left out of Android’s cloud backup.

That is a promise about the report. It is not a promise that the app never goes online. Both builds ask for announcements from the developer (which you can turn off), and let you send the developer a report or a message, and prove an email address, if you choose to. The build from Google Play also carries Firebase crash reports and usage statistics, which are on by default, asked about once after the first run and switchable at any time in Settings, and Google Play billing for Pro. The build from F-Droid contains no Google libraries and no billing. The Privacy Policy sets out exactly what each one sends and what each permission is for.

How to feed it a report

  1. In Settings → Developer options, tap Bug report and choose Full report. (No developer options? Settings → About phone → tap Build number seven times.)
  2. Wait a couple of minutes. A notification arrives when it is ready.
  3. Tap Share, and pick Batbrief.

From a computer, adb bugreport report.zip produces the same file. A plain adb shell dumpsys batterystats dump works too, with fewer per-app figures in it — and that one no other tool will read at all.

Get it

Batbrief requires Android 8.0 or later.

Add this repository in F-Droid, or as a source in Obtainium, which reads the same repository:

https://releases.android.apps.gpm.name/repo

On a phone that already has F-Droid, this link adds it in one tap, fingerprint included. Otherwise check it against:

C983 7356 6EEC 235E CEFB 7D29 A582 6367 4D80 B432 8699 2BCB 7ACB 3AA4 3CA3 C41E

Updates then arrive on their own, verified against the repository signature.

Pick one and stay with it. Google Play re-signs the app with its own key, so Android treats the Play build and this one as two different apps that happen to share a name. Moving from one to the other means uninstalling first.