Battery Life Estimator

Estimate runtime from capacity and load current. Includes Peukert correction.

// runtime from pack capacity and load — with a realistic usable-capacity derate

// load

Estimated runtime
15 h

15 hours · 90% of nameplate capacity

Ideal (100%)
16 h 40 min
nameplate ÷ load
Usable charge
1800mAh
90% of 2000 mAh
C-rate
0.06C
gentle discharge
Usable energy
6.66 Wh
usable Ah × pack V
Load power
444 mW
I × V
Load current
120 mA
as entered

// corrections

▸ show formulas
t = (capacity × usable%) / I_load // hours

Peukert (capacity shrinks as current rises):
t = H × (C / (H × I))^k
H = the hour rate the capacity was specified at (often 20 h)

Typical k: 1.05 lithium · 1.1 NiMH · 1.2 alkaline · 1.25 lead-acid. Lead-acid is listed at 50% usable because discharging past that shortens its life sharply. Real runtime also drops in the cold and as cells age — treat this as an upper bound.
batterymAhruntimePeukert

About this calculator

Dividing capacity by current gives an optimistic number that real batteries never deliver. Some of the nameplate capacity is unreachable without damaging the cell, efficiency losses eat into the rest, and heavy loads shrink the delivered capacity further still.

This calculator starts from the simple division and then applies the corrections that matter: a usable-capacity derate that depends on chemistry, and an optional Peukert correction for loads that are high relative to the cell size.

How it works

The base calculation is capacity divided by current. A 2000 mAh cell feeding 100 mA lasts 20 hours in the ideal case. Everything after that is a correction downward.

The first correction is usable capacity. Lithium cells give up around 90% of their rating before the voltage falls below what most circuits accept. Lead-acid is the extreme case — discharging past about 50% dramatically shortens its life, so only half the nameplate figure is really available.

The second is the Peukert effect. Capacity is specified at a particular slow discharge rate, and pulling current faster than that returns less total charge. The Peukert exponent k quantifies it: 1.05 for lithium (barely any effect), around 1.25 for lead-acid (substantial).

If your load is specified in watts rather than amps, the calculator converts using the pack voltage. Constant-power loads — switching regulators, most of all — actually draw more current as the battery sags, so they shorten runtime slightly more than a constant-current model suggests.

t = (capacity × usable%) / I_load hours
t = H × (C / (H × I))^k Peukert-corrected
I = P / V converting a power load to current
C-rate = I_load / capacity 1C discharges in one hour

Worked example

An ESP32 sensor node averaging 80 mA, running from a 2000 mAh 18650 lithium cell.

  1. Ideal runtime: 2000 / 80 = 25 hours
  2. Usable capacity for lithium ≈ 90%: 1800 mAh
  3. Corrected runtime: 1800 / 80 = 22.5 hours
  4. C-rate: 80 mA / 2000 mAh = 0.04C — very gentle, so Peukert is negligible

About 22.5 hours of continuous operation. Getting from a day to a month means cutting the average current, not buying a bigger cell — deep sleep between readings is worth far more than extra capacity.

Practical notes

  • Average current is what matters, not peak. A node that transmits at 150 mA for 200 ms every minute averages well under a milliamp of transmit current.
  • Cold kills capacity. A lithium cell at 0 °C may deliver 70–80% of its room-temperature figure, and much less below freezing.
  • Cells age. Expect a lithium cell to be at about 80% of its original capacity after a few hundred full cycles, and design for end-of-life rather than day-one performance.
  • Cheap cells are frequently relabelled. An 18650 advertised as 9900 mAh does not exist — genuine high-capacity cells top out around 3500 mAh.
  • Do not forget the rest of the circuit. A linear regulator's quiescent current, a power LED, or a voltage divider left permanently across the battery can easily dominate a low-power design.

Frequently asked questions

How do I calculate battery life in hours?

Divide capacity in mAh by average load in mA, then multiply by a realistic usable-capacity fraction. A 2000 mAh cell at 100 mA gives 20 hours ideally, or about 18 hours at 90% usable.

What is the Peukert effect?

The observation that a battery delivers less total charge when discharged quickly. Capacity is rated at a slow rate — often 20 hours — and pulling harder returns less. It is pronounced in lead-acid and nearly absent in lithium.

What is a C-rate?

Discharge current expressed relative to capacity. 1C empties the battery in an hour, so for a 2000 mAh cell 1C is 2000 mA. 0.1C is a gentle ten-hour discharge. High C-rates cause voltage sag and heating.

Why does my battery last less than calculated?

Usually some combination of standby current you did not count, cold temperature, an aged cell, an optimistic capacity claim, or a load that peaks much higher than its average. Measure actual current draw with a meter rather than trusting datasheet figures.

How deeply can I discharge a battery?

Lithium-ion down to about 3.0 V per cell, lead-acid only to 50% of capacity if you want reasonable cycle life, and NiMH close to empty without much harm. Most lithium packs have protection circuits that cut off automatically.