Runs entirely in your browser — nothing you enter is stored or sent anywhere.
Updated 5 August 2026
Every row is its own shift, which is what makes this a timesheet
Per day
worked = (clock out − clock in) − break
Clock-out at or before clock-in is treated as an overnight shift, adding a day first.
Per period
total = Σ worked, across every day in the period
Shown as decimal hours and as hours:minutes, plus regular/overtime split and pay if you set a rate.
Nothing in the grid links one day to the next. Each row takes its own clock-in, its own clock-out and its own unpaid break, and produces its own worked total; the period figure is those independent day totals added together, nothing more. That independence is the entire point. A real fortnight is rarely ten identical shifts, and a tool that multiplies one shift by a day count is answering a different question — it is a shift-length calculator wearing a timesheet’s clothes. Here the arithmetic is done once per row and only then summed, which is what a payroll clerk does by hand and what makes the total defensible line by line.
The period control changes how many rows you get and nothing else: seven rows for a single week, fourteen for a biweekly pay period, thirty for roughly a month. Every row behaves identically at any length, and the period total adds up however many rows are on screen. Changing the start date only relabels the calendar dates down the left-hand side — the clock times and break minutes you have already entered stay exactly where you put them, so you can fix the dates before or after filling the grid without losing work.
Every row arrives pre-filled with a plain 9:00-to-17:00 day and a 30-minute unpaid break, so the grid always shows a complete, working example rather than an empty form. On the thirty-row month that starting state is a full month of identical office days, and the first job is to overwrite the rows that were not like that. Days off are the case to watch, because an out time at or before the in time is read as a shift crossing midnight: clearing both fields on a row does not zero it, it produces a full 24-hour span. The dependable fix is to give a non-working row an unpaid break large enough to cancel its span, and the ⏭ marker described below makes any row read that way visible at a glance.
The dates in the left column are plain calendar dates, and the times are plain wall-clock readings — not instants on a global timeline. That is why no time zone appears anywhere in this tool and no conversion is ever applied. A shift recorded as 9:00 to 17:00 is the same eight hours of clock wherever on earth it was worked, and re-expressing it in another zone would not change a single minute of pay. If the real question is where one specific instant lands in two places at once — a call, a deadline, a handover between offices — that is a different problem with a different tool, and the Time Zone Converter is the one to use.
A clock-out earlier than the clock-in is read as a shift crossing midnight
Night shifts break naive timesheet arithmetic, because 6:00 AM minus 10:00 PM is a negative number. This calculator resolves it without asking you to tick anything: when a row’s clock-out time falls at or before its clock-in time, the clock-out rolls forward one day before the subtraction happens. A row clocking in at 10:00 PM and out at 6:00 AM with a 30-minute unpaid break therefore reads as span = (6:00 AM the next day) − 10:00 PM = 8 hours, minus the break = 7 hours 30 minutes, which is 7.50 decimal hours.
Every row treated that way is flagged with a ⏭ marker beside its total. The marker is not decoration; it is the audit trail for the one assumption the tool makes on your behalf. Scan for it before you trust a period total. Next to a night shift it confirms the tool understood you. Next to a row you meant as an ordinary daytime shift it means a typo has quietly turned a short day into an almost-full one, which is the single most expensive mistake this grid can make — and the marker is why it takes a glance rather than a recount to catch.
The rule has a deliberate edge to it. Identical in and out times satisfy “at or before”, so a row reading 9:00 to 9:00 is a 24-hour span rather than a zero one, and it carries the marker too. A shift genuinely longer than 24 hours cannot be expressed in a single row at all and has to be split across the two calendar days it belongs to. Nothing in the grid caps how long a day may be, so a period total is only ever as sensible as the punches you feed it — the marker and your own reading of the day totals are the check, not the arithmetic.
The unpaid break comes off before the day is counted, and there is only one of it
The break field holds unpaid minutes, and they are subtracted from the clock-in-to-clock-out span before the day’s worked total exists. That ordering matters as soon as overtime is switched on: break minutes never reach the period total, so they can never be paid at the regular rate, and they can never be pushed up into the overtime band by a long day. A 30-minute unpaid lunch removes 30 minutes of paid time, which in decimal terms is 30 ÷ 60 = 0.50 hours off that day.
There is exactly one break box per row, and that is a real limitation rather than an oversight of the interface. A day with a lunch break and two unpaid tea breaks needs those minutes added together into a single number for that row. The grid neither knows nor cares how the time was split up — it only knows how many minutes to take off. If your employer treats short rest breaks as paid, leave them out of this field entirely: only unpaid time belongs here, and entering paid breaks will understate the hours you are owed.
The break can never drive a day negative. Enter more break minutes than the shift lasted and the row floors at zero worked, rather than producing a negative number that would silently eat into the rest of the period. The stepper moves in five-minute jumps for fast entry, which suits the way most breaks are actually scheduled. What the field cannot do is decide for you whether a given break was paid or unpaid — that is a policy question, and it belongs to your employer’s handbook rather than to a calculator.
7h 30m and 7.50 hours are the same shift in two payroll dialects
Every total on this page is shown twice — once as hours and minutes, once as decimal hours — because a timesheet has two audiences that read different formats. Hours:minutes is how a person reads a clock. Decimal hours is how most payroll and billing systems store time, because paying per fraction of an hour is a multiplication, and 7h 30m is not a number anything can multiply. The conversion is a single division: minutes worked ÷ 60, rounded to two decimal places.
The clean cases are the ones you meet most often. Thirty minutes is 30 ÷ 60 = 0.50, so 7h 30m becomes 7.50; fifteen minutes is 0.25, so 8h 15m becomes 8.25. Awkward minute counts do not divide so kindly — ten minutes is 10 ÷ 60 = 0.1666…, displayed as 0.17 — so the two-decimal figure is a rounding for display rather than the value the tool is working with. The period total is accumulated in whole minutes and converted once at the end, which is why rounding never compounds from row to row across a thirty-day grid.
The reason to care is that the two formats look interchangeable and are not. Typing 7.30 into a field that expects decimal hours claims seven hours and eighteen minutes, because 0.30 × 60 = 18 — twelve minutes short of the 7h 30m actually worked. Repeat that on five days of a week and 5 × 12 = 60 minutes of paid time, a full hour, disappears without anything looking wrong. Showing both numbers side by side on every total is the cheapest available guard against that particular slip, and it costs you nothing to check which format your payroll system wants before you submit anything.
Where a 41-hour week splits into 40 regular hours and one at time and a half
A five-day week, each day clocking in at 9:00 AM with a 30-minute unpaid lunch, clocking out at a different time each day:
Worked example: a five-day week with one long day
Day
In
Out
Break
Worked
Monday
9:00
5:30 PM
30 min
8h 0m
Tuesday
9:00
5:30 PM
30 min
8h 0m
Wednesday
9:00
7:00 PM
30 min
9h 30m
Thursday
9:00
5:30 PM
30 min
8h 0m
Friday
9:00
5:00 PM
30 min
7h 30m
Adding the five days: 8:00 + 8:00 + 9:30 + 8:00 + 7:30 = 41 hours 0 minutes, which is 41.00 decimal hours or 41 × 60 = 2,460 minutes. Only one day departed from the pattern, and that single long Wednesday is enough to carry the week across a 40-hour line. With overtime set to “after 40 hours” at a 1.5× multiplier, that is 40 hours regular plus 1 hour overtime. At a $20/hour rate: 40 × $20 = $800 regular, 1 × $20 × 1.5 = $30 overtime, for $830 total.
The interesting number is the one the split creates. That overtime hour is worth $30 instead of $20, so paying the same week flat would give 41 × $20 = $820 — a $10 difference produced by a single hour crossing a threshold. Averaged back across the whole week, $830 ÷ 41 = $20.24 an hour, which is the figure to quote when someone asks what the week actually earned per hour rather than what the rate says. That effective average climbs further above the base rate the deeper into the overtime band a period runs, which is why two weeks with the same total hours can be worth different amounts depending on how the hours were distributed.
Notice what this example did not need. No day crossed midnight, no day had two separate unpaid breaks, and every punch landed on a round quarter-hour. Real weeks are messier than that, and every one of those complications is resolved a row at a time — before any of this addition happens.
Forty hours in a week is one overtime rule, not the overtime rule
Overtime law and practice vary enormously — by country, by US state, by industry, and often by individual employer or union agreement. Rather than guess at a jurisdiction it cannot know, this calculator implements the one structure that is close to universal: a single hour threshold for the period, with everything above it paid at a multiplier. Forty hours and 1.5× are the familiar defaults because they mirror the structure of the US Fair Labor Standards Act’s federal standard, time-and-a-half after 40 hours in a workweek, but both boxes are yours to change and the multiplier will not drop below 1×.
The threshold applies to the whole period on screen, not to each week inside it — and that distinction is the one people get caught by. On the seven-row preset it is invisible, because the period is the week. On the fourteen-row and thirty-row presets it matters enormously: a 40-hour threshold left in place across a fortnight will treat almost the entire second week as overtime. Doubling the threshold to match the longer period is not the same rule either, because a fortnight in which one week ran long and the other ran short can finish under the doubled figure and report no overtime at all, even though the long week on its own would have crossed the line. If your overtime is genuinely reckoned week by week, run one week per calculation and add the results.
What the model does not do is anything shaped differently from a threshold and a multiplier. There is no day-based overtime: in the worked example above, Wednesday alone ran 9h 30m, and under a rule paying overtime after 8 hours in a single day that one day would produce 9.5 − 8 = 1.5 overtime hours — more than the whole week produces under the weekly 40-hour rule, from exactly the same timesheet. There are no double-time bands, no seventh-consecutive-day provisions, no exempt-versus-non-exempt test, and no knowledge of any particular statute. Leave overtime switched off if your situation does not fit a plain threshold and multiplier; a flat total you trust is worth more than a split you do not.
Either way, treat the split as a planning estimate rather than a paycheck. Your employer’s payroll system is the authority on what you are actually paid, and your local labor authority is the authority on what you are owed. This page is the arithmetic you could do by hand, done faster and shown in full.
What leaves the grid: a spreadsheet, a printout, and nothing else
Download Excel writes the whole period out as a spreadsheet file: every row’s date and weekday, its clock-in, clock-out and break minutes, and its worked time in both hours:minutes and decimal form, followed by the period totals and — if you entered an hourly rate — the regular, overtime and total pay. The formula the tool applied is written into the sheet beside the numbers, so the file explains itself to whoever opens it next. That matters more than it sounds, because a timesheet usually has to convince somebody.
Print opens your browser’s own print dialog with the current grid and totals, which is what you want when a signed paper copy is the thing being asked for. Copy puts a plain-text summary of the period on your clipboard for pasting into an email or a message, and Share hands that same summary to your device’s share sheet where one exists. For anything you intend to keep, edit, or forward, though, the spreadsheet is the better artifact: it stays a set of numbers rather than becoming a picture of them.
All of it is produced on your own machine. Every calculation on this page runs in your browser; nothing you type into the grid is transmitted to or stored on our servers, and the spreadsheet is assembled and saved by the browser itself rather than fetched from anywhere. The flip side of that is that nothing persists — reloading or closing the page starts a fresh grid with the default shifts back in place, so export or print whatever you need before you leave.
Rounded punches, employer policy, and the systems this cannot stand in for
This calculator uses the times you type, to the exact minute. A great many employers do not. Rounding each punch to the nearest 6, 10, or 15 minutes is a long-standing payroll practice, and under a nearest-15-minute rule any single punch can move by up to half that interval — 15 ÷ 2 = 7 minutes 30 seconds — in either direction. With a rounded clock-in and a rounded clock-out, that is up to a quarter of an hour a day of difference between what this grid shows and what the payroll system pays. Usually the swings cancel out over a period; occasionally they do not. If your workplace rounds, expect a small gap and know exactly where it came from.
The limitations are short to list and all point the same way: this is arithmetic, not policy. It does not know your employer’s rounding rule, its grace periods, its shift differentials, its paid-break policy, or its holiday and premium rates, and it does not know any jurisdiction’s statutory overtime law. It does not apply a daily overtime threshold, a double-time band, or an exempt-status test. It cannot tell you whether a particular break should have been paid, and it cannot tell you whether a shift you were asked to work was lawful.
It is also not a system of record. Nothing on this page submits, stores, or transmits anything to an employer, a payroll provider, or a government program. Where a mandated electronic timesheet or time-and-attendance system applies — California’s IHSS program and its EVV requirement being the one people most often arrive here looking for — that system still has to be completed on its own terms. This page is the scratch-pad you keep beside it while you work out what the hours come to, not a replacement for it, and hours calculated here have no standing until they are entered where they are actually required.
And it is not legal, tax, or payroll advice. It is an educational tool that performs the arithmetic you would otherwise do by hand or in a spreadsheet, and it shows its working so you can check every step. For anything that affects your real pay, benefits, or entitlements, take the figure to your employer’s payroll department first, and to your local labor authority if you have reason to think the payroll figure is wrong.
Sources and methodology
Hours calculation: plain arithmetic on clock times — (clock out − clock in) − unpaid break, per day, summed across the period. No external data source is needed for the arithmetic itself.
Overtime concept: the optional hours-threshold-and-multiplier model mirrors the structure of the US Fair Labor Standards Act’s federal overtime standard (time-and-a-half after 40 hours in a workweek) as the single most widely recognized reference point — used here as a configurable, generic model, not as US-specific legal guidance.
Time PercentageWork out what percentage one span of time is of another, or the percentage increase or decrease between an old and a new duration.
DaysCount days between two dates, add or subtract days, or count business days excluding weekends and holidays, with a full calendar breakdown.
Time ZoneConvert a date and time between EST, IST, GMT, UTC, CET, PST, or any IANA time zone, with live daylight-saving handling and a multi-zone world clock view.
Salary & Take-Home PayEstimate take-home pay with sourced payroll models for the US, India, UK, Canada, and Australia, plus a net-to-gross solver.
Freelancer vs EmployeeFind the freelance hourly or day rate needed to match a target employee salary, after tax, benefits, and unbillable time.
Income TaxEstimate income tax with custom progressive bands, a sourced US federal mode, refund or amount owed, and scenario comparison.
This calculator applies simple, transparent arithmetic to the clock times, breaks, and rate you enter — it does not implement your employer’s specific overtime, rounding, or payroll rules, or any particular jurisdiction’s overtime law, and it is not a substitute for a mandated timesheet or time-and-attendance system your employer or a program you’re enrolled in requires. Confirm anything that affects your actual pay against your employer’s payroll system or a qualified professional.
Published the Timesheet Calculator: a weekly, biweekly, or monthly clock-in/clock-out grid with unpaid-break deduction, automatic overnight-shift handling, decimal and hours:minutes totals, an optional overtime threshold, and an Excel export.
Added as the Time & Date category's next tool alongside the Time Zone Converter.
Add this calculator to your site
Responsive embed — and private: nothing your visitors type leaves their browser.