Your Mac's battery keeps a diary
Updated 23 August 2026 · every number below was read from this machine and cross-checked against a second source before it went on the page. Who measures this.
Inside the battery controller sit fifteen counters that have been running since the cells were manufactured: total hours, the hottest and coldest it has ever been, the largest current it ever pushed. macOS shows none of them, and neither does any battery app we know of.
The command
ioreg -rn AppleSmartBattery -a | plutil -extract 0.BatteryData.LifetimeData xml1 -o - - |
Read it with -a and plutil, not with plain
ioreg. The formatted output prints negative values as unsigned
wraparound: the same key that shows as 18446744073709543540 comes back
as -8076 once you ask for the property list.
What the counters mean
| Key | What it holds | How sure |
|---|---|---|
| TotalOperatingTime | Hours since the cells were made. Keeps counting while the Mac is off. | Verified, see below |
| MaximumTemperature MinimumTemperature | The hottest and coldest the pack has been. Whole degrees Celsius: this pack reads 43 and 3. | Scale inferred, see below |
| MaximumChargeCurrent MaximumDischargeCurrent | Largest current in and out, in mA. Discharge is negative. | Verified against plutil |
| MaximumPackVoltage MinimumPackVoltage | Voltage extremes across the pack, in mV | Scale matches live readings |
| AverageTemperature | A running average across the pack's life. Tenths of a degree: 237 here, so 23.7 °C. | Different scale to the two above |
| TimeAtHighSoc | 112 bytes, 28 counters that sum to the lifetime hours | Buckets verified, labels not |
| CycleCountLastQmax | Cycle count when the gauge last recalibrated its full-charge estimate | Name is self-describing |
The temperature keys do not share a scale, which is worth knowing before you quote one. On this pack the maximum reads 43 and the minimum 3, which are sensible as whole degrees and absurd as tenths. The average reads 237, which is absurd as whole degrees and sensible as tenths. Apple documents neither, so both readings here are inferences from what the numbers can plausibly mean.
The date is not a number
Elsewhere in the same block sits ManufactureDate, and on this machine
it reads 56290649911603. That is not a timestamp anyone can decode
as one. Write those bytes out little-endian and they spell six ASCII characters:
311023. The pack was made on 31 October 2023.
The field macOS calls DateOfFirstUse on this Mac is zero.
The counter is not measuring what its name says
Two checks, both on this machine. From the manufacturing stamp of 31 October 2023 to
now is 24 664 hours. TotalOperatingTime reads 24 801,
which is 100.6% of that. So the counter has been running since the cells left the
factory, not since you started using the Mac.
The second check makes it plainer. This Mac was first set up on 18 July 2024, which is 18 387 hours ago. The counter is 6 414 hours ahead of that, or 267 days. It counted the months the battery spent in a warehouse and every hour the lid has been shut since. It is a clock, not an odometer.
The histogram that adds up
TimeAtHighSoc is 112 bytes, which unpacks into 28 unsigned 32-bit
counters. Their sum on this machine is 24 802 against a lifetime of 24 801 hours,
one apart. Whatever the 28 buckets are counting, they are counting the same hours the
lifetime counter does, and the split between them is a record of where the pack has
spent its life.
What the buckets are labelled we do not know. The obvious guess is state of charge, the other candidate is temperature range, and the manufacturer documents such histograms for this family of gauges. Apple names neither, so we do not print a label we cannot support.
Questions people ask
Does a high operating time mean my battery is worn?
Not on its own. Wear tracks charge cycles and time at high charge and heat, and this counter includes every hour the Mac spent switched off. A machine that sat in a drawer for a year accumulates the same hours as one that was used daily.
Why does no app show these?
They sit one level deeper than the keys battery apps read, inside a nested
dictionary that plain ioreg output mangles. Some of them also mean
nothing without a second source to check against, which is a poor fit for a menu bar
readout.
Can I reset them?
No, and that is the point of them. They live in the battery controller, survive reinstalls, and are one of the few things in a used Mac that a seller cannot polish. Checking a used MacBook covers what else is worth reading before money changes hands.
My numbers look different from the ones here
They should. Every figure on this page describes one MacBook Pro made in October 2023. The point is the method, not the values.
Related: your battery's real health number · health against cycle count · checking a used MacBook · the other tools