HomeCalculatorsElectricalBattery & Energy StorageBattery Runtime Calculator
Electrical calculator

Battery Runtime Calculator

Estimate battery runtime from capacity (Ah or mAh), voltage, and constant load in watts (load-side) or amps (battery-side), with planning DoD and load-side efficiency. Runs locally in your browser.

Instant result
Result

Enter values to calculate.

Inputs
Mode
Formula
Trust summary CVP VERIFIED · CVP protocol 1.0.0-proposed · Engineering assurance
Input interpretation
Enter values to calculate.
Result
Assurance
Engineering
Declared partition coverage
PASS · 3/3 declared partitions (watts, amps, invalid-domain) · Matrix
Known limitations
  • Constant load; no Peukert / temp; CVP goldens omit u_* GUM path
  • Core CVP does not include live graph, viewport, or pointer interaction.
Model
Constant-load battery runtime (hours/days) and usable energy (Wh) from capacity, voltage, load, DoD, and (watts mode) load-side efficiency; optional expanded uncertainty on t_h.
Scope
Constant load; ideal flat voltage until capacity is exhausted.
Verification
Engine tested · Source checked · v1.2.1 · CVP VERIFIED · CVP protocol 1.0.0-proposed · Engineering assurance· View Manifest · CVP overview · Specification
Versions
Calculation 1.2.1 · CVP protocol 1.0.0-proposed · Evidence 2026-09-11.schema-coverage-u
Verification revision
2026-09-11.schema-coverage-u · 10/10 property · digest 058cf03cbe19
Legacy regression
25/25 tests · Production surface contract 6/6
Reference
O1 model · O2 expected_values · O2 numerical_behavior
Interfaces
PASS · UI (SSR) / REST / MCP — ui-ssr is query-result HTML, not a live browser session.
Supplemental domain review
Internal · Pass · electrical-engineer · 2026-08-12
Named expert review
Not performed
CVP suite
3/3 golden · 9/9 CVP boundary · 7/7 invalid · 10/10 property · 1/1 cross-interface · 6/6 CVP contract · Manifest
Sources
Sources
Evidence
5 legacy golden · 10 legacy boundary · legacy regression suite · 3/3 oracle-backed golden · 7/7 invalid · Artifact integrity PASS · CalculatorX electrical review
This calculator CURRENT · Public schema 1.2.1 matches · Semantic contract ✓ · Production attested · Public/cache ✓ · Origin ✓
Semantic contract
PASS
Full verification

Manifest identity, reference classes, interfaces, suite, and production records.

Formulas

Core equations used by this calculator.

Usable energy (watts mode)E(Wh) = Ah × V × DoD × η
Runtime (load-side power)t(h) = E(Wh) ÷ P(W)
Usable energy (amps mode)E(Wh) = Ah × V × DoD
Runtime (battery-side current)t(h) = (Ah × DoD) ÷ I_battery(A)
mAh → AhAh = mAh ÷ 1000
iAssumes constant load and flat voltage. Real packs sag, BMS cutoffs end discharge early, and high C-rates reduce available capacity (Peukert). DoD and η are planning knobs in (0, 1] — not chemistry models. Amps mode uses battery-side current; η does not enter that runtime.

How to use

1

Choose load in watts or amps

Watts = delivered load-side power (η applies). Amps = battery-side discharge current (η not used).

2

Enter capacity and voltage

Use Ah or mAh (not both). Nominal pack voltage.

3

Optional DoD and efficiency

Planning limits, not chemistry. Defaults are 1 (100%). η applies in watts mode only.

4

Optional uncertainties

Enter u(*) for capacity, V, load, DoD, or η to show t ± U (k=2 by default) via the Uncertainty Engine.

Example calculations

Common configurations with formula and result.

ϟ

12 V nominal battery — first-order

10 Ah · 12 V · 20 W · DoD 0.8 · η 0.9

E = 10×12×0.8×0.9 · t = E/20
E = 86.4 Wh · t = 4.32 h
ϟ

Full DoD / ideal efficiency

10 Ah · 12 V · 20 W

E = 120 Wh · t = 120/20
t = 6 h
ϟ

From mAh

5000 mAh · 3.7 V · 1 W

Ah = 5 · E = 18.5 Wh
t = 18.5 h
ϟ

Battery-side current

10 Ah · 12 V · 2 A · DoD 0.8

t = (10×0.8)/2
t = 4 h · E = 96 Wh
ϟ

With capacity & power uncertainty

10 Ah · 12 V · 20 W · DoD 0.8 · η 0.9 · u(Ah)=0.5 · u(P)=1 · k=2

t=4.32 h; GUM sensitivity → U
t = 4.32 ± 0.61 h (k=2)

Illustrative runtimes (DoD=1, η=1)

Common values at a glance.

CapacityVoltageLoadRuntime
10 Ah12 V20 W6 h
10 Ah12 V2 A5 h
5 Ah3.7 V1 W18.5 h
100 Ah12 V100 W12 h
i Idealized. Apply DoD and (in watts mode) efficiency for more conservative estimates. For lead-acid, compare manufacturer discharge curves or a Peukert-aware model.

Battery Runtime calculator specification

Version 1.2.1 · Engine tested · Supplemental domain review · Internal · 2026-08-12

Calculation status

Review policy · Evidence · Reviewed by CalculatorX electrical review (electrical-engineer)

Definition
Battery runtime is how long a pack can supply a load before usable capacity is exhausted. This calculator estimates constant-load runtime from capacity, nominal voltage, load (W load-side or A battery-side), planning depth of discharge (DoD), and load-side delivery efficiency (watts mode).
What it calculates
Constant-load battery runtime (hours/days) and usable energy (Wh) from capacity, voltage, load, DoD, and (watts mode) load-side efficiency; optional expanded uncertainty on t_h.
Inputs
  • mode: watts (P_W load-side) or amps (I_A battery-side)
  • capacity_Ah > 0 XOR capacity_mAh > 0
  • V > 0 (nominal volts)
  • P_W > 0 when mode=watts; I_A > 0 when mode=amps
  • Optional dod, eta in (0, 1]; default 1 — planning knobs; eta unused in amps mode
  • Optional u_capacity_Ah, u_V, u_P_W, u_I_A, u_dod, u_eta ≥ 0; optional uncertainty_k (>0, default 2) XOR confidence — either coverage field requires at least one u_*
Outputs
  • t_h — runtime hours
  • t_d — runtime days (t_h/24)
  • E_Wh — usable energy Wh (watts: Ah×V×DoD×η; amps: Ah×V×DoD)
  • uncertainty — optional UncertaintySummary when any u_* is set
Formula
watts: E=Ah·V·DoD·η, t=E/P; amps: E=Ah·V·DoD, t=(Ah·DoD)/I; optional U=k·u_c(t)
Assumptions
  • Constant load; ideal flat voltage until capacity is exhausted.
  • DoD and η are independent planning knobs, not chemistry models.
  • Amps mode I_A is battery-side discharge current; η does not enter t_h.
  • When u_* are set, first-order GUM sensitivity with independent inputs (no ρ on this page).
Units
  • Ah, V, W or A → h, d, Wh
Boundary conditions
  • Missing capacity → MISSING_REQUIRED_INPUT
  • Both capacity_Ah and capacity_mAh → INVALID_INPUT
  • V ≤ 0 → VOLTAGE_MUST_BE_POSITIVE
  • P_W/I_A ≤ 0 → LOAD_MUST_BE_POSITIVE
  • dod/eta outside (0,1] → FRACTION_OUT_OF_RANGE
  • Unknown mode → INVALID_MODE
  • uncertainty_k without any u_* → INVALID_INPUT
  • uncertainty_k and confidence together → INVALID_INPUT
Example
10 Ah, 12 V, 20 W, DoD 0.8, η 0.9 → t_h = 4.32, E_Wh = 86.4
Validation cases

12 published on this page · 25/25 tests · Production surface contract 6/6 · View evidence

  • 10 Ah, 12 V, 20 W, DoD 1, η 1 → t_h = 6, E_Wh = 120
  • 10 Ah, 12 V, 20 W, DoD 0.8, η 0.9 → t_h = 4.32, E_Wh = 86.4
  • 5000 mAh, 3.7 V, 1 W → t_h = 18.5, E_Wh = 18.5
  • 10 Ah, 12 V, 2 A (amps mode) → t_h = 5, E_Wh = 120
  • 10 Ah, 12 V, 2 A, DoD 0.8, η 0.9 (amps) → t_h = 4, E_Wh = 96 (η ignored)
  • DoD/η example + u_capacity_Ah=0.5, u_P_W=1 → t_h=4.32 with uncertainty.U≈0.61 (k=2)
  • missing capacity → error MISSING_REQUIRED_INPUT
  • both capacity_Ah and capacity_mAh → error INVALID_INPUT
  • V = 0 → error VOLTAGE_MUST_BE_POSITIVE
  • P_W = 0 → error LOAD_MUST_BE_POSITIVE
  • dod = 1.2 → error FRACTION_OUT_OF_RANGE
  • mode = dc → error INVALID_MODE
Sources
  • IEC 60050 — International Electrotechnical Vocabulary — Electric battery capacity and related quantities
    Supports: Ah capacity and Wh energy relationship E ≈ Q·V for nominal estimates
  • IEC 61960 series (portable secondary lithium) — Capacity / performance concepts for portable Li cells and batteries
    Supports: Nameplate capacity language for portable secondary lithium; not a lead-acid Peukert model
  • Victron Energy — Battery capacity and Peukert exponent — Battery monitor documentation (BMV)
    Supports: Why usable Ah falls with discharge rate; Peukert as reason simple Ah×V estimates differ from field runtime
  • NIST Guide to the SI (SP 811) — Coherent derived units for energy and time
    Supports: Wh and hour as energy/time units in estimates
Last reviewed
2026-08-12
Reviewed by
CalculatorX electrical review (electrical-engineer)
Calculation version
1.2.1

Background

Interpretation and common distinctions.

Estimate battery runtime under a constant load from pack capacity, voltage, and load in watts (load-side power) or amps (battery-side current), with optional planning DoD and load-side efficiency. Optional standard uncertainties (u_*) compose an expanded interval on runtime via the Uncertainty Engine.

Status: Battery Runtime Basic v1.2.1 — Frozen model. Pin calculation_version: 1.2.1. Same constant-load formulas as 1.2.0; Agent schema now requires at least one u_* when uncertainty_k or confidence is set. Do not stack Peukert / temperature / duty-cycle / pack workspace into this page — those are separate capabilities.

Default example: 10 Ah · 12 V · 20 W · DoD 0.8 · η 0.9 → 4.32 h (usable 86.4 Wh).

Product position

Battery Runtime
├── Basic (this page, frozen 1.2.1)
│     Ah/mAh · V · W/A · DoD · η · first-order u_*
├── Temperature        → electrical.battery.runtime_temp
├── Pack sizing        → electrical.battery.pack_sizing
└── Future (separate)
      Peukert · Duty cycle · Manufacturer curves · Pack/System Workspace

Supported and not supported

Supported

  • Constant watt (load-side) or amp (battery-side) load
  • Capacity in Ah or mAh (mutually exclusive)
  • Planning DoD and load-side efficiency fractions in (0, 1]
  • Optional standard uncertainties on capacity, V, P/I, DoD, η with coverage k (default 2)
  • API result { t_h, t_d, E_Wh, uncertainty? } via electrical.battery_runtime

Not supported

  • Peukert / high C-rate capacity loss
  • Temperature derating (see Battery Runtime with Temperature / electrical.battery.runtime_temp)
  • Multi-step duty cycles or sleep currents
  • BMS cutoff voltage modeling or pack sizing (see future pack tools)
  • Monte Carlo / correlation / νeff UI on this page (use Uncertainty Propagate directly)

Agent / API notes

Capability id: electrical.battery_runtime · tool id: battery-runtime · pin calculation_version: 1.2.1.

Input schema is mode-discriminated (oneOf): watts requires P_W; amps requires I_A (battery-side discharge current; η ignored); capacity_Ah XOR capacity_mAh; uncertainty_k XOR confidence; uncertainty_k/confidence require at least one contributing u_*. Pin calculation_version: 1.2.1.

Canonical response inputs always echo capacity_Ah (mAh alias resolved); amps omits eta / P_W; watts omits I_A.

Stable error codes: MISSING_REQUIRED_INPUT, INVALID_NUMBER, INVALID_MODE, CAPACITY_MUST_BE_POSITIVE, VOLTAGE_MUST_BE_POSITIVE, LOAD_MUST_BE_POSITIVE, FRACTION_OUT_OF_RANGE, VALUE_MUST_BE_NON_NEGATIVE, INVALID_INPUT.

When any u_* is set, the engine calls engineering.uncertainty.propagate (sensitivity) and attaches an UncertaintySummary ($ref /schemas/common/uncertainty-summary.json) { u_c, U, k, coverage, contributions, … } on t_h. Empty u_* preserves the nominal-only result.

Capability family & namespace

This Basic page is frozen at calculation_version 1.2.1. Related tools:

Role Capability id (public today) Future preferred id
Basic runtime (frozen) electrical.battery_runtime electrical.battery.runtime
+ temperature electrical.battery.runtime_temp electrical.battery.runtime.temperature
Pack sizing (inverse) electrical.battery.pack_sizing electrical.battery.pack_sizing

No breaking rename yet. When Agents and catalog consumers are ready, expose preferred ids with deprecated aliases pointing at the current public ids.

Future layers (separate pages/capabilities): Peukert, duty cycle, manufacturer curves, Pack Runtime Workspace — not stacked into this Basic page.

How the estimate works

Watts modeP_W is delivered load-side power; η is load-side delivery efficiency:

E(Wh) = Q(Ah) × V × DoD × eta, tₕ = (E(Wh))/(P(W))

Amps modeI_A is battery-side discharge current (converter loss already in the current); η does not enter runtime:

E(Wh) = Q(Ah) × V × DoD, tₕ = (Q(Ah) × DoD)/(I(battery))

Days are reported as t(d) = tₕ / 24.

Optional uncertainty

When you supply one or more standard uncertainties u(xᵢ), runtime is treated as tₕ = f(…) and combined with GUM sensitivity coefficients partial t/partial xᵢ. Expanded uncertainty uses coverage factor k (default 2):

u_c(t) = √(sumᵢ (cᵢ uᵢ)²), U = k u_c

Result UI shows tₕ ± U and contribution bars when any u_* is present.

Choosing DoD and efficiency

DoD and η are planning knobs, not chemistry models inferred by CalculatorX.

Situation Typical DoD Typical η (watts mode)
One-shot drain to empty (ideal) 1.0 1.0
Conservative longevity limit 0.5–0.8 0.85–0.95
Li-ion with inverter (load-side W) 0.8–0.95 0.85–0.95

In amps mode, enter the measured battery current and leave η unused.

}

Frequently asked questions

Key distinctions behind the calculation.

How do I calculate battery runtime?

Watts (load-side): E(Wh) = Ah × V × DoD × η, then t(h) = E / P. Amps (battery-side): t(h) = (Ah × DoD) / I — η is not applied, because converter loss is already in the measured battery current.

Should I enter Ah or mAh?

Either, but not both. If you only have mAh, enter capacity_mAh (or the mAh field in the UI). The engine converts Ah = mAh / 1000.

What is depth of discharge (DoD)?

A planning limit: the fraction of nameplate capacity you intend to use. It is not inferred from chemistry. Enter 0.8 for 80%.

What is efficiency η?

Load-side delivery efficiency in watts mode (converter/wiring). 0.9 means about 90% of pack energy reaches the load. In amps mode η is ignored — use battery-side current only.

Why is this shorter than the manufacturer chart?

Charts include Peukert effects, temperature, and cutoff voltage. Capacity vs discharge rate is especially visible for lead-acid. This tool is a constant-load first estimate — not a datasheet replacement.

What if load power is zero or missing?

The API rejects the request with LOAD_MUST_BE_POSITIVE or MISSING_REQUIRED_INPUT. Zero load is not treated as infinite runtime.

How do optional uncertainties work?

Provide standard uncertainties u_capacity_Ah, u_V, u_P_W or u_I_A, u_dod, and/or u_eta. The engine composes them with GUM sensitivity on t_h via engineering.uncertainty.propagate (default k=2) and returns an UncertaintySummary { u_c, U, k, contributions, … }. Leave all u_* empty for the nominal-only result.