"State of health" sounds like a measurement. It's reported as a clean percentage — 87% SoH, 62% SoH — with the implied precision of a fuel gauge. It isn't one. SoH is an estimate built from a model, and understanding where that model can be trusted (and where it can't) matters more than the number itself once you're using it to plan replacements, set warranty triggers, or size a second-life application.
What SoH is supposed to measure
At its core, SoH compares a battery's current capability to its beginning-of-life capability, usually expressed as a ratio of two things: capacity fade (how much usable energy the cell can still hold relative to new) and resistance rise (how much the cell's internal resistance has grown, which affects how much power it can deliver, especially under load). Most SoH figures you'll see quoted lead with the capacity number because it's easier to communicate, but resistance rise is often the more operationally relevant one for high-power applications.
How it's actually estimated
No practical system fully discharges a cell to bare metal and recharges it to measure true capacity on every cycle — that would defeat the purpose of the battery. Instead, SoH is inferred through a handful of methods, each with real limitations:
- Coulomb counting: integrating current over time to track charge in and out. Accurate over short windows, but drifts without periodic recalibration against a known reference point (like a full charge).
- Impedance / internal resistance tracking: measuring voltage response to known current pulses. Sensitive to temperature and state of charge at the moment of measurement, which means two readings taken under different conditions aren't directly comparable without correction.
- Model-based estimation (e.g., Kalman filtering, electrochemical models): combines voltage, current, and temperature history with a cell model to estimate capacity and resistance simultaneously. More robust than either method alone, but only as good as the underlying model's fit to your specific cell and use pattern.
Every one of these approaches produces an estimate with an error band, not a precise reading. Reputable BMS vendors will quote that error band; a number reported without one should be treated with suspicion.
Where the error actually comes from
A few factors routinely widen the gap between reported SoH and a cell's true condition:
- Temperature: capacity and resistance both shift with temperature independent of aging, and an estimator that doesn't fully compensate will confuse a cold cell for a degraded one.
- C-rate and depth of discharge history: a cell cycled hard at high current ages differently than one cycled gently, and models calibrated on one profile can mis-estimate the other.
- Calibration drift: without periodic reference points, coulomb-counting error accumulates over months of operation.
- Cell-to-cell variation: in a multi-cell pack, SoH is often reported at the pack level even though individual cells age at different rates. A pack-level average can mask one weak cell dragging down real-world performance.
What SoH is genuinely good for
Despite the caveats, SoH is a legitimately useful signal when used for what it's actually good at:
- Fleet-level trending — spotting which units or deployment conditions are aging faster than expected
- Warranty and replacement triggers — flagging packs that have crossed a threshold worth inspecting
- Long-horizon replacement scheduling — budgeting for pack replacement across a fleet over years, where individual-unit precision matters less than aggregate accuracy
What it's not good for
Treat a single SoH reading with skepticism if you're using it for precise remaining-life prediction on one specific pack, or as a stand-alone safety determination. A pack showing acceptable average SoH can still have one cell in a state that a pack-level estimate won't surface. SoH is a planning signal, not a certification.
Practical guidance
If you're specifying or evaluating a BMS, ask what error bar it quotes on SoH, under what conditions that error bar was characterized, and whether estimation happens at the cell level or only the pack level. Combine SoH trending with other signals — cell-level voltage divergence, temperature history, and event logs — rather than treating it as a single source of truth. This is exactly the kind of thing that gets easier the earlier you design for it, which is the argument we make in our piece on telemetry-first pack design.