I walked out of my university research lab on May 1st with no idea what I was going to build. Eleven weeks later I was sitting in a rented Kia Niro EV with about 127,000 miles on it, plugged into the OBD port, looking at two numbers that didn’t agree.
Up to that point, essentially all of my diagnostic experience had been a multimeter and a race car harness. Reading a production EV’s battery data was new to me, and I assumed the car would just tell me the truth.
The car’s battery management system reported a state of health of 97%. When I cross-checked that against the car’s own energy counters, I got something closer to 89%.
Here’s the short version: EV battery SOH accuracy is not a solved problem, and the number your car reports is not a measurement you should treat as final. What follows is exactly what I read, exactly how I checked it, and exactly where my own numbers stop being trustworthy.
The car: 127,000 miles and 1,301 fast charges
It was a 2023 Kia Niro EV, second generation. A rental, so I can’t tell you anything about how it was treated. The car can, though.
Odometer: 204,000 km, about 127,000 miles. Total operating time: 14,460 hours. And the part that actually matters — 1,301 DC fast charges against 705 AC charges. Roughly two out of every three charging sessions in this car’s life were on a fast charger.
The cumulative energy counters read 46,038 kWh charged and 44,006 kWh discharged. Divide the discharged figure by the pack’s usable capacity and you land somewhere around 680 full-pack equivalents. Three years old, 127,000 miles, mostly DC fast charging. This car was almost certainly a taxi.
For what I was trying to do, that’s the ideal test subject. If a pack that’s been worked this hard still reads healthy, then either the pack really is fine, or the number is soft.
What “state of health” actually means (less than you’d hope)
The first problem with EV battery SOH accuracy is that there is nothing to be accurate against. There is no standard definition of SOH. Each manufacturer decides what it means, computes it its own way, and doesn’t publish the formula. Two cars from two brands both showing 95% are not making the same claim, and there is no way for you to convert between them.
On top of that, every pack ships with a buffer — capacity the car holds in reserve and doesn’t let you use. A buffer is good engineering. It also means a manufacturer can absorb early degradation into that reserve and keep reporting a high number while the usable capacity quietly moves.
I’m not accusing anyone of anything. I’m saying the number is a manufacturer’s summary of its own product, produced by a method nobody outside the company can inspect. That’s worth exactly as much trust as it sounds like.
For scale on what these numbers describe: the US Department of Energy notes that an EV battery can still hold at least 70% of its original capacity at the end of its automotive life. The whole useful range of this measurement is roughly 100% down to 70%. A few points of error eats a meaningful share of it.
The cross-check: the car keeps its own ledger
The good news is that a modern EV counts energy in and out of the pack continuously, and stores the running totals. Those counters are the most honest thing in the car — they’re arithmetic, not estimates. But before I could use them, I had to know whether they were drifting.
So I drove it for 72 minutes and watched the state of charge fall from 100% to 85%, logging everything.
Over that drive, the discharge energy counter went up by 15.0 kWh and the charge energy counter — that’s regenerative braking putting energy back — went up by 5.8 kWh. Net energy out of the pack: 9.2 kWh.
Separately, the register holding remaining energy in the pack fell by 8.93 kWh over the same window.
Two independent readings of the same event, agreeing to within 3%. That’s the result I actually cared about that day. It means the counters aren’t drifting, it means the remaining-energy figure is consistent with them, and it means I don’t have to integrate current myself and pile up my own error. This car has been keeping that ledger since it was new.

One thing I noticed while lining those up: the percentage on the dash isn’t the percentage the BMS is using. The display went 100% to 85% over that drive. The battery management system’s own internal state of charge went 95.5% to 82.5% across the same window. Neither is wrong exactly — the dash number is scaled for the driver — but it’s a small reminder that every number a car shows you has already been through a translation layer.
Once you trust the ledger, you can ask the real question: how much energy does this pack actually hold per point of state of charge, and how does that compare to a new one? That’s where 89% came from.
Where my own EV battery SOH accuracy check gets shaky
I can’t actually prove this pack is at 89%. Three things were wrong with my measurement, and you should know all of them.
- My state-of-charge window was only 15 points wide. The narrower the window, the more any small error gets multiplied.
- I never let the car sit still for 30 minutes or more. Without a rest, the pack voltage is still relaxing and every reading is contaminated by load.
- I started at 100%. Near the top of the charge, the voltage curve is almost flat, which is the worst possible place to infer capacity from voltage.
Run the capacity estimate on different segments of that drive and the answers scatter anywhere from 89% to 106%. Eighty-nine is the middle of my estimates, not a verified figure. I have since seen the same size gap on a second car of the same model, which is why I trust the direction even where I don’t trust the decimal.
So here’s what I’ll actually stand behind: the direction is solid and the magnitude isn’t. The 97% does not survive a cross-check against the car’s own counters. Getting a number I’d defend requires a snapshot taken at mid state of charge, after the car has been sitting for half an hour. That’s a different trip, and I’ve since gone and taken it.
If I published 89% as a fact, I’d be doing the exact thing I’m complaining about.
What to do if you’re buying a used EV
If you care about EV battery SOH accuracy on a car you’re about to buy, you probably can’t run this check on it yet. You can ask for the counters instead of the conclusion.
- Ask for the charge counts, split into DC and AC. Mileage tells you how far the car went. The DC-versus-AC split tells you how hard the pack was pushed to get there.
- Ask for cumulative charged and discharged energy. These are counters, not estimates. They’re far harder to argue with than a health percentage, and dividing discharged energy by pack capacity gives you a real cycle count.
- Treat a high SOH on a high-mileage car as a question, not an answer. It might be true. It also might be a number generated by a method you can’t see. And ask who paid for whatever inspection you’re being shown — that question turns out to decide more than trust does.
- If you get to read the car yourself, do it at mid charge after a long rest. A reading taken at 100% right after a fast charge is the least informative one available.
One safety note, because this blog exists partly as a record of things I’ve broken. Reading data through the OBD port is passive and safe — you’re asking the car questions, not touching anything. Opening a battery pack is a completely different activity and the voltages inside are lethal. I’ve already destroyed one pack by trusting the wrong insulation on a steel case I built myself, and that pack was under 60 volts. A car’s traction battery runs several times that. Don’t go looking inside one to check on it.
The number that moved 17 points in half an hour
After that drive I went back through the logs to check the app’s own labels against the raw data, and one field stopped me. A column reported as battery deterioration had moved from 107 to 90 over the course of a single 30-minute drive.
Battery degradation does not move 17 points in half an hour. It doesn’t move 17 points in a year. Whatever that number was, it wasn’t degradation — and figuring out what it actually was turned out to be the most useful hour I spent that week.
This is the first post in Battery Lab, where I measure real battery health on real used EVs and show my work — including the parts where I’m wrong.