Overtime is work done outside the schedule. That sounds simple until you ask a tracking tool where the schedule is. Many have no idea. Some assume a 9-to-5; others never ask and count every hour the same. For anyone with a real schedule both approaches are wrong, and both cost somebody money.
Put the overtime line in the wrong place and you get one of two errors. Draw it too late, or not at all, and real overtime disappears: people work past their hours, nothing records it, and so nobody notices it, pays it or fixes it. Draw it too early and ordinary hours get relabelled as overtime, which inflates payroll and rewards padding. The fix is to stop guessing and take the line from the actual shift.
Only one question matters: “is this outside the hours this person was scheduled to work?”
The line comes from the schedule
A shift is a time window: a start and an end time for one person on one day. Once that window exists, labelling time is mechanical: the same activity gets a different label depending on which side of the shift edge it falls on. Work inside the window is regular time; work outside it is overtime. Pauses follow the same rule.
Two rules follow from the table. First, your worked-time total is productive plus overtime: idle and break time inside the shift are recorded so the day is shown accurately, but they do not add to the total. Second, pauses outside the shift are dropped entirely: nobody should be credited or penalised for pausing on their own time.
One day, split correctly
Take someone on a 09:00–17:00 shift who ends up working until about seven in the evening. Nobody needs to tell the tool they stayed late. The shift already marks the edge, so all actual work after 17:00 becomes overtime, and any idle time after 17:00 is dropped.
The 1.5 hours of overtime come straight from the recorded time: the work was done outside the window the schedule sets. Nothing was estimated or reconstructed from memory, so the number is solid enough to act on.
Why an assumed 9-to-5 fails so often
A fixed 9-to-5 only works for people who actually work 9-to-5. Once you have shift workers, part-timers, split schedules or anyone in another country, “after 5pm means overtime” no longer matches reality. The error is not spread evenly either. It lands on people whose real hours start at 6am or run overnight.
The two highlighted rows are the people a clock-based rule gets wrong. Both really worked those extra hours. Under a 9-to-5 assumption the early starter’s overtime vanishes, and the night worker’s real extra hours are buried in a week of shifts wrongly counted as overtime. That is how miscounted overtime turns into a burnout problem and a fairness problem long before anyone sees it in payroll.
The edge cases a real schedule handles
No shift does not mean 9-to-5
The default that matters most is what happens when there is no shift at all. A tool that invents a 09:00–18:00 day for an unscheduled worker will silently swallow their hours. The fair default is the opposite: once a workspace uses shifts, work on a day with no shift falls outside any window, so it counts as overtime.
Overnight shifts are just a different window
If overtime is defined by the time of day, a 22:00 to 06:00 shift makes no sense: half of it is “after 5pm” and half is “before 9am”. If overtime is defined by the window, an overnight shift is not a special case. It is one continuous span like any other, and work inside it is regular whatever the wall clock says.
The window follows the person’s timezone
A shift edge only means something in a fixed timezone. Measure it against whatever the computer clock says, and the window moves as soon as someone changes their system time. That is both a bug and an opening for tampering. The window has to be tied to the person’s assigned timezone so the edge stays in place.
How TimerOS draws the line
The TimerOS tracker is built on this model. Here is what it does, and which plan each part needs.
- Shifts define the window. You build shift templates (start and end times, optional breaks, overnight shifts) and assign them to dates. The desktop tracker then labels productive time inside the window as regular and outside it as overtime. Idle and break time outside the window are dropped as off-work. Shifts and the team schedule are available on Startup and up.
- No shifts at all means everything is regular time. On the Freelancer plan, or in any workspace without shifts, there is no window to measure against, so productive time stays regular. A solo user does not accidentally build up “overtime” against a schedule that does not exist.
- The window is tied to a timezone. Shift edges are checked against each person’s assigned timezone, not their computer clock, so changing the system time does not move the line.
- The hours are recorded as they happen. The Windows desktop app records them while you work, classified on your own machine, with no screenshots. Nobody has to fill in an overtime form at the end of the week. The full state model is in the time-states documentation.
Overtime is not a hard number to get right. It goes wrong when it is measured against a convenient guess about when the day ends. Draw the line where the shift really is, and both expensive mistakes stop on their own: overtime you never paid, and ordinary hours paid as overtime.