Time Card Calculator

A weekly timesheet that runs entirely in the browser: enter each day's start time, end time, and unpaid break, and get the week's total two ways — as hours-and-minutes and as payroll-ready decimal hours — plus optional gross pay at an hourly rate you supply. Empty days are skipped, overnight shifts follow a fixed rule, and every figure in the notes below is computed at build time by the same engine behind the form, on labelled fictional punches.

Weekly time card

Times like 9:00 / 5:30 pm; breaks in minutes.

Monday

Tuesday

Wednesday

Thursday

Friday

Saturday

Sunday

Fill in at least one day to see the weekly total.

How the weekly total is built

Each completed day is a single subtraction: the end time minus the start time, minus the unpaid break, measured in minutes. Times are read in either 24-hour form (17:45) or 12-hour form with am/pm (5:45 pm), and breaks are entered as a whole number of minutes. A day with no start and no end is left out of the total entirely, so a four-day week needs no placeholder zeros.

Crucially, the week is summed in minutes and converted to hours only at the very end — daily figures are never rounded to decimals and then added, because that would let a rounding error accumulate once per day. Take a fictional week of punches:

  • Monday — 9:00 to 5:30 pm, 30 min break → 8 h (480 min)
  • Tuesday — 8:45 to 5:15 pm, 45 min break → 7.75 h (465 min)
  • Wednesday — 9:00 to 1:00 pm, no break → 4 h (240 min)
  • Thursday — 10:00 to 6:30 pm, 30 min break → 8 h (480 min)
  • Friday — 9:00 to 5:00 pm, 60 min break → 7 h (420 min)

Summed as minutes, the five days come to 2085 minutes, which the calculator reports as 34 h 45 min and as 34.75 decimal hours — one total expressed two ways. The decimal form is shown alongside the clock form and can be copied on its own as a bare number.

Reading hours as a decimal

Decimal hours are not the clock written with a dot. Seven hours and thirty minutes is 7.5 hours, not 7.3, because thirty minutes is half of sixty rather than three-tenths of ten. The conversion is always minutes ÷ 60: the fictional Tuesday above, 7 h 45 min, is 7.75 decimal hours because forty-five minutes is three-quarters of sixty, and a 7 h 30 min day — 9:00 to 4:30 pm with no break — works out to 7.5. Mistaking the minutes for tenths is the classic timesheet error, and it runs in both directions: 7.5 hours is 7 h 30 min, not 7 h 50 min. Showing both forms side by side is meant to make that slip visible before it reaches a pay run.

Reading the result and copying the total

The result box leads with the two headline totals — hours-and-minutes and decimal hours — and then lists each counted day beneath them, so a figure that looks wrong can be traced back to the row that produced it without re-reading every punch. Days left blank never appear, which keeps the breakdown to the days actually worked. The Copy total button copies the decimal figure on its own — 34.75 for the fictional week above — as plain text with no thousands separators or units, so it pastes cleanly into a payroll row or a spreadsheet cell that expects a bare number. Copying the decimal rather than the hours-and-minutes string is deliberate: a bare decimal is the one form that cannot be misread back as a clock time.

Overnight shifts and the midnight rule

A shift is entered once, on the day it starts. When the end time is at or before the start time, the calculator treats the shift as crossing midnight and adds a full day to the end before subtracting — so a fictional 10:00 pm to 6:00 am shift with a 30-minute break records 7.5 hours rather than a negative span. One consequence follows from the very same rule and is worth knowing: identical start and end times count as a full 24-hour shift. A 9:00 start with a 9:00 end returns 24 hours, and because that is far more often a typo than a real round-the-clock shift, the result row flags it explicitly instead of billing 24 hours in silence.

Unpaid breaks

The break is subtracted from the shift, in minutes, before anything is converted to hours. It must be a whole number of minutes and cannot exceed the shift it is taken from: enter a 150-minute break on a two-hour shift (9:00 to 11:00) and the calculator refuses the row with "The break is longer than the shift itself." rather than reporting negative time. A blank break field is read as zero, so a straight shift with no unpaid break needs nothing in that column. Forgetting the break entirely is the second classic error after decimal confusion — an uncounted lunch quietly adds up across a week. Because both the shift and its break are held in minutes, nothing about the subtraction depends on how a time was typed: 24-hour or 12-hour with am/pm, the row resolves to the same worked minutes either way.

Gross pay is computed from minutes, not rounded hours

If you add an hourly rate, the optional pay figure is computed from the exact worked minutes, not from the decimal hours shown on screen — and the distinction is worth whole cents. Take a fictional single day of 505 worked minutes at a fictional rate of 27 an hour. The displayed decimal hours for that day round to 8.42; multiplying that rounded figure by 27 would give 227.34. Multiplying the exact minutes instead — 505 ÷ 60 × 27 — gives 227.25, a difference of 0.09. The calculator always uses the exact-minutes figure, so the pay never inherits a rounding error from the hours display; only the final amount is rounded, to cents, for presentation. Applied to the fictional week above, a rate of 21 an hour turns 34.75 hours into 729.75 gross.

What the pay figure is — and isn't

The pay figure is gross: exact worked time multiplied by the rate you enter, before any taxes, withholdings, or deductions, and with no overtime premium applied. Every hour is paid at the single rate you supply, with no premium applied to any portion of the week — an overtime premium above some threshold is jurisdiction-specific and is not built into this total. If you need to split regular and premium hours, the overtime calculator multiplies an overtime block by an editable multiplier, and the salary conversions and overtime pay guide works the conversion and premium arithmetic end to end on fictional inputs. This page stops at the straight gross total for the hours as entered.

Where this calculation stops

This page implements one general definition: worked time is end minus start minus the unpaid break, summed across the week in minutes. As the methodology page puts it, specific domains — "tax rules, regulated interest calculations, jurisdiction-specific rounding of currency — often impose their own conventions that a generic tool does not know." A time card is exactly such a place. A payroll system may round each punch or each day to a particular increment, apply grace periods around a scheduled start, or define the workday boundary in its own way; this calculator does none of that. It performs the plain arithmetic on the times you type and leaves every policy decision to you and the rules that govern your work.

Two further limits are worth stating plainly. The figures on screen are a cleanly rounded presentation of a more precise internal value — hours are shown to two decimal places and pay to cents — so for chained work the methodology's advice applies: prefer doing the whole calculation in one pass rather than re-keying a rounded figure into the next step. And a correct total is still only as right as the punches you enter; the tool checks that each row is arithmetically valid, not that it matches what actually happened at work.

Frequently asked questions

Do I have to fill in every day?

No — leave non-working days empty and they are skipped. A row only counts once it has both a start and an end time.

How do overnight shifts work on a time card?

Enter the shift on the day it starts. An end time at or before the start time is treated as crossing midnight, so 22:00 to 6:00 records 8 hours on that row. Identical start and end times therefore count as a full 24-hour shift, and the result row says so explicitly in case it was a typo.

Is the pay figure my take-home amount?

No — it is gross pay: the exact worked time (total minutes ÷ 60) × the rate you entered, rounded to cents only for display, before any taxes or deductions, and without overtime multipliers. Check overtime rules for your jurisdiction separately.

What time formats are accepted?

Both 24-hour (17:45) and 12-hour with am/pm (5:45 pm). Breaks are entered in minutes.

Why are the days summed in minutes instead of adding up the decimal hours?

Rounding each day to two decimal places and then adding lets a small error accumulate once per day. The calculator keeps every day in whole minutes and converts to hours only once, at the end. The same reasoning governs the pay figure: in the fictional 505-minute day at 27 an hour, pay from exact minutes is 227.25, while multiplying the rounded 8.42 decimal hours first gives 227.34 — off by 0.09.

What happens if the break is longer than the shift?

The row is rejected with "The break is longer than the shift itself." rather than reporting negative time. A break must be a whole number of minutes and no longer than the shift it is taken from; a blank break field is read as zero.

How do I write 7 hours 45 minutes as a decimal?

Divide the minutes by 60: forty-five minutes is three-quarters of sixty, so 7 h 45 min is 7.75 decimal hours, not 7.45. The calculator shows the decimal form beside hours-and-minutes so it can be copied on its own as a bare number.

Does the total include an overtime premium past some threshold?

No. Every hour is paid at the single rate you enter, so the pay figure is a straight gross amount with no premium. Overtime thresholds and multipliers are jurisdiction-specific and are not applied here; a separate overtime calculator handles a premium block at an editable multiplier.

For how a gross figure converts across pay periods, and how an overtime premium is computed from an editable multiplier, see the salary conversions and overtime pay guide, or browse the full set of explainers in the guides index.

Everything is processed locally in your browser and never transmitted — no timesheet data is stored. See the methodology page.