ByteScope

Android Bugreport Analyzer

Drop a bugreport.zip and see what the phone was doing: a battery timeline with screen, wakelock and charging tracks, the apps and wakelocks that kept it awake, every ANR with the main thread on top, app crashes and tombstones, and the raw text with search. It runs in this tab, so a file full of personal data is never uploaded.

Your files never leave your browser — all processing is local.

Drop a bugreport.zip here or click to choose

A bugreport*.zip or the older .txt. It is read in this tab and never uploaded.

What this cannot tell you

  • The bugreport format changes between Android versions and phone makers. A section this tool does not recognise is shown as raw text, never guessed at.
  • The battery history only covers the window the device keeps in its buffer. Older events are no longer in the file.
  • The estimated power use (mAh) is Android's own estimate, not a measurement. Newer Android versions may not print it.
  • The wakeup reason explanations only cover a few common names. Vendor-specific names are shown as unknown.
  • Native crashes have no symbol files here, so you see addresses and modules, not function names.
  • A bugreport holds a lot of personal data: accounts, Wi-Fi names, locations and notification text. It is read in your browser and not uploaded, but think before you pass the file on.

The file is never sent anywhere. Only anonymous usage events leave the page.

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.

Frequently asked questions

How do I generate a bugreport?

On the phone: Settings → About phone, tap Build number seven times to unlock Developer options, then Developer options → Bug report → Full report. A notification appears when it is ready, usually after a minute or two, and you can share the zip to yourself. From a computer: adb bugreport bugreport.zip. Drop the resulting zip, or an old-style single .txt, onto this page.

Why do I not see any ANR traces?

ANR traces live in /data/anr, which is not readable by the shell user on a modern build. dumpstate itself has the permission, so a full bugreport normally carries them under FS/data/anr/ in the zip, which is where this page reads them, and the main file also has VM TRACES sections you can open under Raw sections. If the report has neither, the device did not include them — an old single-file .txt only has what was inlined — and only the drop box index in the main file remains, which lists the entries without their bodies.

Is the estimated power use (mAh) accurate?

No, and it does not claim to be. The numbers under Estimated power use are Android's own model of consumption per app, built from how long each one held the CPU, radio and screen, not a measurement at the battery. They are good for ranking apps against each other, not for absolute values, and newer Android releases may not print the section at all, in which case the ranking simply has no mAh list.

Is anything uploaded?

No. The zip is unpacked and parsed in a Web Worker inside this tab, the tables are built in your browser, and nothing is sent to a server. That matters for a bugreport more than for most files, because it contains account names, Wi-Fi names, locations and notification text. Close the tab and the report is gone.

Which Android versions are supported?

The format was checked against an Android 12 bugreport. The section layout, battery history grammar, ANR and tombstone formats come from AOSP code that has been stable for years, so other releases mostly work, but a manufacturer's build or a newer release can add or rename sections. Anything the page does not recognise is shown as raw text instead of being guessed, and the Raw sections tab always has the whole file.

Why does the battery history only go back a few days?

Android keeps battery history in a ring buffer of a fixed size — 4096 KB on the device checked. When the buffer fills, the oldest events are dropped to make room, so older history is not in the file and cannot be recovered. The header of the history section shows how much of the buffer was used.

Can it pull the bugreport straight from my phone?

Not yet. Generating the report on the phone and fetching it over WebUSB has not been tested on real hardware, so the page only accepts a file you already have. Generate it from Developer options or with adb bugreport, then drop the zip here.