Percent of time calculator
15 minutes into a 60-minute meeting, 25 % of the time is gone. Enter the time elapsed and the total duration in the same unit to get the share used, the time left and a status that runs from not started to overtime. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Total
- 60
- Elapsed
- 15
- Remaining
- 45
- Ratio
- 0.25
- Percentage
- 25
- Remaining percent
- 75
This percent of time calculator answers one practical question: given how much time has already elapsed and how long the whole interval is supposed to last, what percentage of that duration is already gone. You supply both values in the same unit — seconds, minutes, hours, or days — and the calculator divides elapsed time by the total duration, then multiplies by one hundred. Fifteen minutes into a sixty-minute meeting is twenty-five percent. Forty-five minutes of a ninety-minute lecture is fifty percent.
What percent of elapsed time means, and what it is not
Percent of time is the share of a planned duration that has already been used, written as a percent of that duration. The identity is unique and short: divide the elapsed time by the total duration, then multiply by one hundred. Fifteen of sixty is one quarter, and one quarter times one hundred is twenty-five percent.
Ninety of one hundred twenty is three quarters, which is seventy-five percent. Zero elapsed time is zero percent: the clock has not started. When elapsed time equals the total, the result is one hundred percent and the interval is complete.
When elapsed time overruns the total, the percentage rises above one hundred and the remaining time is negative; that overtime reading is honest for a meeting that ran long or a timer that was not stopped. This landing is not a general percentage toolbox that mixes “percent of”, “what percent is”, increase, decrease, and reverse. It is not a signed percentage change from an old value to a new value.
It is not calendar year progress, which needs a date and a Gregorian year rather than two durations you already measured. It is not a grade percent from a score over a point total, even though the arithmetic looks similar: the search and the labels are about time, remaining time, and progress, not letters or exam bands. People type percent of time, elapsed time percentage, or what percent of the time has passed when they already hold two durations and want the elapsed share.
Both numbers must use the same unit. Mixing minutes with hours silently scales the answer by sixty; the calculator does not convert units because it cannot guess which clock you meant. The total sits in the denominator, so it must be a positive finite number.
Where a percent of time calculator earns its keep
Product and operations teams drive progress bars from two clocks they already own: seconds of a video that have played against its length, milliseconds of a download against the estimated total, or minutes of a meeting against the booked slot. Teachers and exam writers want a deterministic oracle for “what percent of the period has passed” that also covers a not-yet-started zero and an overtime reading above one hundred, not only the tidy classroom fraction in the first example.
Project and shift planners compare hours already worked with the planned duration and need remaining time in the same response so a dashboard can show both the used share and what is left. Failed validation does not consume balance. Keep requests small, pin percentage and remaining in tests, and you get reproducible time progress for players, classrooms, and edge workers without standing up a calendar engine or a computer-algebra stack.
What you can do with it
Meeting, lecture, and shift progress
Feed minutes already used and the booked duration into elapsed and total to report how much of the slot is gone and how much remains, including overtime when the clock runs past the end.
Classroom and exam checks
Let students verify “fifteen of sixty minutes is twenty-five percent” and the matching zero, complete, and overtime cases, including the zero-duration error that a silent Infinity would hide.
FAQ
How do I calculate what percent of a duration has elapsed?
Send finite numbers elapsed and total in the same unit.
What happens if the total duration is zero or negative?
Percent of time divides by the total duration, so a zero or negative total is undefined; those failures are not billed.
Can elapsed time be larger than the total duration?
Yes. Overtime is allowed. One hundred fifty minutes of a one-hundred-minute slot returns percentage 150, a negative remaining value, and status overtime.
Do elapsed and total have to use the same unit?
Yes. The calculator is unit-agnostic: both values must be seconds, or both minutes, or both hours, or both days. It does not convert between units.
How do I see how much time is left?
The result also shows the remaining time, which is the total minus the elapsed time, and the remaining share, which is 100 minus the percentage. In the 15-of-60 example that is 45 left, or 75 %.
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/math/percent-time \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"elapsed":15,"total":60}'const res = await fetch("https://api.kit.forhosting.com/math/percent-time", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"elapsed": 15,
"total": 60
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/percent-time",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"elapsed": 15,
"total": 60
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/percent-time", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"elapsed":15,"total":60}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"elapsed":15,"total":60}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/percent-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
{
"elapsed": 15,
"total": 60
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.percent_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
A zero or negative total duration is undefined, so that case fails with invalid_input instead of Infinity.
What percent of elapsed time means, and what it is not
A zero or negative duration makes the relative share undefined, which this calculator reports as invalid_input rather than Infinity or NaN.
Input contract, response shape, and error behaviour
A negative elapsed time is rejected because elapsed time cannot run backwards. A zero or negative total is rejected because the formula divides by the duration; those failures are not billed either. On success the body echoes the cleaned elapsed and total values, returns remaining as total minus elapsed, ratio as elapsed divided by total, and percentage as the primary result. Example: elapsed one hundred fifty and total one hundred yields percentage one hundred fifty, remaining minus fifty, and status overtime. POST a JSON body with two required finite numbers: elapsed, the non-negative time already used, and total, the positive duration of the whole interval. Each field may arrive as a JSON number or as a numeric string. Common aliases are accepted when the canonical name is omitted: elapsed_time, spent, used, or passed for elapsed; total_duration, duration, total_time, or allotted for total. Missing fields, empty strings, non-numeric text, NaN, and Infinity fail with invalid_input naming the field and are not billed. It also returns remaining_percent as one hundred minus the percentage, names status as not_started, in_progress, complete, or overtime, restates the formula string, and includes a one-line message you can drop next to a progress bar. Example: elapsed fifteen and total sixty yields remaining forty-five, ratio zero point two five, percentage twenty-five, remaining_percent seventy-five, and status in_progress. Pair the payload with your own labels or plots; this endpoint does not emit charts.
Where a percent of time calculator earns its keep
A dedicated elapsed-over-total endpoint avoids reimplementing the identity in every client language, where a forgotten multiply-by-one-hundred or a swapped pair quietly paints a bar at four percent instead of forty.
Integration use cases
Video, download, and timer bars
Convert played seconds against clip length, or transferred bytes-as-time against an estimate, into a percentage and a remaining_percent you can bind to a progress bar without a custom helper.
Technical questions
What does the percent of time calculator cost?
The browser tool is free. API requests use prepaid balance at $0.002 per successful call; invalid input is not billed.