Your MacBook’s battery is not a dumb bag of chemistry. Inside the pack sits a small controller that does nothing but study the battery it lives with. It counts every charge cycle, tracks temperature and current continuously, and keeps a running estimate of how much capacity the cells have left to give. macOS never guesses about your battery. It asks that controller.
What you see day to day is the summary. The battery icon shows a percentage, and System Settings shows a one-word condition, which is what most people want most of the time. The full readout the controller keeps sits underneath in a registry any app can read. Here is what is in it.
The Gas Gauge
The idea of a battery that reports on itself is old and standardized. The Smart Battery Data Specification from 1998 defines the vocabulary that battery controllers still speak today. The commands it lists read like the spec sheet for a battery app. FullChargeCapacity for how much the battery holds now. DesignCapacity for what it held when new. CycleCount, Temperature, Voltage, Current, and RunTimeToEmpty for the live picture. Engineers call this chip the gas gauge, because its whole job is telling you how much is really in the tank.
On a Mac, the gauge surfaces through IOKit, the framework macOS uses to talk to hardware. Apple ships a public power sources interface for the summary view, and the full readout lives in the I/O Registry under the name AppleSmartBattery. You can see every property yourself in Terminal with one command from the ioreg tool that ships with macOS.
ioreg -rn AppleSmartBattery
That dump is the ground truth for everything below.
Health Is a Division, Not a Mystery
A lithium-ion battery loses capacity with every cycle of its life. That is not a defect. It is how the chemistry works, and it happens faster when the battery runs hot or sits at extremes of charge.
The gauge tracks this directly. It knows the pack’s design capacity, the milliamp hours it was built to hold. It continually re-learns the full charge capacity, the milliamp hours the pack can actually hold today. Battery health is simply the second number divided by the first. A battery built for 6,293 mAh that now tops out at 5,841 mAh is at 92.8 percent.
There is one trap in reading these numbers on modern Macs. On Apple Silicon machines the registry keys named CurrentCapacity and MaxCapacity no longer hold milliamp hours at all. They hold the state of charge as a percentage, so MaxCapacity is always 100. The real milliamp-hour figures moved to AppleRawCurrentCapacity and AppleRawMaxCapacity. Divide the wrong pair and a healthy battery reads as one percent. Any tool that reports Mac battery health has to know this, and you can verify it in the ioreg dump on any M-series Mac.
What a Cycle Actually Is
The other number the gauge guards is the cycle count, and it is more subtle than it looks. A cycle is not a charging session. Apple’s cycle count page defines it as using all of the battery’s power, however long that takes. Drain half the battery today, recharge it overnight, and drain half again tomorrow, and that is one cycle, not two.
The count matters because batteries are rated in cycles. Modern Mac notebooks are rated to retain up to 80 percent of their original capacity at 1,000 complete cycles. The cycle count is the odometer, and reading it next to the health percentage tells you whether your battery is aging on schedule or ahead of it.
macOS itself works to slow that odometer down. Battery health management, on by default in recent macOS versions, studies your battery’s temperature history and charging patterns and will hold peak charge below 100 percent when it predicts the top end would age the cells faster.
Why Any App Can Read This
None of these numbers is personal. The gauge knows your battery’s temperature, not your location or your name. That is why the AppleSmartBattery registry entry is readable from inside the App Sandbox with no entitlement and no permission prompt. The sandbox exists to wall apps off from your data and your hardware’s dangerous capabilities. Reading a cycle count crosses neither line, so a sandboxed Mac App Store app can show you everything the gauge knows without asking macOS for anything.
That makes a battery monitor one of the purest kinds of Mac utility. There is no account, no network call, and no permission dialog, because none is needed. The data was always there.
This is the approach Battkeep takes. It reads the gauge’s own numbers, divides the raw capacities the way the controller intends, and puts health, cycle count, temperature, and the rest one click from your menu bar.
Sources
-
SBS Implementers Forum. “Smart Battery Data Specification, Revision 1.1.” sbs-forum.org
-
Apple. “IOPowerSources.h.” developer.apple.com
-
Apple. “ioreg(8) man page.” keith.github.io/xcode-man-pages/ioreg.8.html
-
Apple. “Batteries. Why Lithium-ion?” apple.com
-
Apple. “Determine battery cycle count for Mac laptops.” support.apple.com
-
Apple. “About battery health management in Mac laptops.” support.apple.com
-
Apple. “App Sandbox.” developer.apple.com