Count work hours fast across days with breaks, overtime, rounding, and timezone awareness. Add multiple rows, project tags, and rates. See totals, charts, and costs. Share links, import CSV, export PDF.
| Date | Start | End | Unpaid break (min) | Project | Holiday | Paid | Hours (hh:mm) |
|---|
This calculator is built for real-world timesheets where shifts span midnight, rounding rules vary, overtime is both daily and weekly, and pay rates depend on context. Everything runs in your browser for privacy. You can add multiple rows (each representing a shift or interval), toggle whether that row is paid, mark it as a holiday, choose a time zone for Daylight Saving Time (DST) awareness, and even export a printable PDF or a CSV for payroll systems.
For each row we compute worked minutes from the start and end times and subtract any unpaid break:
WorkedMinutes = Round(MinutesBetween(Start, End) − BreakMinutes, RoundingIncrement, Mode)
If the end time is earlier than the start time (e.g., 22:00 → 06:00), the calculator assumes the shift passes midnight and adds one day before taking the difference. Rounding is applied at the row level so that totals reflect your exact round-to-nearest / up / down policy.
| Input | Meaning |
|---|---|
| Date | Calendar date used for grouping (daily/weekly) and for DST handling in the chosen time zone. |
| Start / End | Shift times; accepts 12‑hour or 24‑hour formats and quick forms like 9a, 5p. |
| Unpaid break | Minutes deducted from the shift before rounding. |
| Holiday | Marks the row as a holiday; a multiplier can add extra holiday pay. |
| Paid | If off, the row contributes to “All hours” display but not to payable totals and cost. |
| Rounding | Nearest / up / down to 1, 5, 6, 10, or 15 minutes, applied per row. |
| Time zone | Ensures DST transitions (spring-forward / fall-back) are treated correctly. |
| Raw span | Rule | Rounded result |
|---|---|---|
| 08:02 → 17:03 (541 min) | Nearest 15 | 540 min (9.00 h) |
| 08:01 → 17:01 (540 min) | Round up 6 | 546 min (9.10 h) |
| 09:00 → 17:29 (509 min) | Down 5 | 505 min (8.42 h) |
| 22:00 → 06:00 (overnight) | Nearest 5 | 480 min (8.00 h) |
After per-row rounding, minutes are rolled up by day. We apply daily overtime (OT) and daily double‑time (DT) thresholds first. Anything up to the daily OT threshold is regular; minutes above the OT threshold count as overtime until the double‑time threshold is met; any minutes beyond that are double‑time. Next, we look across the week at regular minutes and, if they exceed the weekly threshold, we reclassify the excess from regular into overtime—avoiding double‑counting.
| Bucket | Formula |
|---|---|
| Regular | Sum of daily minutes up to daily OT threshold, adjusted down for weekly OT overflow. |
| Overtime | Daily minutes between daily OT and daily DT thresholds + any weekly reclassification. |
| Double‑time | Daily minutes beyond the daily double‑time threshold. |
| Night diff | Estimated minutes between 22:00–06:00 × (BaseRate × Night%/100). |
| Holiday extra | Holiday minutes × BaseRate × (HolidayMultiplier − 1). |
Cost is calculated by multiplying each bucket of hours by the appropriate rate or multiplier:
BaseCost = RegularHours × BaseRate
OTCost = OvertimeHours × BaseRate × OTMultiplier
DTCost = DoubleTimeHours × BaseRate × DTMultiplier
NightCost = NightHours × BaseRate × (Night% / 100)
HolidayExtra = HolidayHours × BaseRate × (HolidayMultiplier − 1)
TotalCost = BaseCost + OTCost + DTCost + NightCost + HolidayExtra
Assume daily OT = 8 h, daily DT = 12 h, weekly OT = 40 h, and BaseRate = $20/h:
| Day | Rounded hours | Daily breakdown |
|---|---|---|
| Mon | 9.0 | 8.0 regular, 1.0 OT |
| Tue | 8.5 | 8.0 regular, 0.5 OT |
| Wed | 10.0 | 8.0 regular, 2.0 OT |
| Thu | 7.5 | 7.5 regular |
| Fri | 8.0 | 8.0 regular |
| Weekly check: Regular = 39.5 h → no extra weekly OT shift. | ||
If regular hours had exceeded 40, the excess would be moved from regular to OT for the week, on top of any daily OT already counted.
Important Note: All the Calculators listed in this site are for educational purpose only and we do not guarentee the accuracy of results. Please do consult with other sources as well.