Timesheet Calculator

Log clock-in/out times and breaks for a week, get decimal hours, overtime, and gross pay automatically. Free, private, with CSV/PDF export.

🌐 Español

DayClock inClock outBreak (min)HoursNotes
Monday0.00
Tuesday0.00
Wednesday0.00
Thursday0.00
Friday0.00
Saturday0.00
Sunday0.00
Total hours0.00
Regular hours0.00
Overtime hours (over 40h)0.00

🔒 Private by design: everything runs locally in your browser and never uploaded to any server.

Decimal hours, the unit payroll actually asks for

Nobody gets paid in hours and minutes. Payroll systems, invoices and employment contracts all work in decimal hours, which is why a shift written down as “8h 45m” has to become 8.75 before it is any use. That conversion is where hand-calculated timesheets go wrong, because minutes are base sixty and the calculator on your desk is not. Divide 45 by 60 and you get 0.75; type 8.45 by mistake and you have quietly given away eighteen minutes.

This page does that conversion for every row as you type, to two decimal places, and adds the week up for you. Enter times the way a clock shows them and read hours the way a payslip wants them.

Filling in the week

  1. Optionally set an Employee name and a Week starting date. Both are labels only and change no arithmetic. They print together on the PDF’s subtitle line; the CSV carries neither, and the downloaded file name is built from the week starting date alone, so the employee name never reaches a file name.
  2. Set Overtime after (hours/week) and the Overtime rate multiplier, which start at 40 and 1.5. Add an Hourly rate if you want pay figures as well as hours.
  3. For each day, enter Clock in, Clock out and any unpaid Break (min). The Hours cell updates on every keystroke, and there is a free-text notes field per row for things like “covered late shift”.
  4. Read the totals block underneath: total, regular and overtime hours, then regular, overtime and gross pay once a rate is set.
  5. Download the CSV or the printable PDF.

The midnight wrap, and the one case we refuse to guess

Night shifts are the reason most simple time card calculators are wrong. A security guard clocking in at 22:00 and out at 06:00 has worked eight hours, but subtract one time from the other and you get minus sixteen. Retail closing shifts, hospital nights, warehouse loading and hospitality all hit this routinely.

The rule here is simple and visible. If clock-out is later than clock-in, subtract normally. If clock-out is earlier, add a full day of minutes first, so 22:00 to 06:00 comes out at 480 minutes, minus a 30-minute break, giving 7.50 hours. The row displays an “overnight” badge when that branch runs, which is the part we cared about most while building it: a silent correction is indistinguishable from a bug when you are checking your own pay.

The interesting case is the third one. What should 09:00 to 09:00 mean? Arithmetically it could be a 24-hour shift, and treating it that way would be defensible. We treat it as zero instead, because in practice two identical times means a row someone tabbed through without finishing, or a copy-paste that grabbed the wrong cell, roughly always. A test pins that behaviour down so it cannot drift back to the more literal reading.

Why the totals add up in minutes, not hours

Every figure on the page is derived from whole minutes and only converted at the moment it is printed. This is not fussiness. Take seven shifts of eight hours twenty minutes each. Every row displays 8.33, because 500 minutes is 8.3333 hours rounded to two places, and adding those seven printed figures gives 58.31. Summing the same week as 3,500 minutes and converting once gives 58.33. Rounding first has quietly eaten 0.02 hours, a little over a minute of unpaid work, out of a single week; repeat that across a month of overtime shifts and the drift stops being rounding and starts being money. The same discipline applies to pay, which is computed from minute totals rather than from the rounded hours you can see.

Overtime after 40 hours is a default, not a rule

The 40-hour weekly threshold with a 1.5 multiplier is the most widely recognised convention, so it is what the page opens on. It is not law everywhere, and it is not the only shape overtime takes. Some places count daily hours, some use a different multiplier past a second threshold, plenty of contracts differ from the statutory minimum, and salaried roles may have no overtime at all. Both fields are editable precisely because the default will be wrong for some readers, and neither this page nor any generic calculator can tell you which rules bind your situation.

Once your total is settled, Invoice Generator turns it into a billable line item, and Days Between Dates helps when the pay period boundaries themselves need working out.

Two exports, two readers, and where the draft lives

The CSV exists for spreadsheets and payroll imports. It is RFC 4180 quoted with the same field escaping our JSON to CSV converter uses, so a note containing a comma or a quotation mark survives intact, and it ends with a small totals block below the day rows.

The PDF exists for humans and filing cabinets. It is one A4 page with a heading, your name and week starting line if you set them, a ruled five-column table of the seven days, and a right-aligned summary with gross pay in bold. It is built to be printed, signed and handed over.

Both files are assembled inside the tab from data that never travelled anywhere, and both are named from your week starting date when you set one. That is worth spelling out for this particular tool, because a timesheet is a record of exactly who worked which hours for how much money, which is not the sort of thing that ought to sit on a stranger’s server to save you a subtraction.

See it in action

Screenshot of the Timesheet Calculator tool with a weekly timesheet with a row per day for clock in, clock out, break minutes and notes, totalling hours against an overtime threshold and multiplier, with an optional hourly rate for gross pay
Timesheet Calculator mid-process: a weekly timesheet with a row per day for clock in, clock out, break minutes and notes, totalling hours against an overtime threshold and multiplier, with an optional hourly rate for gross pay.
Diagram: where the work happens on a SysFenix page that has no file input at all: the tool arrives as ordinary JavaScript inside the page, works the answer out on your own device and renders it in place, so the upload, queue and server-side record a typical online tool needs never happen
Where the work happens on a SysFenix page that has no file input at all: the tool arrives as ordinary JavaScript inside the page, works the answer out on your own device and renders it in place, so the upload, queue and server-side record a typical online tool needs never happen.

Frequently asked questions

How does it know a shift ran past midnight?

It compares the two times. When clock-out is numerically earlier than clock-in (in at 22:00, out at 06:00), the shift is treated as having crossed midnight, so a full 24 hours is added before subtracting, giving 8 hours rather than a negative figure. An "overnight" badge appears on that row so you can see the rule fired rather than having to trust it.

I filled in both times but the row shows 0.00 hours. Why?

Two causes, both intentional. Identical clock-in and clock-out times are counted as no shift instead of a 24-hour day, because two matching times is nearly always a half-finished row rather than someone who genuinely worked round the clock. The other cause is a break at least as long as the shift itself, which is clamped to the shift length so the day lands on zero instead of going negative.

Can I set overtime after 8 hours a day instead of 40 a week?

Not directly. The threshold is a weekly one, adjustable anywhere from 0 to 168 hours, with the multiplier settable between 1 and 10. For a daily rule, the practical workaround is to run one day per sheet with the threshold set to 8, or to work out the daily split yourself and use this sheet for the weekly total. Check your own jurisdiction's rules before assuming any threshold, because they differ a lot.

What is in the CSV that the PDF leaves out?

The Notes column. The printable PDF is laid out as five columns (day, clock in, clock out, break, hours) so the table stays readable on one page, while the CSV carries your per-day notes as a sixth field with proper quoting, ready to open in a spreadsheet. Both files include the pay rows only when you have entered an hourly rate above zero.

Will my week still be here if I close the tab?

Yes. Every keystroke is written to a draft in this browser's own local storage, so reloading the page or coming back the next evening to log another shift finds your times, breaks, notes, rate and overtime settings intact. The draft never leaves the device, and the "Clear draft" button wipes it back to a blank Monday-to-Sunday week.

The pay figures show a dollar sign but I am not paid in dollars. Does that matter?

No, the arithmetic is currency-agnostic: hours multiplied by your rate, plus overtime hours multiplied by rate and multiplier. Enter your rate as a plain number in whatever currency you are actually paid and read the symbol as a stand-in for your own. Nothing in the calculation converts or assumes a currency.

Related tools