shiftledger.

The method, examples and boundaries

A week in minutes,
with the assumptions visible.

Shiftledger adds entered durations. It is useful for checking a personal weekly record, comparing a draft schedule or turning a list of start and end times into a consistent summary. It does not decide which time must be paid or what employment rules apply.

Each row belongs to its start-day

There are seven rows, Monday through Sunday, with one block per day. Check Worked to include the row. An unworked row contributes zero, and its retained values are ignored. Keeping an old time in an unchecked row therefore does not add a hidden shift.

Clock mode accepts an hours-and-minutes start, an end, and an explicit end-day offset. Same day means offset zero. Next day means add 1,440 minutes before subtracting the start. The tool does not guess an overnight shift when an end appears earlier than its start. That omission could otherwise turn a mistyped end into a very long block.

Clock elapsed minutes = end minutes + 1,440 × end-day offset − start minutes.

Net minutes = elapsed minutes − unpaid break minutes.

Weekly net minutes = the sum of the seven daily net-minute values.

Unpaid breaks must be whole minutes, nonnegative and no greater than the row's elapsed duration. This field removes time from the entered block. It does not infer a break requirement, decide whether a break is paid, or insert a missing break. Enter the duration you intend to exclude from this arithmetic.

Worked example: the default five-day week

Monday through Friday each run 09:00 to 17:00, same day. Each block has 480 elapsed minutes. Enter a 30-minute unpaid break for each day.

Each day's net is 480 − 30 = 450 minutes, which is 7h 30m or 7.5 decimal hours. Five such days total 2,250 net minutes = 37h 30m = 37.5 decimal hours.

The elapsed total is 2,400 minutes, and the excluded breaks total 150 minutes. If you optionally enter 24.60 AUD per hour, the straight multiplication is 2,250 × 24.60 ÷ 60 = 922.50 AUD. This is an entered-amount calculation, not a statement of pay owed.

Overnight work needs an explicit next-day end

A block starting Monday at 22:15 and ending Tuesday at 06:45 belongs to Monday's row. Select Next day (+1). Start minutes are 1,335 and end minutes are 405. Elapsed time is 405 + 1,440 − 1,335 = 510 minutes. With a 45-minute unpaid break, net time is 465 minutes, or 7h 45m, or 7.75 decimal hours.

At an entered hourly amount of 28.75, the exact multiplication is 465 × 28.75 ÷ 60 = 222.8125. Rounded to two decimal places, the result is 222.81 label units. Selecting Same day for those clock times instead produces an error because the resulting duration would be negative.

For identical start and end times, Same day describes a zero-minute block. Next day describes a full 1,440-minute block. The distinction is intentional. A worked zero-duration block needs a zero break. A block fully covered by an unpaid break also has zero net minutes and produces a notice. No positive duration is invented for either case.

Wall-clock time and actual elapsed time can differ

This calculator has no date, time-zone database or daylight-saving transition rules. Its clock mode subtracts the visible hour and minute values, plus the selected day offset. Across a clock change, that result can differ from actual elapsed time. It also cannot identify travel across time zones or infer which repeated clock time was intended.

For a record affected by those issues, select Actual elapsed minutes and enter a duration from an appropriate record. The field is the elapsed duration before subtracting the unpaid break. For example, if your record says 120 actual elapsed minutes and you intend to exclude a 15-minute unpaid break, the row has 105 net minutes, or 1h 45m. The calculator does not verify that the entered 120 minutes is correct.

Manual duration mode ignores the retained start, end and offset controls. It also has no positioned clock range. The tool can add the duration but cannot check whether it overlaps another row. A warning remains in the displayed summary and exports so that limitation stays attached to the result.

Overlap checks and the one-block boundary

Positive-duration clock rows are placed on consecutive day anchors. If Monday's clock block reaches into Tuesday and Tuesday's block starts before Monday's block ends, the ranges overlap and the total is rejected. Two ranges that meet at exactly the same minute are allowed. The overlap test uses elapsed ranges, even when an unpaid break could theoretically cover the overlap, because break placement has not been entered.

Only one block is available per start-day. For a split day such as 09:00–12:00 and 13:00–17:00, you can sum the two elapsed work blocks as 180 + 240 = 420 minutes and enter 420 in actual-duration mode with a zero break, provided no further unpaid time must be removed. Alternatively, a 09:00–17:00 clock block with a 60-minute unpaid gap also gives 420 net minutes. Do not enter 420 manual elapsed minutes and subtract that same 60-minute gap again.

Each row is limited to 0–1,440 elapsed minutes. This keeps a row within one day of elapsed duration. It is a computational scope limit, not a legal or recommended work schedule. Multiple blocks, multi-day blocks and adjacent-week reconciliation need a different record structure. In particular, a Sunday-start overnight block is included in full in this week's Sunday row, including its next-day portion. The following week's Monday is not available for overlap checking.

Exact minutes versus decimal-hour display

Hours and minutes are not written as a base-ten fraction. Thirty minutes is half an hour, so 7h 30m is 7.5 hours. Seventy-five minutes is 1h 15m, or 1.25 hours. Writing 7.30 as decimal hours means 7 hours plus 18 minutes, which describes a different duration.

Shiftledger stores each duration as an integer number of minutes. Decimal hours are net minutes divided by 60, displayed with up to six decimal places. One minute therefore displays as 0.016667 hours. This is a rounded display only: the optional amount calculation uses the original exact minute, rather than multiplying a rate by 0.016667. CSV rows include both exact net minutes and the decimal display.

Entered amounts and rounding you can audit

The optional amount accepts a nonnegative number with up to four decimal places. A blank field means no amount is calculated; zero is a valid entered amount. The maximum is 1,000,000 label units per hour. Enter plain decimal notation without commas or scientific notation. The amount label is a short piece of text such as AUD, not a request to convert currency.

The entered rate is retained exactly as a four-decimal fixed-point number. Amounts multiply net whole minutes by that rate, divide by 60 and round half up to two decimal places. A fifth decimal in the entered hourly amount is rejected rather than silently discarded. The weekly amount rounds once from the exact weekly minute total. Each daily amount rounds separately, so their sum can differ from that weekly amount.

Two one-minute days at 25.50 per hour: each daily exact amount is 25.50 ÷ 60 = 0.425, which rounds to 0.43. The displayed daily amounts sum to 0.86. The weekly exact calculation uses two minutes: 2 × 25.50 ÷ 60 = 0.85. The weekly result is therefore 0.85, and the summary explains the difference.

A four-decimal entered rate: two hours at 10.1234 per hour give 20.2468, which rounds to 20.25. The tool does not first round the entered rate to 10.12. Two independently rounded one-hour daily amounts would instead sum to 20.24.

These are arithmetic conventions for this tool. They do not determine the correct rounding, rates, allowances, overtime, deductions, tax, superannuation, entitlement or payroll treatment for a real arrangement. No such rules are encoded here.

Save a summary with its limits intact

Calculate a valid week before copying or downloading. The text summary records each day's source, elapsed time, unpaid break, exact net minutes and hour display. CSV includes the same numerical fields in separate columns, plus the entered rate, rounding explanation and notices. Both files are generated locally in your browser; they are not uploaded by the calculator.

Any input or mode change invalidates the displayed result and disables all export buttons until the week is calculated again. Restore example resets the native form defaults: Monday through Friday 09:00–17:00 with 30-minute breaks, Saturday and Sunday unworked, and the optional hourly amount blank. It clears the old summary. Copying may use your browser's clipboard permission; if unavailable, a selectable text field provides the same summary.

Review the recorded durations and assumptions before relying on an exported file. The calculator has no persistent timesheet storage or automatic clock-in feature. Refreshing or closing the page can discard entries. Return to Shiftledger, or use the shared contact inbox to report a reproducible calculation issue.