How to reduce labour costs without hurting service
A practical guide to demand-based scheduling, labour cost as a percentage of sales, overtime leakage and cross-training, with a worked restaurant example.
Cutting hours across the board is the fastest way to save money on paper and lose it in reality: slower service, lost sales and a burned-out team. Sustainable savings come from somewhere else entirely — matching staffing to demand band by band, knowing exactly what each scheduled hour costs, and closing the gaps where money leaks out unnoticed. This guide walks through that method step by step, including a fully worked numeric example.
What does a scheduled hour actually cost?
The number on the contract is not what an hour costs you. On top of gross pay sit employer social contributions, paid-leave accrual, night, Sunday or holiday supplements and, in many countries, mandatory insurance. The fully loaded cost per hour is always meaningfully higher than the gross hourly rate — and the honest way to find yours is to compute it from your own payroll, not to copy a figure from a blog post.
To compare schedules, work out an average fully loaded hourly rate per role: take the total employer cost of a normal month from payroll and divide it by the hours actually worked. Do this per role, because a shift covered by a supervisor does not cost the same as one covered by a junior, and a schedule that quietly swaps one for the other changes its price without changing its shape.
Once every role has a loaded rate, every draft schedule has a price before it is published. That single change — pricing schedules while you build them instead of discovering the cost in payroll weeks later — is the foundation for everything else in this guide.
How do you measure labour cost as a percentage of sales?
The formula is simple: total labour cost for a period, divided by sales for the same period, multiplied by 100. The useful part is the discipline around it. Compute it weekly and per site, include everything the employer actually pays (loaded rates, supplements, overtime premiums), and use forecast sales when planning but real sales when reviewing.
Resist the urge to chase someone else’s benchmark. The “right” percentage depends on your industry, your margins, your country’s employment costs and even your opening hours, so a target borrowed from a different business can push you into cuts that damage service. What matters is your own number, tracked consistently over time.
The power of the metric is in the trend and in week-to-week comparisons. Two weeks with similar revenue but different labour percentages are a free experiment: something about how you scheduled them was different, and finding out what is usually worth thirty minutes of anyone’s time.
Why schedule by demand band instead of by day?
A day-level view hides almost everything that matters. Demand does not arrive in days; it arrives in bands — a lunch rush, a dead mid-afternoon, a dinner peak, a delivery window. If you only know that Tuesday needs “about six people”, you will inevitably pay for six people during hours when two would do, and struggle with six when eight were needed.
Build coverage targets per one- or two-hour band and per role, using whatever demand signal you already have: sales by hour from the till, bookings, appointment calendars, footfall or ticket counts. Even four weeks of hour-level history beats intuition, because intuition remembers the painful peaks and forgets the quiet slack.
Then let the schedule follow the bands: shorter shifts, staggered start times, split responsibilities. This is where tooling honestly helps — ShiftCal’s auto-scheduler, for example, works from coverage targets per band and fully loaded cost, so the draft it proposes is already shaped around demand rather than around habit.
A worked example: one week in a restaurant
The numbers that follow are illustrative — rounded so the arithmetic stays visible, in euros but identical in any currency. Imagine a restaurant with weekly sales of €21,000. The current schedule contains 380 staffed hours at an average fully loaded rate of €14 per hour: €5,320 of labour, or 25.3% of sales.
A band-by-band look at four weeks of hourly sales shows two patterns. From Monday to Thursday, between 15:30 and 18:30, four people are on the floor for a handful of covers. On Friday and Saturday, between 20:00 and 23:00, five people are visibly struggling, tables are being turned away, and roughly six hours of overtime are being paid at a premium to patch the gap.
The corrected schedule removes 24 hours from the dead afternoon bands (saving €336) and adds 9 planned hours at the weekend peak (costing €126), which also eliminates the overtime premium there. The result: 365 hours and €5,110 of labour, or 24.3% of sales — about €210 saved per week, roughly €10,900 over a year, while service actually improved at the exact moments the revenue is made.
Notice where the saving came from. Nobody worked harder and no busy hour was cut; the restaurant simply stopped paying for presence that nobody needed and moved part of it to where it was desperately missed. Every figure here is invented for clarity — the method is what transfers to your business.
Overstaffing vs understaffing: which one costs more?
Overstaffing has a visible, linear cost: idle hours multiplied by the loaded rate. Understaffing has an invisible, non-linear one: lost sales, longer waits, worse reviews, exhausted staff, higher turnover and the overtime you pay later to compensate. One appears on a report; the other appears in three different places months apart.
Because only one of the two is easy to see, organisations under cost pressure systematically over-correct towards cuts — and then pay for it in the invisible column. Treat both as real costs, even if only one of them is easy to print.
A practical rule: cut confidently in bands where several weeks of demand data show persistent slack, and be deliberately conservative at the peaks that generate most of your revenue. Asymmetry is the point — the downside of one extra person at the peak is small, while the downside of one missing person there is not.
Where does overtime leak from?
Overtime rarely arrives as one big decision; it leaks. Shifts drift past their scheduled end because nobody watches clock-outs. Absences get covered by whoever answers the phone first, who happens to be near their weekly limit. The same person sits close to their contracted hours every single week, so any small incident tips them into premium-rate hours.
The fix belongs at planning time, not at payroll time. While building the schedule you should be able to see projected hours per person against their contract, with a warning before publishing when someone is close to the line. When overtime only shows up in payroll, it is a receipt, not a decision.
It also pays to compare clocked time against scheduled time. If one particular shift consistently runs fifteen minutes long, that is not an individual problem but a process one — closing simply takes longer than the schedule admits — and the cheap fix is to change the plan, not to argue with the people.
How does cross-training make schedules cheaper?
Narrow skills force overstaffing. If only one person can run the till, the espresso machine or the reception desk, you must schedule that person across the entire coverage window even when demand justifies only part of it — and schedule someone else for everything they cannot do.
Cross-training gives the schedule options. In a quiet band one versatile person covers two roles; at the peak, specialists concentrate where they are strongest. To make this work in practice you need an explicit record of who is qualified for what, so schedules — human or automatic — never assign a role to someone who cannot actually perform it.
Treat cross-training as an investment with a payroll payoff. Start with the two or three role pairs that most often force you to add an extra person, and you gain a second benefit for free: resilience, because a sick day no longer takes a whole capability offline.
Measure after every schedule cycle
Every published schedule is an experiment, and the results arrive a week later. After each cycle, compare planned against actual: hours, cost, sales, where overtime appeared, and which bands ran over- or under-covered. Thirty minutes weekly beats a deep quarterly post-mortem, because small corrections compound and memories are still fresh.
Keep a short log of what you changed and what happened — “moved one afternoon shift to Friday evening; waits went down, cost flat” is enough. Within a couple of months the log becomes your own playbook, grounded in your data rather than anyone’s benchmark.
This loop is where software earns its keep: ShiftCal shows labour cost against the schedule while you build it and produces payroll-ready exports afterwards, so the plan-versus-actual comparison is a glance instead of a spreadsheet session — and it is free for teams of up to five employees, which makes trying the loop cheap.
Key takeaway
Sustainable labour-cost reduction is not a cutting exercise but a matching exercise: price every hour, plan to demand bands, protect the peaks, close overtime leaks, widen skills and measure every cycle. The money is in the mismatch.
Put this guide to work in your operation
ShiftCal connects rosters, clock-in, absences, budgets, payroll, working-time records and the employee app so these rules do not live in scattered documents.
Start freePablo Almancio
Founder of ShiftCal
Building ShiftCal — AI-powered employee scheduling for shift teams.
LinkedIn