Home › Everyday Life › Work Hours Calculator
Work Hours Calculator
Derives paid hours per day from shift start and end times minus unpaid breaks, scales them to a week (working days), an average month (52/12 weeks) and a year (52 weeks), and multiplies by an optional hourly rate for pay.
When to use
You want to know your working hours per week, month or year from a daily schedule, or the pay they represent at an hourly rate.
Do not use when: Shifts vary day by day (sum each with time-duration), or you need salary conversions between periods without shift times (use salary-converter).
Formula
hours_per_day = (end_time − start_time (+24 h if negative) − break_minutes) / 60; week = × days_per_week; month = week × 52 / 12; year = week × 52; pay = hours × hourly_rate
A year is taken as exactly 52 weeks (2,080 h for a 40-hour week); the US OPM uses 2,087 h to average leap years. Public holidays, sick days and paid leave are not deducted, and overtime premiums are not applied.
Inputs
| Parameter | Type | Unit | Required | Description |
|---|---|---|---|---|
start_time | string | yes | Start of the working day, 24-hour HH:MM. | |
end_time | string | yes | End of the working day, 24-hour HH:MM (an end time before the start time means the shift ends the next day). | |
break_minutes | integer | min | default 0 | Unpaid break minutes per day. Range: ≥ 0, ≤ 1440 |
days_per_week | integer | days | default 5 | Number of such working days per week. Range: ≥ 1, ≤ 7 |
hourly_rate | number | no | Optional gross pay per hour; adds pay outputs. Range: ≥ 0, ≤ 100000 |
Outputs
| Output | Type | Unit | Description |
|---|---|---|---|
hours_per_day | number | h | (end − start − break) in hours. |
hours_per_week | number | h | hours_per_day × days_per_week. |
hours_per_month | number | h | hours_per_week × 52 / 12 (average month). |
hours_per_year | number | h | hours_per_week × 52 (no holidays or leave deducted). |
daily_pay | number | hours_per_day × hourly_rate (only when hourly_rate is given). | |
weekly_pay | number | hours_per_week × hourly_rate. | |
monthly_pay | number | hours_per_month × hourly_rate. | |
annual_pay | number | hours_per_year × hourly_rate (gross, before tax). |
Example
09:00–17:30, 30 min break, 5 days, 25/h: {"start_time":"09:00","end_time":"17:30","break_minutes":30,"days_per_week":5,"hourly_rate":25} → {"hours_per_day":8,"hours_per_week":40,"hours_per_month":173.33,"hours_per_year":2080,"daily_pay":200,"weekly_pay":1000,"monthly_pay":4333.33,"annual_pay":52000}
Night shift 22:00–06:00, 45 min break, 4 days: {"start_time":"22:00","end_time":"06:00","break_minutes":45,"days_per_week":4} → {"hours_per_day":7.25,"hours_per_week":29,"hours_per_month":125.67,"hours_per_year":1508}
GET https://tttkmbb.com/api/v1/calculate/work-hours?start_time=09%3A00&end_time=17%3A30&break_minutes=30&days_per_week=5&hourly_rate=25
Machine access
- API:
GET https://tttkmbb.com/api/v1/calculate/work-hours(query parameters) orPOSTwith a JSON body{"inputs": {...}} - Schema: https://tttkmbb.com/api/v1/calculators/work-hours · Markdown: https://tttkmbb.com/everyday/work-hours.md · JSON definition: https://tttkmbb.com/everyday/work-hours.json
- MCP: server
https://tttkmbb.com/mcp, toolrun_calculator with calculator_id="work-hours" - OpenAPI operationId:
calculate_work_hours - Freshness:
static. Authentication: none. Rate limit: fair use (see rate limits).
Sources
FAQ
Why 52/12 = 4.333 weeks per month?
Months have 28–31 days, so payroll conventionally uses the average of 52 weeks divided by 12 months (about 173.33 h for a 40-hour week) rather than exactly 4 weeks.
Is the break paid?
break_minutes is subtracted as unpaid time. If your breaks are paid, enter 0.
Related calculators
- Time Duration Calculator — Length of a single shift.
- Salary Converter — Convert hourly pay to monthly or annual salary.