Reading powercfg /batteryreport: capacity, cycles and real wear
How to read design capacity versus full charge capacity, spot a dying battery, and tell wear apart from a calibration problem.
- Build
- 26300.9457
- Edition
- Pro (26H2)
- Architecture
- x64
- Support
- Documentation (E1)
- Evidence
- E1Official documentation
- Verified
- 2026-10-29
- Page type
- Method
The short answer
Section titled “The short answer”powercfg /batteryreport writes an HTML file with the battery’s history. Three numbers matter:
- Design capacity — what the battery was built to hold.
- Full charge capacity — what it holds now, when “full”.
- Cycle count — how many charge cycles it has been through.
Wear = 1 − full charge / design. Under ~20% wear is normal for a used machine; over ~30% means the runtime you see is the runtime you get.
Generate and read it
Section titled “Generate and read it”powercfg /batteryreport /output "$env:TEMP\battery.html"Start-Process "$env:TEMP\battery.html"The report contains:
| Section | What to read |
|---|---|
| Installed batteries | design capacity, full charge capacity, cycle count |
| Recent usage | power state transitions, battery percentage |
| Battery usage | drain per session |
| Usage history | how the machine was used over weeks |
| Battery capacity history | full charge capacity over time — the wear trend |
| Battery life estimates | projected runtime at current drain |
The capacity history table is the honest one: a single reading can be off, a downward trend over months cannot.
Capacity vs calibration
Section titled “Capacity vs calibration”Two different things get called “the battery is dying”:
- Real wear — full charge capacity has genuinely dropped. Nothing fixes it but a new cell.
- Calibration drift — the fuel gauge’s estimate is wrong; the battery may shut down at 20% or report 100% for an hour.
Calibration is worth trying once: charge to 100%, discharge to shutdown, charge fully again. If the reported capacity then jumps, it was the gauge, not the cell.
Interpret the numbers
Section titled “Interpret the numbers”| Observation | Meaning |
|---|---|
| Full charge ≈ design, high cycles | healthy cell, normal ageing |
| Full charge far below design, low cycles | defective cell or heat damage |
| Capacity drops then recovers after calibration | gauge drift |
| Runtime collapses but capacity looks fine | high drain, not wear — check standby and throttling |
| Battery not detected at all | connector, firmware, or a dead pack |
# quick alternative when the HTML is overkillGet-CimInstance -Namespace root\wmi -ClassName BatteryStaticData | Select-Object DesignedCapacity,DeviceName,ManufactureName,SerialNumberGet-CimInstance -Namespace root\wmi -ClassName BatteryFullChargedCapacity | Select-Object FullChargedCapacityDesignedCapacity and FullChargedCapacity are in mWh; the ratio is your wear figure. Not all firmware exposes them.
Battery care that actually matters
Section titled “Battery care that actually matters”- Heat ages cells faster than cycling does. A laptop on a bed or in a bag runs hot.
- Staying at 100% for months is worse than cycling between 40–80%, if the firmware offers a charge limit.
- Deep discharges to 0% are not “good for the battery” on modern lithium packs.
- Fast charging is fine; heat during fast charging is what hurts.
Related
Section titled “Related”Lab boundary
Section titled “Lab boundary”E1. The report format and fields are Microsoft-documented. The lab’s virtual machines expose no battery, so no capacity or wear numbers are published.