Person-hours effort calculator for project labor
The person-hours effort calculator converts a team plan into one comparable measure of labor.
Run — free
Enter the number of people and the hours each person is expected to work, and it multiplies them to produce total person-hours. Add an hourly rate when you also need a labor cost estimate. The result helps project managers, consultants, operations teams, and estimators compare staffing scenarios without confusing elapsed time with the amount of work contributed by the whole team.
Turn a staffing plan into total effort
Person-hours measure labor effort, not calendar duration. If six people each contribute 37.5 hours, the project receives 225 person-hours of effort. That does not necessarily mean the work finishes in 37.5 hours: coordination, dependencies, specialist availability, and tasks that cannot run in parallel can all affect the schedule. This calculator deliberately keeps the core arithmetic visible. Enter a positive whole number for the people involved and a non-negative number for the hours worked by each person. The result multiplies those two values and reports the combined effort. Use the same time basis throughout an estimate. For example, if hours per person represents one week, the output is the total person-hours for that week. If it represents an entire project phase, the output covers that phase. A consistent basis makes alternative team plans easy to compare and prevents weekly hours from being accidentally mixed with monthly or project-wide figures. The calculator accepts decimal hours, so values such as 7.5 or 37.5 do not need to be converted into minutes first.
Estimate labor cost from the same assumptions
When an hourly rate is provided, the calculator multiplies total person-hours by that rate to estimate labor cost. The rate can represent wages, a blended internal cost, a contractor charge, or a billing rate, but the meaning must remain consistent across the estimate. The calculation is currency-neutral: if the rate is entered in dollars, euros, pounds, or another currency, the result is expressed in that same currency. No currency conversion is performed. A blended rate is useful for an early budget when individual roles are not yet assigned. A role-specific estimate is usually more accurate when engineers, designers, technicians, or consultants have materially different rates; calculate each group separately and add the resulting effort and cost figures. Remember that an hourly labor rate may exclude taxes, benefits, equipment, travel, management overhead, contingency, and profit. Include those amounts in the rate only when they belong in the purpose of your estimate. The optional cost result is therefore a transparent arithmetic projection, not a promise that the final invoice or payroll total will match it.
Use person-hours without mistaking them for a schedule
Person-hours are valuable for comparing scope, tracking consumed effort, and checking whether a labor budget is plausible. They are less suitable as a direct prediction of completion time. Doubling a team from four people to eight does not automatically halve the calendar duration, because onboarding, communication, review, shared tools, and sequential tasks can reduce the benefit of added staffing. Start with a defined scope, estimate the hours one person contributes during the chosen period, and calculate the combined total. Then place that effort into a schedule that accounts for dependencies, working days, availability, and capacity that is reserved for other work. For progress tracking, compare planned person-hours with actual recorded person-hours at the same milestone, rather than comparing effort with elapsed clock time. If individuals work different hours, split them into groups with a common hours-per-person value and calculate each group separately. Add the group totals afterward. This preserves the simple multiplication while producing a more faithful estimate than forcing everyone into one average. Record the assumptions beside the result so reviewers know the team size, time period, included activities, and meaning of any hourly rate.
What you can do with it
Build a project labor estimate
Convert a proposed team size and expected hours per contributor into a single effort figure for a scope or project phase.
Compare staffing scenarios
Evaluate alternative team configurations on the same time basis before considering schedule dependencies and coordination overhead.
Prepare an early cost budget
Apply a blended hourly rate to total person-hours for a transparent preliminary labor cost estimate.
FAQ
How are person-hours calculated?
Multiply the number of people by the hours worked by each person. Six people working 37.5 hours each contribute 225 person-hours.
Are person-hours the same as elapsed hours?
No. Person-hours measure combined labor effort, while elapsed hours measure calendar time. Parallel work and task dependencies determine how the two relate.
Can I use decimal hours?
Yes. The hours-per-person field accepts non-negative decimal values such as 7.5 or 37.5.
What does the optional hourly rate include?
It includes whatever you define it to include. Use a wage, internal loaded cost, contractor charge, or billing rate consistently, and document excluded overhead.
What does the API request cost?
Each API request costs $0.002. The calculator can also run in the browser without sending the calculation to a server.
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/biz/person-hours-effort \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"people":6,"hours_per_person":37.5}'const res = await fetch("https://api.kit.forhosting.com/biz/person-hours-effort", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"people": 6,
"hours_per_person": 37.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/person-hours-effort",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"people": 6,
"hours_per_person": 37.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/person-hours-effort", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"people":6,"hours_per_person":37.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"people":6,"hours_per_person":37.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/person-hours-effort", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"people": 6,
"hours_per_person": 37.5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.person_hours_effort",
"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. |