Solar battery charge time calculator
A 100 Ah battery charged at 10 A through an 85% efficient path gets 8.5 A of effective current and refills in just under 12 hours. Results come in hours, minutes and days for off-grid, RV and boat setups. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Battery capacity ah
- 100
- Charge current a
- 10
- Charging efficiency
- 0.85
- Effective current a
- 8.5
- Time hours
- 11.7647058824
- Time minutes
- 705.8823529412
- Time days
- 0.4901960784
Off-grid homeowners, RV and marine installers, solar designers, and students of photovoltaic storage often need a transparent answer to a simple question: how long will a solar array take to refill a battery bank? This solar battery charge time calculator takes battery capacity in amp-hours, the charging current delivered by the array or charge controller, and a charging efficiency, then returns the time in hours, minutes, and days.
What solar battery charge time means and how the formula works
Solar battery charge time in this capability is the clock time required to deliver a stated amp-hour capacity into a storage bank from a constant charging current after efficiency is applied. If a one-hundred amp-hour battery is charged at ten amperes through a path that is eighty-five percent efficient, the effective current is eight point five amperes and the charge time is one hundred divided by eight point five, about eleven point seven six hours.
If a two-hundred amp-hour bank is charged at twenty amperes with ninety percent efficiency, the effective current is eighteen amperes and the time is two hundred divided by eighteen, about eleven point one one hours. Efficiency folds in charge-controller conversion loss, wiring drop, and battery acceptance so you do not have to pretend that every ampere leaving the array arrives as stored charge.
The model is a constant-current estimate: it does not simulate the taper of a multi-stage MPPT absorption or float phase, temperature compensation, or partial state-of-charge start and stop points. Use it when you already know the current you expect during bulk charge and you want a first-pass duration, not a full charge-controller simulation. Capacity should be the amp-hours you intend to replace, which may be the full nameplate or a usable slice after a depth-of-discharge policy.
Charge current should be the current at the battery, not the panel short-circuit figure on a datasheet unless those happen to match your design.
Who uses a solar charge time estimate
Residential and marine solar sales teams use a solar battery charge time calculator to turn a bank rating and an expected controller current into a first-pass refill duration before detailed MPPT simulations run. Off-grid and cabin planners compare winter versus summer array currents against the same amp-hour bank to see whether a cloudy-day current still finishes a charge inside daylight. Classroom labs and vocational courses need a deterministic oracle that rejects zero or negative charge current instead of returning Infinity or NaN that a buggy grader might treat as success.
Invalid current, efficiency, or missing fields do not consume balance.
What you can do with it
Off-grid and cabin first-pass refill time
Turn bank amp-hours, expected solar charge current, and controller efficiency into hours and minutes before a detailed MPPT or weather model runs.
RV, marine, and portable solar quotes
Compare how long a given array current takes to refill a house bank so customers see daylight hours versus overnight remaining charge.
FAQ
What happens if the charge current is zero or negative?
Zero current would require infinite time (division by zero); a negative current is not a charging interval in this model and is not billed.
Does this include MPPT absorption, float, or sunlight hours?
No. It is a constant-current estimate from capacity, current, and efficiency. Pair it with your own irradiance or controller-stage tools when you need those layers.
How long does a 100 Ah battery take to charge at 10 amps?
With 85% charging efficiency the effective current is 8.5 A, so a 100 Ah bank needs just under 12 hours. With a perfectly efficient path, the same battery would take exactly 10 hours.
Should I enter the efficiency as 0.85 or as 85?
Enter it as a fraction: 0.85 means 85 percent. Values above 1 are rejected, so a typed 85 is flagged instead of quietly producing a wrong charge time.
Which current should I use, the panel rating or the controller output?
Use the current that actually reaches the battery during bulk charge, which is what the charge controller delivers. The short-circuit figure on a panel datasheet only works if it matches your design.
Related tools
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/earth/solar-charge-time \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"battery_capacity_ah":100,"charge_current_a":10,"charging_efficiency":0.85}'const res = await fetch("https://api.kit.forhosting.com/earth/solar-charge-time", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"battery_capacity_ah": 100,
"charge_current_a": 10,
"charging_efficiency": 0.85
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/earth/solar-charge-time",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"battery_capacity_ah": 100,
"charge_current_a": 10,
"charging_efficiency": 0.85
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/earth/solar-charge-time", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"battery_capacity_ah":100,"charge_current_a":10,"charging_efficiency":0.85}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"battery_capacity_ah":100,"charge_current_a":10,"charging_efficiency":0.85}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/earth/solar-charge-time", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"battery_capacity_ah": 100,
"charge_current_a": 10,
"charging_efficiency": 0.85
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "earth.solar_charge_time",
"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. |
Technical notes
The math is the classic capacity divided by effective current, where effective current is charge current times efficiency, with a hard invalid_input when the charge current is zero or negative so scripts never divide by zero or invent an infinite charge time. The same pure analytic module powers the free browser path and the API path, so quotes, homework checks, and automation pipelines stay byte-for-byte consistent on rounding and edge cases without network calls or AI.
What solar battery charge time means and how the formula works
When charge current is zero or negative the request fails with invalid_input because time would be infinite or physically reversed, not because the service is offline.
Input contract, response shape, and error behaviour
Battery capacity must be non-negative; a negative capacity is rejected, while zero capacity yields zero time. Charge current must be strictly positive: zero is rejected with a message that charge current cannot be zero, and a negative current is rejected because a reversed current is not a charging interval in this model. Charging efficiency must be strictly positive and at most one; zero efficiency would also imply infinite time, and values above one are rejected so a percent such as eighty-five is not silently treated as eighty-five hundred percent. Numeric fields are rounded to twelve decimal places for stable goldens across runtimes. Failed validation is not billed. POST a JSON body with three required finite numbers: battery_capacity_ah, the amp-hours to replenish; charge_current_a, the charging current in amperes from the solar array or controller; and charging_efficiency, a fraction greater than zero and at most one. Accept aliases capacity_ah, capacity, ah, and battery_ah for capacity; current_a, charge_current, current, and amps for current; and efficiency, eta, and charge_efficiency for the fraction. Fields may arrive as JSON numbers or numeric strings; missing, empty, non-finite, and non-numeric values fail with invalid_input naming the field. On success the body echoes battery_capacity_ah, charge_current_a, and charging_efficiency, reports effective_current_a as current times efficiency, and returns time_hours, time_minutes, and time_days. Unit labels, formula and equation strings, method capacity_over_effective_current, and a short steps array support display and debugging. This endpoint does not fetch irradiance, does not size a battery bank, and does not convert watt-hours unless you have already divided energy by voltage yourself.
Where a solar battery charge time API earns its keep
Keep requests small, pin time_hours and effective_current_a in tests, and you get reproducible charge durations for quotes, dashboards, and edge workers without standing up a full photovoltaic design suite of your own.
Integration use cases
Education and deterministic grading
Let students and LMS graders check capacity divided by current times efficiency with a clear invalid_input when charge current is zero or negative.
Technical questions
How do I calculate solar battery charge time?
Send battery_capacity_ah, a positive charge_current_a, and charging_efficiency between 0 and 1. The API returns time_hours = capacity / (current × efficiency), plus minutes, days, and effective current.
Should charging_efficiency be a percent or a fraction?
Use a fraction greater than 0 and at most 1. Example: 0.85 for eighty-five percent. Values above 1 are rejected so a percent is not treated as a huge multiplier.
What does the solar battery charge time calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.