Battery State of Charge (SoC) Calculator

Estimate state of charge and depth of discharge from open-circuit voltage or by coulomb counting.
Voltage Method
Coulomb Counting

SoC from Open-Circuit Voltage

SoC% = (V − Vempty) / (Vfull − Vempty) × 100
Lead-acid 12V
Li-ion cell
LiFePO4 cell
V
V
V
Enter values and press Calculate.

SoC by Coulomb Counting

SoC% = Remaining(Ah) / Capacity(Ah) × 100  •  DoD% = 100 − SoC%
100Ah, 65Ah left
50Ah, 20Ah left
Ah
Ah
Enter values and press Calculate.

State of Charge and Depth of Discharge

State of charge (SoC) is how full a battery is, from 0% (empty) to 100% (full). Its complement is the depth of discharge (DoD) = 100% − SoC. There are two common ways to estimate SoC. The voltage method reads the rested open-circuit voltage and maps it linearly between the empty and full voltages — quick, but only approximate because the voltage-vs-charge curve is not a straight line. Coulomb counting integrates current in and out to track the remaining amp-hours, which is what a battery management system (BMS) does for accuracy.

QuantityFormula
SoC (voltage)(V − Vempty)/(Vfull − Vempty) × 100
SoC (coulomb)Remaining Ah / Capacity Ah × 100
Depth of dischargeDoD = 100 − SoC
Energy remainingRemaining Ah × Nominal V

The voltage method works best for chemistries with a sloped discharge curve (lead-acid, Li-ion) after the battery has rested. LiFePO4 has a very flat curve, so its voltage barely changes between 20% and 90% — coulomb counting is far more reliable there.

Real-World Applications & Examples

Worked examples

1. Lead-acid 12 V. Measured 12.4 V, empty 12.0 V, full 12.7 V: SoC=(12.4−12.0)/(12.7−12.0)×100=57%.
2. Li-ion cell. 3.7 V between 3.0 V (0%) and 4.2 V (100%): SoC=(3.7−3.0)/1.2×100=58%.
3. Coulomb counting. 100 Ah battery with 65 Ah left: SoC=65/100=65%, DoD=35%.
4. Deep discharge. 50 Ah battery with 20 Ah remaining: SoC=40%, DoD=60% — nearing the safe limit for lead-acid.
5. Energy left. Example 3 at 12 V nominal: energy=65×12=780 Wh available.
6. Flat LiFePO4 curve. At 3.25 V a LiFePO4 cell could be anywhere from 30–80% SoC, so coulomb counting — not voltage — should drive the gauge.

Two Ways to Measure State of Charge, and Why Both Are Imperfect

There is no sensor that reads state of charge directly. Every method infers it, and each one fails in a different way.

Voltage-based estimation

Open-circuit voltage maps to state of charge, which makes it the simplest approach. The catch is that the mapping is only valid at rest: under load, internal resistance pulls terminal voltage below the true open-circuit value, and immediately after charging it sits above. A cell may need anything from several minutes to a few hours of rest before its voltage is a fair indicator.

The bigger problem for lithium iron phosphate in particular is that the discharge curve is deliberately flat. Between roughly 20% and 80% charge, the voltage may move only a few tens of millivolts, so a small measurement error or temperature shift translates into an enormous state-of-charge error. Voltage works well at the extremes of the range and poorly in the middle — exactly where you most want to know.

Coulomb counting

The alternative is to integrate current in and out over time, which sidesteps the voltage-curve problem entirely. Its weakness is drift: any small offset in the current measurement accumulates, so the error grows steadily the longer the system runs without a reference point. This is why coulomb counters are periodically re-anchored, typically at a full charge where the true state of charge is known.

Practical battery management systems use both — coulomb counting for moment-to-moment tracking, periodically corrected against a rested open-circuit voltage reading.

Lead-acid has a third option

In flooded lead-acid cells, electrolyte specific gravity changes with state of charge because sulphuric acid is consumed during discharge. A hydrometer reading is therefore a genuinely direct chemical measurement rather than an inference, and it remains the most reliable check on a flooded battery — though it is useless on sealed or AGM types, where the electrolyte cannot be sampled.

Frequently Asked Questions

What is state of charge (SoC)?

SoC is the remaining charge in a battery as a percentage of its full capacity, from 0% (empty) to 100% (full). It is the battery equivalent of a fuel gauge.

What is depth of discharge (DoD)?

DoD is how much of the battery has been used: DoD = 100% − SoC. A battery at 70% SoC has been discharged to 30% DoD.

How do I estimate SoC from voltage?

Measure the rested open-circuit voltage and map it linearly between the empty and full voltages: SoC = (V − Vempty)/(Vfull − Vempty) × 100. It is approximate because the real curve is non-linear.

What is coulomb counting?

Coulomb counting tracks SoC by integrating the current flowing in and out over time (charge = current × time). Starting from a known full charge, it subtracts used amp-hours to give the remaining capacity accurately.

Why measure voltage at rest (open-circuit)?

Under load or charge the terminal voltage shifts due to internal resistance, so it does not reflect the true SoC. Letting the battery rest for a while gives the open-circuit voltage that maps reliably to charge.

Why is the voltage method unreliable for LiFePO4?

LiFePO4 has a very flat voltage curve — the voltage barely changes across most of the range — so small measurement errors translate to large SoC errors. Coulomb counting is preferred for these cells.

What voltages correspond to full and empty?

Typical values: Li-ion 4.2 V full / 3.0 V empty; LiFePO4 3.4 V / 2.5 V; lead-acid (12 V) about 12.7 V / 12.0 V at rest. Always use the manufacturer's figures.

What SoC range is best for battery life?

Keeping lithium batteries between roughly 20% and 80% SoC minimises stress and maximises cycle life. Full charges to 100% are fine occasionally but best avoided for daily storage.

How do I convert SoC to remaining energy?

Multiply the remaining amp-hours by the nominal voltage: remaining Wh = (SoC/100) × capacity(Ah) × V. This gives the usable energy left.

Can SoC exceed 100% or go below 0%?

No. If the calculation gives more than 100% or less than 0%, the reference voltages or the remaining-Ah figure are wrong, or the battery is being measured under load rather than at rest.

How does temperature affect SoC estimates?

Temperature shifts the voltage curve and the deliverable capacity, so cold conditions can make a battery read a lower SoC and provide fewer usable amp-hours. Good BMS designs apply temperature compensation.

How do real BMS units estimate SoC?

They combine methods: coulomb counting for short-term accuracy, periodic recalibration against rested open-circuit voltage, and temperature correction — often blended with a model of the battery for the best estimate.

Can I judge state of charge from voltage alone?

Only roughly, and only after the battery has rested. Under load the terminal voltage reads low and just after charging it reads high, so a loaded measurement can be badly wrong.

Why is voltage a poor state-of-charge indicator for LiFePO4?

Because its discharge curve is very flat. Between about 20% and 80% charge the voltage may change only a few tens of millivolts, so a small error produces a large state-of-charge error.

What is coulomb counting?

Integrating current flowing in and out of the battery over time to track how much charge remains. It handles flat voltage curves well but accumulates drift from small current-measurement offsets, so it needs periodic recalibration.

How long should a battery rest before measuring open-circuit voltage?

Anywhere from several minutes to a few hours depending on chemistry and how hard it was just worked. Lead-acid generally needs longer than lithium. If the reading is still moving, it has not rested long enough.

What is specific gravity used for?

In flooded lead-acid batteries, electrolyte specific gravity tracks state of charge directly, because sulphuric acid is consumed on discharge. It is the most reliable indicator for flooded cells but cannot be used on sealed or AGM batteries.

Why does my battery meter jump around under load?

Because it is inferring charge from voltage, and voltage sags under load in proportion to current and internal resistance. Meters that combine coulomb counting with rested voltage correction are far more stable.

Related Calculators

Battery Capacity • Internal Resistance • Cycle Life • All Calculators

Battery & Charging