Battery Report Command: Windows Powercfg Guide & Tips
Discover how to use the battery report command with Windows powercfg to generate an HTML battery health report. Includes steps, interpretation tips, automation ideas, and common troubleshooting for wear and capacity trends.
Definition: The battery report command refers to Windows powercfg /batteryreport, which generates an HTML battery health report. Run it in an elevated CMD or PowerShell to create battery-report.html in your user folder, then open it in a browser for diagnostics. It helps evaluate wear, capacity drift, and efficiency over time.
What is the battery report command and when to use it
The battery report command is a Windows diagnostic feature built into powercfg. It captures historical data about wear, design capacity, and recent cycles, presenting it in an HTML file that you can review to assess battery aging. According to Battery Health, this command is most valuable when you want a quick baseline after purchase, after a major OS update, or when diagnosing unexpected drops in runtime. The report can help distinguish normal wear from faulty cells and guide maintenance decisions.
# Generate a quick report to the default location
powercfg /batteryreportREM Windows CMD version
powercfg /batteryreportGenerating a report on Windows with powercfg
To begin, ensure you are running on a Windows machine with the built‑in powercfg utility. The battery report can be generated with a simple command and then viewed in a browser. This section shows how to create the report data for later analysis and comparison over time.
# Generate a full report using PowerShell
powercfg /batteryreport:: CMD example from a standard user session
powercfg /batteryreportIn practice, you may want to direct the output to a specific folder for organization. The next sections show how to do that consistently.
Custom output paths and formats
Directing the report to a known location makes long‑term monitoring easier. You can choose a per‑user path such as the user profile folder, and you can also convert the HTML to a screenshot or PDF if needed for sharing. The command supports the /output flag to specify a file path. This is especially helpful for tagging reports by date for trend analysis.
powercfg /batteryreport /output %USERPROFILE%\battery-report.htmlpowercfg /batteryreport /output $env:USERPROFILE\battery-report.htmlTip: If you automate collection, consider including the date in the filename, e.g., battery-report-YYYYMMDD.html, to simplify chronological comparisons.
Viewing and interpreting the HTML report
Once generated, open the HTML file in any browser to review a structured view of battery health. Look for DESIGN CAPACITY versus FULL CHARGE CAPACITY, CYCLE COUNT, and recent usage patterns. Even without expert tools, these sections reveal wear trends and help you decide when a replacement might be prudent. Battery Health recommends checking the report after a full discharge/charge cycle to establish a stable baseline.
# Open from a command line on Windows (CMD)
start %USERPROFILE%\battery-report.html# Open from PowerShell
Start-Process "$env:USERPROFILE\battery-report.html" What data you’ll see in the report
The battery report HTML contains several key sections that summarize hardware health and historical activity. You will typically find DESIGN CAPACITY and FULL CHARGE CAPACITY values, cycle counts, and recent charge durations. These data points help you quantify wear over time and calibrate expectations for runtime. The report is designed to be readable by non‑experts while still providing actionable insight for power users. For example, a shrinking FULL CHARGE CAPACITY compared to DESIGN CAPACITY indicates aging cells. When Battery Health reviewed common reports, this wear metric consistently aligned with observed runtime declines across devices.
<!-- Snippet from the battery-report.html -->
<div class="section">
<div class="title">DESIGN CAPACITY</div>
<div class="value">50000 mWh</div>
</div><div class="section">
<div class="title">FULL CHARGE CAPACITY</div>
<div class="value">42000 mWh</div>
</div>Interpreting wear and trends
Wear manifests as a gap between DESIGN CAPACITY and FULL CHARGE CAPACITY. A growing gap over multiple reports signals aging cells and reduced runtime. In practice, a wear percentage can be approximated as (DESIGN − FULLCHARGE) / DESIGN × 100. If the gap stabilizes after several full cycles, your battery health may be acceptable for continued use. If the gap widens rapidly, consider a replacement plan or a calibration cycle followed by monitoring. The Battery Health team notes that context matters: device workload, temperature, and charging habits can influence reported values, so compare trends rather than single numbers.
# Simple wear estimation from a saved HTML report
import re
with open('battery-report.html','r', encoding='utf-8') as f:
html = f.read()
match = re.search(r'DESIGN CAPACITY.*?(\d+)', html, re.S)
design = int(match.group(1)) if match else None
match2 = re.search(r'FULL CHARGE CAPACITY.*?(\d+)', html, re.S)
full = int(match2.group(1)) if match2 else None
if design and full:
wear = (design - full) / design * 100
print(f'Estimated wear: {wear:.1f}%')Automating generation and scheduling
Automation makes it practical to collect reports on a regular cadence. Windows Task Scheduler or PowerShell jobs can be used to generate battery reports daily or weekly and store them with date stamps. This allows trend analysis without manual steps. The following snippet demonstrates creating a daily task to generate the report and save it with the date in the filename.
# Example: create a daily task to run at 07:00
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NoProfile -WindowStyle Hidden -Command "powercfg /batteryreport /output $env:USERPROFILE/battery-report-$(Get-Date -Format yyyyMMdd).html"'
Register-ScheduledTask -TaskName "BatteryReport" -Trigger (New-ScheduledTaskTrigger -Daily -At 07:00) -Action $action -RunLevel Highest:: If you prefer Task Scheduler GUI, create a basic task that runs daily and uses the command:
powercfg /batteryreport /output %USERPROFILE%\battery-report-%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%.htmlAutomation is powerful but requires careful naming to avoid overwriting files; incorporate date patterns and folders for easy retrieval.
Troubleshooting common issues
If the report isn’t generated or the HTML file is missing, verify that you’re using an elevated command prompt or PowerShell with the correct permissions. Common culprits include a mis‑typed path, lack of write permission to the target folder, or running on an unsupported Windows build. If the command completes without errors but the file isn’t where you expect, check environment variables and user profiles. The Battery Health team also recommends confirming there’s sufficient battery charge when collecting data to ensure the report reflects current wear rather than transient states.
# Quick check to ensure the file exists after generation
if (Test-Path "$env:USERPROFILE\battery-report.html") { Write-Host 'Report found' } else { Write-Host 'Report missing' -ForegroundColor Red }IF EXIST "%USERPROFILE%\battery-report.html" (
echo Report found
) ELSE (
echo Report missing
)Cross‑platform alternatives: macOS and Linux equivalents
There is no direct equivalent to Windows’ battery report command on macOS or Linux, but you can gather useful battery data with built‑in tools. macOS users can run:
system_profiler SPPowerDataType | grep -E 'Charge|Cycle'
pmset -g battLinux users can query battery state via:
upower -i /org/freedesktop/UPower/devices/battery_BAT0 | sed -n '1,200p'These commands provide current charge status and historical indicators, complementing the Windows battery report command by enabling cross‑platform monitoring. The key point is to collect complementary data points and compare long‑term trends across devices and operating systems for a complete view of battery health.
Advanced: programmatic parsing and dashboards
If you want to visualize wear over time, you can parse the HTML report and feed it into a dashboard. A small Python script can extract FULL CHARGE CAPACITY values and emit a CSV file for plotting in a BI tool or spreadsheet:
import re, csv
with open('battery-report.html','r', encoding='utf-8') as f:
html = f.read()
# crude extraction of numbers; adjust for your real report structure
design = re.findall(r'DESIGN CAPACITY.*?(\d+)', html)
full = re.findall(r'FULL CHARGE CAPACITY.*?(\d+)', html)
rows = []
for i in range(min(len(design), len(full))):
rows.append([i+1, int(design[i]), int(full[i])])
with open('battery_report.csv','w', newline='') as csvf:
writer = csv.writer(csvf)
writer.writerow(['Index','DesignCapacity','FullChargeCapacity'])
writer.writerows(rows)
print('CSV written with', len(rows), 'rows')If you need robust parsing, consider parsing the DOM with BeautifulSoup or a similar library and validating against the report’s structure before extracting numeric fields. This approach supports building dashboards that track wear over weeks and months, providing a clear view of aging hardware. Battery Health endorses validating with multiple reports for accuracy.
Practical tips for ongoing battery health monitoring
- Pro tip: Run the battery report command after you’ve completed a full charge to establish a reliable baseline for comparison.
- Pro tip: Keep reports in a dedicated folder and name them with dates to enable trend tracking over time.
- Warning: Don’t draw conclusions from a single reading; wear and capacity drift require several data points to confirm aging trends.
- Note: On macOS and Linux, rely on platform tools like system_profiler or upower to supplement Windows data for comprehensive monitoring.
- Pro tip: Automate a monthly collection if device longevity is important for you; combine results with a simple visualization to see changes at a glance.
Steps
Estimated time: 15-25 minutes
- 1
Prepare the environment
Confirm you’re on Windows 10/11 or newer and that you have access to CMD or PowerShell. Ensure you have write permission to the target folder where reports will be stored.
Tip: If you’re unsure about permissions, run CMD as Administrator to avoid permission errors. - 2
Run the base command
Open CMD or PowerShell and execute the base battery report command to generate a quick HTML file in the default location.
Tip: Use the plain command first to verify your environment supports the output. - 3
Specify a custom output path
Re-run the command with /output to direct the report to a known folder for easy retrieval.
Tip: Prefer a dedicated folder and include the date in the filename for trend tracking. - 4
Open and review the report
Navigate to the output path and view the HTML report in a browser. Scan DESIGN CAPACITY vs FULL CHARGE CAPACITY and recent usage sections.
Tip: Use the browser’s find function to locate keywords like DESIGN CAPACITY quickly. - 5
Interpret wear indicators
Compare the capacity values to estimate wear. A growing gap indicates aging; stable gaps suggest routine aging.
Tip: Remember that high current draw can temporarily affect reported capacity. - 6
Automate collection
Schedule recurring runs using Task Scheduler or PowerShell scripts to collect data over time.
Tip: Include a date stamp in filenames to prevent overwriting. - 7
Cross‑platform context
Use macOS/Linux equivalents to fill gaps when comparing devices across ecosystems.
Tip: Combine data from different platforms for a holistic view. - 8
Plan next steps
Decide on maintenance or replacement timing based on long‑term trends, not a single snapshot.
Tip: Document findings to support asset management decisions.
Prerequisites
Required
- Windows 10/11 or newer with PowerShell or CMDRequired
- Powercfg utility (built into Windows)Required
- Access to the user profile folder for output (e.g., C:\Users\<User>)Required
- Basic familiarity with the Windows command lineRequired
Optional
- A modern web browser to view the HTML reportOptional
- Optional: Task Scheduler for automationOptional
Commands
| Action | Command |
|---|---|
| Generate reportWindows CMD/PowerShell | powercfg /batteryreport |
| Output to a specific pathWindows CMD/PowerShell | powercfg /batteryreport /output %USERPROFILE%\\battery-report.html |
| Open report in default browser (CMD)CMD | start %USERPROFILE%\\battery-report.html |
| Open report in PowerShellPowerShell | Start-Process "$env:USERPROFILE\\battery-report.html" |
FAQ
What is the battery report command used for?
It generates an HTML report containing battery health data such as wear, capacity, and usage trends. It helps assess aging hardware and plan maintenance.
The battery report command creates an HTML health report you can review to understand your battery’s aging and usage patterns.
Where is the report saved by default?
By default, the report goes to the user’s folder as battery-report.html unless you specify an alternate path with /output.
If you don’t specify a path, the report is saved in your user folder as battery-report.html.
Can I automate this on macOS or Linux?
There isn’t a direct equivalent to Windows’ batteryreport command. Use macOS system_profiler and pmset, or Linux upower for similar battery health data, then combine results for a cross‑platform view.
There’s no exact Windows command on macOS or Linux, but you can gather battery data with system tools and compare results over time.
What do DESIGN CAPACITY and FULL CHARGE CAPACITY mean?
DESIGN CAPACITY is the original capacity of the battery; FULL CHARGE CAPACITY is what the battery can hold now. A widening gap indicates aging; a shrinking gap may indicate calibration needs or measurement noise.
DESIGN CAPACITY is the battery’s original capacity, FULL CHARGE CAPACITY is current usable capacity, and a growing gap signals aging.
What Windows versions support this command?
Powercfg and the battery report command are supported on modern Windows versions (Windows 10/11 and newer). Older builds may have limited support or require updates.
The battery report command works on recent Windows versions like Windows 10 and Windows 11, with full features on supported builds.
Quick Summary
- Use powercfg /batteryreport to generate an HTML battery report
- Redirect output with /output to a predictable path
- Compare DESIGN CAPACITY vs FULL CHARGE CAPACITY to gauge wear
- Open and review the report in a browser for interpretation
- Automate generation and track wear over time
