All posts
TeamsOvertimeShift schedulingWorkforce managementTime tracking

What counts as overtime? Ask the shift, not the clock

Overtime is work done outside the schedule. Many tools guess that schedule, so they miss real overtime or invent it. How to measure it against the actual shift, and what changes when you do.

TO
The TimerOS Team
Vezoft
7 min read

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 schedule decides what counts as overtime.

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.

Figure 1 · The same activity, two labels
Inside the shiftOutside the shift
WorkingProductive — counts toward worked timeOvertime — counts toward worked time
Short pause / no inputIdle — tracked, not countedOff-work — dropped entirely
Longer or declared breakBreak — tracked, not countedOff-work — dropped entirely
The work itself is the same on both sides of the shift edge. Only its label changes, and whether it counts toward worked time.

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.

Figure 2 · One person, one day
8hworked
Worked hours · one day
Regular — productive, inside the 09:00–17:00 shift81%
Overtime — productive, after 17:0019%
Illustrative figures, not customer data. A 09:00–17:00 shift with work continuing past it. Worked time is the sum of regular and overtime; idle time outside the shift is not shown because it is never counted.

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.

Figure 3 · Where the invisible overtime hides
Overtime hours logged in a weekh
3
8
6
9
Day shiftEarly startSplit shiftNight shift
Illustrative. A week of overtime by person under schedule-aware tracking. Under a flat 9-to-5 assumption both highlighted rows would be wrong: the early starter’s late hours fall inside 9-to-5 and vanish, and the whole night shift counts as overtime, burying the real extra hours.

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.

One thing this is not
Splitting hours into regular and overtime is a measurement. It is not the same as applying your jurisdiction’s overtime pay rules: the multipliers, daily or weekly thresholds and consent requirements that differ by country and contract. Get the hours right first. Every pay rule needs them as input, and a tool that guesses the schedule cannot produce them. What your local law does with those hours is a separate decision, and TimerOS deliberately leaves it to you.

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.
Figure 4 · What the split needs from you
0
time states, one of them overtime
0
thing to define: the shift window
0
end-of-week timesheets to reconcile
Once a shift is assigned, the regular-versus-overtime split is automatic for every tracked day.
Start with one schedule
You do not need to model your whole workforce to see the difference. Put one real shift on one person for a week, then look at how their days split: regular hours, overtime that used to be invisible, and off-shift pauses that should never have counted. Download TimerOS for Windows or start a free trial.

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.

See it on your own machine

Try it free for 14 days: add a card at signup, and nothing is charged if you cancel before the trial ends. Install the desktop app and watch it classify your day.