Battery C rate calculator
A battery C rate describes charge or discharge current relative to the battery's rated amp-hour capacity.
Run — free
This calculator converts in either direction: enter capacity with a C rate to find amperes, or enter capacity with current to find the corresponding C rate. It also reports the ideal duration implied by that rate. Use the result to compare a charger, load, or test setting with the limits published by the cell or battery manufacturer rather than treating capacity alone as a safe-current specification.
Convert C rate into charge or discharge current
To calculate current, enter the battery's rated capacity in amp hours and the intended C rate. The relationship is current in amperes equals capacity in amp hours multiplied by C rate. A 100 Ah battery operated at 0.5C therefore corresponds to 50 A, while the same battery at 1C corresponds to 100 A. The arithmetic applies to charging and discharging, but the safe limit may be different for each direction. Capacity printed on a pack is not permission to use every mathematically possible current. Cell chemistry, temperature, age, state of charge, pack construction, cooling, wiring, connectors, and the battery management system can all impose lower limits. Always compare the calculated current with the manufacturer's continuous and peak ratings. If cells are connected in parallel, use the capacity of the complete parallel group only when current sharing is designed and verified. For series cells, voltage increases but amp-hour capacity does not, so do not add series capacities when entering the value.
Convert measured current into a C rate
To determine C rate from a charger, electronic load, inverter, or logged measurement, enter battery capacity and current in amperes. The calculator divides current by capacity. This makes differently sized batteries easier to compare: 10 A is 1C for a 10 Ah battery but only 0.1C for a 100 Ah battery. Use the rated capacity that matches the manufacturer's specification and test conditions. An aged battery may deliver less real capacity, yet its published safety limits may still be expressed against nominal capacity; do not silently substitute an estimated degraded capacity unless the procedure explicitly requires it. Current should represent the relevant operating condition. Compare steady current with the continuous C-rate limit and short pulses with the permitted pulse rating and duration. If a load varies, inspect peaks, averages, and thermal behavior separately. A single average can conceal a short overcurrent event that trips protection or stresses cells even though the computed average rate appears modest.
Interpret duration and apply safety margins
The returned ideal duration is the reciprocal of C rate: 1C implies one hour, 0.5C implies two hours, and 2C implies half an hour. This is a useful scale, not a runtime promise. Real charge and discharge time changes with usable depth of discharge, efficiency, voltage cutoffs, constant-current and constant-voltage charging stages, temperature, cell balancing, load variation, and battery aging. A charger may begin at the calculated current and then taper substantially near full charge. Likewise, a battery under a high discharge rate may reach its voltage cutoff before delivering its nominal amp-hour rating. Treat the result as an engineering conversion for checking settings, documentation, and test plans. Apply the battery maker's limits, include suitable fusing and conductor ratings, and leave margin for measurement error and temperature. When a datasheet lists separate standard, maximum continuous, and pulse C rates, match the result to the correct category and never extend a pulse limit beyond its stated duration.
What you can do with it
Size a charger current
Turn the recommended charging C rate from a cell datasheet into an ampere setting for the actual pack capacity.
Check a discharge load
Convert an inverter or electronic-load current into C rate before comparing it with continuous and pulse discharge limits.
Compare battery tests
Normalize currents from batteries with different amp-hour capacities into C rates so test conditions can be compared consistently.
FAQ
What does 1C mean for a battery?
It means a current numerically equal to the battery capacity in amp hours. For example, 1C on a 20 Ah battery is 20 A.
Is the formula the same for charging and discharging?
Yes, the conversion is the same, but the permitted charging and discharging C rates can differ. Check the correct manufacturer limit.
Does 2C guarantee the battery will run for 30 minutes?
No. Thirty minutes is the ideal duration implied by the rate. Cutoffs, losses, temperature, aging, and rate-dependent capacity affect actual runtime.
Which capacity should I enter for cells in series?
Use the series pack's amp-hour capacity, which is normally the capacity of one matched series cell or parallel group. Do not add amp hours merely because cells are in series.
Can this calculator determine whether a current is safe?
It converts the values but cannot establish a safe limit. Compare the result with the cell or pack datasheet, battery management system, wiring, connector, thermal, and fuse ratings.
What does the API calculation cost?
Each API request costs $0.002. The same deterministic calculation can also run in the browser.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/elec/battery-c-rate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"capacity_ah":100,"c_rate":0.5}'const res = await fetch("https://api.kit.forhosting.com/elec/battery-c-rate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"capacity_ah": 100,
"c_rate": 0.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/battery-c-rate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"capacity_ah": 100,
"c_rate": 0.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/battery-c-rate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"capacity_ah":100,"c_rate":0.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"capacity_ah":100,"c_rate":0.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/battery-c-rate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"capacity_ah": 100,
"c_rate": 0.5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.battery_c_rate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |