Disclosure up front: Purplelink publishes this site and sells other Mac apps, but none of them is a battery tool. No link on this page is an affiliate link. I ran every command below on my own Mac (macOS 27.2) on October 13, 2026. I read Apple's pages and each tool's own page the same day. I did not run the third-party tools. Where a page did not say something, I write "not stated" and do not guess.
About the redactions: Every serial number, device name and adapter name in the output below is replaced with XXXX. Your own output will show those values, so remove them before you paste it anywhere.
The short answer
Three built-in routes show battery numbers. System Settings shows health and a condition. System Information adds the cycle count. Terminal adds the rest: charge current, voltage, charger watts and time estimates. Terminal is also the only route that shows how fast the battery is charging or draining right now.
Temperature is the exception. System Information did not list it, and the battery record that Terminal reads had no temperature entry on my Mac. I found no built-in route to it. The tools table near the end names the apps whose own pages say they show it.
What each number means
These are the eight numbers this guide reads. Apple defines the first two on its own pages. The others are standard electrical units, and the sections below show where each one appears.
| Number | Unit | How to read it |
|---|---|---|
| Maximum capacity (health) | percent | How much charge the battery holds now compared with when it was new (Apple's page). Lower means more wear. |
| Cycle count | cycles | One cycle is using all of the battery's power, and that can be spread across several charges (Apple's page). Compare it with the limit for your model. |
| Design capacity | mAh | The charge the battery held when new. A milliamp-hour (mAh) is a unit of stored charge. |
| Voltage | mV | The electrical pressure of the battery. 11509 millivolts (mV) is 11.5 volts (V). It moves with charge level and load. |
| Current (amperage) | mA | How fast charge flows into or out of the battery. A reading of 1415 milliamps (mA) is 1.415 amps (A). |
| Power | W | Voltage times current. 11.5 V at 1.415 A is about 16.3 watts (W). |
| Charger watts | W | What the plugged-in source can supply. |
| Time remaining | minutes | The Mac's own estimate, until empty or until full. |
Route 1: the built-in windows
These two need no Terminal. I read Apple's pages for the steps and did not open the windows for this guide, so this section reports what Apple says and not what my screen showed.
- Open Battery Health. Choose Apple menu, System Settings, then Battery (Apple's page on Service Recommended). Find the line for Battery Health. It reads Normal or Service Recommended.
- Look for the maximum capacity. Apple defines Maximum Capacity as battery capacity relative to when the battery was new (Apple's page on Apple silicon Macs). Check whether your Battery Health view shows it. Terminal prints it for certain, as the next section shows.
- Find the cycle count. Hold the Option key and click the Apple menu. Choose System Information. Under Hardware, select Power. The cycle count sits under Battery Information (Apple's page on cycle count).
Neither window shows current, voltage or charger watts. Terminal does.
Route 2: Terminal
Open Terminal from Applications, then Utilities. Paste one command at a time. Each command below only reads. None needs sudo (the prefix that runs a command as administrator).
pmset: the quick status line
pmset is the Mac's power-management command. The -g batt option prints the battery status.
$ pmset -g batt
Now drawing from 'AC Power'
-InternalBattery-0 (id=XXXX) 57%; charging; (no estimate) present: true
The line gives the charge (57%), the state (charging) and the time estimate. It read "(no estimate)" here, so the Mac had no time to show. A second reading, taken after I changed chargers, looked like this:
$ pmset -g batt
Now drawing from 'AC Power'
-InternalBattery-0 (id=XXXX) 55%; charging; 3:18 remaining present: true
"3:18 remaining" means 3 hours and 18 minutes until full. The id number is replaced with XXXX.
system_profiler: health, cycle count and charger
system_profiler SPPowerDataType prints the same power report that System Information shows. The full report is long and includes your sleep settings and scheduled wake events. These two commands print only the battery and charger sections.
$ system_profiler SPPowerDataType | sed -n '/Battery Information:/,/Maximum Capacity/p'
Battery Information:
Model Information:
Serial Number: XXXX
Device Name: XXXX
Pack Lot Code: 0x0000
PCB Lot Code: 0x0000
Firmware Version: 0x00000b00
Hardware Revision: 0x0100
Cell Revision: 0x551d
Charge Information:
The battery’s charge is below the warning level: No
Fully Charged: No
Charging: Yes
State of Charge (%): 57
Health Information:
Cycle Count: 628
Condition: Normal
Maximum Capacity: 89%
Three lines matter. Cycle Count is 628. Condition is Normal. Maximum Capacity is 89%. Apple's table lists 1000 cycles for recent MacBook Air models, so look up your own row. The Serial Number and Device Name lines are redacted.
$ system_profiler SPPowerDataType | sed -n '/AC Charger Information:/,/Charging:/p'
AC Charger Information:
Connected: Yes
ID: 0x000a
Wattage (W): 8
Family: XXXX
Charging: Yes
The charger section reports Wattage (W): 8. That is the most the plugged-in source could supply. After I switched chargers, the same command reported this:
$ system_profiler SPPowerDataType | sed -n '/AC Charger Information:/,/Charging:/p'
AC Charger Information:
Connected: Yes
ID: 0x7003
Wattage (W): 30
Family: XXXX
Serial Number: XXXX
Name: XXXX
Manufacturer: Apple Inc.
Hardware Version: 1.0
Firmware Version: 1030054
Charging: Yes
The wattage is now 30. The Serial Number and Name lines belong to the charger, and I replaced both with XXXX.
ioreg: current, voltage and capacity in detail
ioreg (the I/O Registry Explorer) lists the hardware the Mac knows about and each device's properties. The -r option shows the subtree for a match. The -n option matches by name. The battery's name is AppleSmartBattery. The full output runs to about 65 lines, and several contain serial numbers and device names. This command keeps only the lines that matter:
ioreg -rn AppleSmartBattery | grep -E '"(CycleCount|Voltage|Amperage|InstantAmperage|TimeRemaining|AvgTimeToEmpty|ExternalConnected|IsCharging|MaxCapacity|CurrentCapacity|AdapterDetails|BatteryData)" ='
| "TimeRemaining" = 65535
| "AvgTimeToEmpty" = 87
| "AdapterDetails" = {"IsWireless"=No,"AdapterID"=10,"AdapterVoltage"=5000,"FamilyCode"=XXXX,"AdapterPowerTier"=1,"Watts"=8,"UsbHvcHvcIndex"=255,"Current"=1500,"PMUConfiguration"=1500,"UsbHvcMenu"=()}
| "ExternalConnected" = Yes
| "Voltage" = 11509
| "MaxCapacity" = 100
| "CurrentCapacity" = 57
| "CycleCount" = 628
| "BatteryData" = {"CurrentCapacity"=57,"AppleRawMaxCapacity"=3798,"AppleRawCurrentCapacity"=2078,"AbsoluteCapacity"=0,"AvgTimeToEmpty"=87,"DesignCapacity"=4629,"NominalChargeCapacity"=3925,"FullChargeCapacity"=3798,"MaxCapacity"=100,"FullyCharged"=0,"RemainingCapacity"=2078,"BatteryPower"=18446744073709535331,"TrueRemainingCapacity"=0}
| "InstantAmperage" = 18446744073709550201
| "Amperage" = 18446744073709550201
| "IsCharging" = Yes
The leading | characters are part of the real output. In the AdapterDetails line, the adapter's family code is replaced with XXXX. I cut the output to these lines. Nothing else was changed.
Read the ioreg fields
Apple does not document the registry keys. Each row below states what I could confirm from the output on my Mac, and says so where I could not.
| Field | My reading | What it means and how I know |
|---|---|---|
| CycleCount | 628 | The cycle count. It matches the Cycle Count line from system_profiler. |
| BatteryData: DesignCapacity | 4629 | The capacity when new, in mAh. The name says so, and I found no Apple page that defines it. |
| BatteryData: AppleRawMaxCapacity | 3798 | In mAh. The name suggests the capacity the battery holds now. It did not give Apple's number (see the work-out section). |
| BatteryData: NominalChargeCapacity | 3925 | Not documented. It sits between the other two and gives 84.8% of design, which is not Apple's 89% either. |
| MaxCapacity | 100 | Apple does not document it. It reads 100 while Apple's Maximum Capacity is 89%, so it is not a health figure. |
| CurrentCapacity | 57 | The charge percent. It matches the 57% from pmset. |
| Voltage | 11509 | Battery voltage in millivolts (11.5 V). |
| Amperage and InstantAmperage | 18446744073709550201 | The current in milliamps, stored as a wrapped number (next section). Both lines held the same value here. |
| AdapterDetails: Watts | 8 | The charger's capability in watts. It matches the Wattage line from system_profiler. The same record lists AdapterVoltage 5000 mV and Current 1500 mA, which multiply to 7.5 W. |
| TimeRemaining | 65535 | A placeholder for no estimate. In the later reading it was 198 minutes, the same as the 3:18 that pmset showed. |
| AvgTimeToEmpty | 87 | Minutes until empty. In the later reading, during charging, it was 65535. |
| IsCharging | Yes | The Mac's charging flag. It stayed Yes while the battery was losing charge (see the section on reading both signs). |
Temperature does not appear. This command counts lines that contain a Temperature entry in the battery record:
$ ioreg -rn AppleSmartBattery | grep -c '"Temperature"'
0
The result is 0 on this Mac. Other Macs or macOS versions may differ, and I could not test them.
Turn the wrapped numbers into signed ones
The Amperage value of 18446744073709550201 is not 18 quintillion milliamps. The registry holds the current as an unsigned 64-bit number (a number with no minus sign), so a small negative value prints as a huge positive one. Two ways convert it. Bash (the shell, not the default zsh) does the arithmetic directly:
$ bash -c 'echo $((18446744073709550201))'
-1415
The same trick converts the BatteryPower field inside BatteryData:
$ bash -c 'echo $((18446744073709535331))'
-16285
That is minus 16285 milliwatts, or 16.3 W leaving the battery. The second method asks the registry for XML and extracts one key with plutil, a macOS tool for property lists. It saves a file that contains your serial number, so delete it when you finish.
ioreg -rn AppleSmartBattery -a > battery.plist
for k in Amperage InstantAmperage Voltage; do printf '%s ' $k; plutil -extract 0.$k raw battery.plist; done
rm battery.plist
Amperage -1415
InstantAmperage -1415
Voltage 11509
Use bash for the arithmetic. In my tests zsh (the default shell) cut the number short and printed a warning. The text tool awk subtracted 2 to the power of 64 and returned this wrong answer, because it stores large integers as decimals:
$ awk 'BEGIN { print 18446744073709550201 - 18446744073709551616 }'
-2048
The correct value is -1415.
Read the sign: charging and draining
The sign of Amperage tells you which way the charge flows. Two readings from the same Mac confirm it.
- Negative, battery losing charge. The first reading was -1415 mA with an 8 W source plugged in. The ioreg output gave a time to empty (
AvgTimeToEmpty87 minutes). However, pmset printed no estimate. Dividing the 2078 mAh remaining by 1415 mA gives 1.47 hours, or 88 minutes. - Positive, battery gaining charge. After I changed to a 30 W charger, the reading was +738 mA, with 3:18 remaining until full.
Here is the second reading, with the same command as before:
ioreg -rn AppleSmartBattery | grep -E '"(CycleCount|Voltage|Amperage|InstantAmperage|TimeRemaining|AvgTimeToEmpty|ExternalConnected|IsCharging|MaxCapacity|CurrentCapacity|AdapterDetails|BatteryData)" ='
| "TimeRemaining" = 198
| "AvgTimeToEmpty" = 65535
| "AdapterDetails" = {"SerialString"="XXXX","Watts"=30,"AdapterPowerTier"=2,"Model"="0x7003","PMUConfiguration"=1500,"Current"=1500,"Name"="XXXX","FamilyCode"=XXXX,"FwVersion"="01030054","AdapterVoltage"=20000,"UsbHvcMenu"=({"Index"=0,"MaxCurrent"=3000,"MaxVoltage"=5000},{"Index"=1,"MaxCurrent"=3000,"MaxVoltage"=9000},{"Index"=2,"MaxCurrent"=2000,"MaxVoltage"=15000},{"Index"=3,"MaxCurrent"=1500,"MaxVoltage"=20000}),"AdapterID"=28675,"UsbHvcHvcIndex"=3,"IsWireless"=No,"HwVersion"="1.0","Manufacturer"="Apple Inc."}
| "ExternalConnected" = Yes
| "Voltage" = 11845
| "MaxCapacity" = 100
| "CurrentCapacity" = 55
| "CycleCount" = 628
| "BatteryData" = {"CurrentCapacity"=55,"AppleRawMaxCapacity"=3849,"AppleRawCurrentCapacity"=2070,"AbsoluteCapacity"=0,"AvgTimeToEmpty"=65535,"DesignCapacity"=4629,"NominalChargeCapacity"=3976,"FullChargeCapacity"=3849,"MaxCapacity"=100,"FullyCharged"=0,"RemainingCapacity"=2070,"BatteryPower"=8741,"TrueRemainingCapacity"=0}
| "InstantAmperage" = 738
| "Amperage" = 738
| "IsCharging" = Yes
In this reading the battery received 11.845 V times 0.738 A, which is 8.74 W. The charger line shows AdapterVoltage 20000 mV and Current 1500 mA, which multiply to 30 W and match Watts 30. The SerialString and Name entries are redacted.
The first reading shows a trap. The Mac said "charging" (IsCharging Yes, and pmset printed "charging") while the battery lost charge. The likely cause is that the Mac used more than the 8 W source supplied, so the battery covered the difference. I did not measure the Mac's load, so treat that as an inference. If the amperage is negative while plugged in, try a charger with more watts.
Work out health, power and time yourself
Three divisions or multiplications turn the fields into numbers you can read. awk is a text tool built into macOS, and I use it here as a calculator.
Health from the capacity fields. Divide AppleRawMaxCapacity (3798) by DesignCapacity (4629), then multiply by 100:
$ awk 'BEGIN { printf "%.1f%%\n", 3798 / 4629 * 100 }'
82.0%
Power from voltage and current. Convert millivolts and milliamps to volts and amps, then multiply (11.509 V and 1.415 A):
$ awk 'BEGIN { printf "%.2f W\n", 11.509 * 1.415 }'
16.29 W
That matches the 16285 mW from the BatteryPower field.
Minutes to empty from charge and current. Divide the remaining charge (RemainingCapacity, 2078 mAh) by the current (1415 mA) and convert hours to minutes:
$ awk 'BEGIN { printf "%.0f minutes\n", 2078 / 1415 * 60 }'
88 minutes
The Mac's own estimate was 87 minutes. The two agree here because the current was steady.
Compare with Apple's figure. My division gave 82.0%, and system_profiler reported 89%. A second reading, taken after I changed chargers, used AppleRawMaxCapacity 3849:
$ awk 'BEGIN { printf "%.1f%%\n", 3798 / 4629 * 100 }'; awk 'BEGIN { printf "%.1f%%\n", 3849 / 4629 * 100 }'
82.0%
83.1%
I could not reproduce Apple's 89% from any pair of fields I tried. The next section explains why that matters.
What these numbers cannot tell you
One reading is a snapshot. Four limits apply to everything above.
- Apple's health figure uses Apple's method. Apple does not publish how it computes Maximum Capacity. I do not know which fields it uses, and my division did not match it (82.0% against 89%).
- The fields move. AppleRawMaxCapacity read 3798 in one reading and 3849 in the other, which is 82.0% and 83.1% of design. Voltage went from 11509 to 11845 mV and current changed sign. Take several readings before you trust one.
- Current and voltage depend on load. A busy Mac, a bright screen or a weak charger changes both. Compare readings under the same conditions.
- Third-party health figures can differ from Apple's. Apple's page says third-party apps that report battery health might not be accurate and says to rely on what macOS reports (Apple's page).
This page makes no claim about what your warranty or AppleCare plan covers. Apple's pages, listed in the next sections, say who is covered. Together, these limits mean the numbers help you notice a trend. They do not decide a repair.
Free and paid tools that show more
The commands above give you a snapshot. An app can show a live readout or keep a history. Each line below repeats what the product's own page says on October 13, 2026. I did not test any of them, and I earn nothing from these links.
| Tool | Price | What its page says |
|---|---|---|
| coconutBattery | Standard and Plus, both one-time. Price not stated on the page | Shows battery health for Mac, iPhone and iPad. Plus adds menu-bar details and a lifetime analyzer with temperature and voltage ranges. Version 4.4 (September 9, 2026). Not on the Mac App Store. |
| Stats | Free, MIT open source | A system monitor. Its feature list says battery level and a sensors module for temperature, voltage and power. Desktop widgets are off until you enable them. Version 3.0.21 (October 11, 2026). |
| iStat Menus | Paid. Price not shown in the page text I read. Also on Setapp at $9.99 a month | A menu-bar monitor with a battery section that gives "detailed info on your battery's current state". Version 7.5 (September 14, 2026). Needs macOS 13 or later. |
| AlDente | Free tier. Pro shown as 11.49 EUR a year or 23.99 EUR for life | Its main job is a charge limit. The Pro Stats feature lists maximum capacity, temperature and system load. Mac App Store listing for AlDente: not stated. |
| Battery Monitor X | Free. In-app purchases not checked | The listing names capacity against design capacity, cycle count, temperature, charging power and adapter wattage. Version 1.18 (September 9, 2026). |
| Better Battery 2 | Free Standard edition. Pro is an in-app purchase | The listing names charge cycles, health, age, temperature and electrical values. Pro adds history. Version 2.11 (August 13, 2026). |
I make one more option, BatteryMeter. It is a free menu-bar item that shows the charge, an arrow for charging or draining, and the battery's power in watts. It makes no network connection. It is my own product, so weigh that when you compare it with the table above.
I also tested whether a sandboxed app can read this data. The App Sandbox (Apple's restriction on what an app can touch) is required for Mac App Store apps. A test app with only the App Sandbox entitlement read the cycle count, voltage and amperage on this Mac. I do not know how the two Mac App Store apps above read their data.
When to replace the battery, according to Apple
This section states only what Apple's own pages say. I read all three on October 13, 2026.
- The 80% design point. A normal battery is designed to retain up to 80% of its original capacity at its maximum cycle count under normal conditions (Apple's page on Apple silicon Macs).
- The cycle limit depends on the model. Apple's table lists 1000 for recent MacBook Air and MacBook Pro models and 500 or 300 for older ones. Apple says to replace the battery at the maximum cycle count for best performance. You can keep using it past the limit, with shorter battery life (Apple's page on cycle count). My Mac shows 628 cycles, and the table lists 1000 for recent MacBook Air models.
- Service Recommended. The label means the battery holds less charge than when new or is not working normally. Apple says you can safely keep using the Mac, and that you can get service if the lower capacity affects you (Apple's page).
- Coverage. Apple says its one-year warranty includes replacement for a defective battery, and that an AppleCare plan replaces a battery that retains less than 80 percent of its original capacity. Read the page for the exact terms (same page).
The pages I read set no replace-at percent for Maximum Capacity. They give the 80% design point, the model's cycle limit and the AppleCare condition above. Use Apple's own Battery Health condition and your model's cycle limit, not a number from the commands above.
Frequently asked
How do I see my Mac battery cycle count?
Hold the Option key, click the Apple menu and choose System Information. Under Hardware, select Power. The cycle count is listed under Health Information. In Terminal, run system_profiler SPPowerDataType and look for Cycle Count. On my Mac it read 628, and Apple's table lists 1000 as the limit for recent MacBook Air models.
Why is the amperage on my Mac negative?
On the Mac I tested, a negative Amperage meant the battery was losing charge and a positive one meant it was gaining charge. The negative reading came with a time-to-empty estimate and the positive reading came with a time-to-full estimate. A Mac can read negative while plugged in if the charger supplies less than the Mac uses. Mine did on an 8 W source.
Why does Terminal give a different health number than System Settings?
Apple's Maximum Capacity figure uses a method Apple does not publish. On my Mac, system_profiler reported 89%. Dividing AppleRawMaxCapacity by DesignCapacity gave 82.0% in one reading and 83.1% in another. Trust Apple's figure for service decisions and treat your own division as a rough check.
Do I need an app to see battery voltage and charger watts?
No. Voltage comes from ioreg -rn AppleSmartBattery, and the charger's wattage comes from system_profiler SPPowerDataType or from the AdapterDetails line in the same ioreg output. An app is useful only if you want a live readout in the menu bar or a saved history.
Related guides
- Free disk space in the Mac menu bar (2026): another readout you can keep in view, with the Terminal command behind it.
- Why is System Data so big on my Mac?: more read-only Terminal commands, with real output from the same Mac.
- All guides.