About this tool
A bugreport is the diagnostic dump Android produces on request: the output of dumpsys for every system service, battery statistics with a history of what the phone was doing, recent ANR traces and tombstones, the logcat buffers and a copy of the device properties. It is what Android engineers ask for when an app keeps crashing or a phone drains overnight, and it is what Battery Historian reads — except that Battery Historian is a Go server you run in Docker. This page opens the same zip inside your browser: it unpacks the archive in a Web Worker, splits the main file into its sections, parses the battery history and wakelock tables, and lays the result out as tabs.
How to make one
On the phone, turn on Developer options (tap Build number seven times under About phone), then open Developer options → Bug report, pick the full report and wait for the notification; it can take a few minutes and the phone is slow meanwhile. From a computer with ADB, adb bugreport bugreport.zip saves the same archive. Old devices and some adb bugreport versions give a single .txt instead of a zip; both are accepted here. Pulling the report straight from the phone over WebUSB is not offered yet — generate it on the phone and drop the file.
Why you should not upload it to a site you do not know
A bugreport contains far more than battery numbers. Account names, Wi-Fi network names, the last known locations, the text of recent notifications, installed packages and parts of the logcat are all in it. Uploading that to a stranger's server to get a chart is a poor trade. Here the archive is unpacked and parsed in a Web Worker in this tab, nothing is sent anywhere, and closing the tab discards it. If you need to pass the report to a vendor or post it on an issue tracker, read through it first and think about what it reveals.
What each tab shows
Overview lists the device — model, manufacturer, Android release, build fingerprint, kernel, uptime and when the report was taken — the battery state at that moment, and a short anomaly summary: ANR, app crash and native crash counts, the top power users and the most frequent wakeup reasons, each linking to its tab. Battery timeline draws the charge level over time with one track per state the history actually contains: screen, charging, running, wake_lock, mobile radio, Wi-Fi, GPS, the top app and doze. It also lists the five steepest drops and which tracks were active during each. Power ranking has partial wakelocks by app, kernel wakelocks, wakeup reasons by count and, when the report includes it, Android's estimated power use in mAh per app. Crashes lists ANRs with the process, PID and reason, expanding to every thread with the main thread first and its first non-framework frame marked, plus lock waits of the form waiting to lock, held by thread N; app crashes with exception, message and stack; and tombstones with signal, fault address, abort message and backtrace. Raw sections shows the main file as a table of contents and virtual-scrolled text, with full-text search and a logcat filter by level, tag and PID. Every table exports as CSV, and the overview, rankings and crash list copy as JSON.
Honest limits
The bugreport format changes with the Android version and the manufacturer; the parsing here was checked against Android 12, and a section the page does not recognise is shown as plain text rather than guessed at. Battery history lives in a ring buffer of a fixed size — 4096 KB on the device checked — so once it is full the oldest events are dropped, and the timeline only covers what is left. Estimated power use in mAh is Android's own estimate, not a measurement, and newer releases may not print the section at all. Wakeup reasons are explained only for common names; a vendor-specific name is marked unknown. Native crashes are not symbolised, so a backtrace shows addresses and module names, not function names.