Work out last month's labour cost percentage first: wages, salaried pay and employer on-costs, divided by net takings. Then cost each rota change hour by hour, and test it against the break-even sales loss, not the percentage alone. AI can run the sums from weekly totals by role, but you check them in a spreadsheet.
A rota change can lower the percentage and still cost you money, and it can raise the percentage and make money. In the example below, dropping a second lunchtime server improves the percentage even when those lunches lose 20% of their sales, which turns a $124 weekly saving into a $52 loss. I quote no target percentage, because the right figure depends on how your restaurant is run.
Decide what labour cost and sales mean before you test anything
Labour cost percentage is labour cost divided by sales, times 100. The arithmetic is easy, and the arguments are about what goes into each half. Even the vendors differ: Toast's guide divides by total revenue before deductions, while most tills also report a net sales figure after discounts and comps, and the two give different percentages for the same week. Fix the definition once, write it at the top of the sheet and never change it during a test, because a changed definition moves the percentage more than any rota will.
- In the labour half: gross hourly wages including overtime, salaried managers' pay, and employer on-costs such as payroll taxes, pension contributions and holiday pay accrual. Your payroll provider or accountant can give you the on-cost percentage; the example uses 11%.
- Tips and service charge. Tips that pass straight to staff are not your cost. A service charge you distribute through payroll normally is. Pick one treatment and stay with it.
- Your own hours. If you work the floor or the pass unpaid, decide whether to cost those hours at a notional rate. Both answers are defensible, but they give different percentages.
- In the sales half: net sales after discounts and comps, excluding sales taxes and tips. Most tills have a "net sales" figure; use that.
- The same weeks. Align both halves by the week the work was done, Monday to Sunday, not by the date payroll was paid.
I will not quote a target. A table-service restaurant, a counter-service café and a bar-led venue have different right answers, and a number copied from elsewhere invites you to cut hours to meet it. Compare your own weeks and your own shifts.
Last month as a baseline: four weeks and four shifts
Build the baseline from three exports. Payroll gives gross pay by week and role, with a column for employer on-costs if your provider reports them. The rota system or timesheets give hours by role and shift. The till gives net sales by day and day-part, and covers if it records them. Put all three into one sheet with the same week-ending date on every row, and leave staff names out of it, since role-level totals are all the test needs. Four weeks is enough. Here is the weekly table for a 45-seat restaurant open Tuesday to Sunday (illustrative figures, with on-costs at 11% of hourly wages and salaried pay):
| Week | Net sales | Hourly wages | Salaried pay | On-costs (11%) | Total labour | Labour % |
|---|---|---|---|---|---|---|
| 1 | $22,800 | $5,790 | $900 | $736 | $7,426 | 32.6% |
| 2 | $23,900 | $5,880 | $900 | $746 | $7,526 | 31.5% |
| 3 | $24,300 | $5,940 | $900 | $752 | $7,592 | 31.2% |
| 4 | $22,900 | $5,810 | $900 | $738 | $7,448 | 32.5% |
| Month | $93,900 | $23,420 | $3,600 | $2,972 | $29,992 | 31.9% |
The weekly figure swings between 31.2% and 32.6% on its own, a range of 1.4 points. That matters. A rota change worth half a point will vanish inside that swing, so judge small changes on the shifts they touch, not on the weekly total. Shift-level numbers need one more table: sales per server hour for the shifts you might change.
| Shift | Average sales | Server hours | Sales per server hour |
|---|---|---|---|
| Tuesday lunch | $620 | 8 (2 servers, 4 hours) | $77.50 |
| Wednesday lunch | $640 | 8 | $80.00 |
| Friday dinner | $4,400 | 30 (5 servers, 6 hours) | $146.67 |
| Saturday dinner | $5,800 | 30 | $193.33 |
Two weekday lunches earn about half, or less, of what a weekend dinner earns per server hour, which is why they are the obvious first suspects. It does not prove they are overstaffed. It tells you where to look, and it is where the AI assistant will point as well. For building the rota from forecast covers rather than testing a change to one, see building a restaurant rota with AI demand forecasts.
Four distortions to correct before you trust the baseline
A baseline built on a distorted month gives a what-if that is wrong in the same direction. Check these four before you start.
- Unpaid hours. An owner-chef who works 50 hours a week unpaid hides $1,000 of labour at a notional $20 an hour. Add it and the weekly average of $7,498 on $23,475 of sales moves from 31.9% to 36.2%. Whether you include it or not, know the gap.
- Price changes. A 3% menu price rise lifts sales to about $24,180 and drops the percentage to 31.0% with no change to the rota. A falling percentage after a price rise is not a labour saving. The tutorial on testing a menu price rise dish by dish covers that side.
- Month boundaries and pay lag. A five-Friday month looks cheap on sales and a month that includes a payroll catch-up looks dear. Use four-week blocks aligned to the weeks worked.
- One-offs. Holiday pay paid out, a bonus, a training day, back pay. Strip them out of the baseline or note them beside the week they landed in.
Two rota changes, costed hour by hour with on-costs
Take the two changes the baseline points at. Change A removes the second server from Tuesday and Wednesday lunch, four hours each, so 8 server hours a week at $14: $112, or $124.32 with the 11% on-cost. Change B adds a runner on Friday and Saturday dinner, five hours each, so 10 hours at $12: $120, or $133.20 with on-costs. Apply each to the average week, with labour at $7,498 and sales at $23,475:
| Scenario | Weekly labour cost change | New weekly labour | Labour % at unchanged sales |
|---|---|---|---|
| Baseline | None | $7,498 | 31.9% |
| A: drop a lunch server | Down $124.32 | $7,374 | 31.4% |
| B: add a dinner runner | Up $133.20 | $7,631 | 32.5% |
| A and B together | Up $8.88 | $7,507 | 32.0% |
On this table A looks like a win and B looks like a loss. That reading is incomplete, and acting on it would be a mistake. Before any change goes near the live rota, check it against your staff contracts, minimum shift lengths, rest-break rules and any notice period for rota changes. The test below knows nothing about them, and neither does the AI. For the scheduling side, AI scheduling apps for restaurants covers split shifts, tips and swap rules.
The percentage can fall while profit does too: the break-even test
A ratio can improve because the top falls or because the bottom rises. A rota change affects both halves, because fewer staff can mean slower service, and slower service can mean lost sales. So test the change against profit. A lost dollar of sales costs you its gross profit, not the whole dollar. If food and drink cost 30% of sales, gross margin is 70%, and a labour saving is cancelled out when you lose saving divided by 0.70 in sales. An added cost is paid back when it brings in cost divided by 0.70 in extra sales.
For A, $124.32 divided by 0.70 is $177.60 of sales. The two lunches together average $1,260, so the break-even fall is 14.1%, or a floor of about $1,082 a week. For B, $133.20 divided by 0.70 is $190.29 of extra sales. With an average table spend of $95, that is two extra tables a week, one on each night. Now see what the percentage says in each case (illustrative):
| Case | Sales effect each week | Labour % | Profit effect each week |
|---|---|---|---|
| A, no loss | $0 | 31.4% | +$124 |
| A, lunches down 10% | Down $126 | 31.6% | +$36 |
| A, lunches down 14.1% | Down $178 | 31.7% | $0 |
| A, lunches down 20% | Down $252 | 31.8% | -$52 |
| B, no extra tables | $0 | 32.5% | -$133 |
| B, 2 extra tables | Up $190 | 32.2% | $0 |
| B, 4 extra tables | Up $380 | 32.0% | +$133 |
Read the third column against the fourth. In every row for A the labour percentage is below the 31.9% baseline, yet the last row loses $52 a week. In every row for B the percentage is at or above the baseline, yet the last row makes $133 a week. The percentage would have told you to do A and avoid B in all seven rows. Profit says: A pays only if the lunches hold above $1,082, and B pays only if the runner brings in at least two more tables. Use your own food and drink cost for the margin, and if you do not have one you trust, build it from a recipe costing spreadsheet first.
Pasting the numbers into ChatGPT or Claude, and what to fix
An assistant is useful for the first pass and for trying other scenarios quickly. Paste weekly totals and role-level figures only: no names, no individual rates. Claude reads CSV and XLSX uploads and ChatGPT can analyse spreadsheets, though on a free plan you should check the file and analysis limits, and a pasted text table works as well. If you use a personal account, look at the model-training switch in its privacy settings first. The prompt carries the definition, the numbers and exactly what you want back:
You are helping me test a rota change at a 45-seat restaurant open Tuesday to
Sunday. Use only the numbers below. Show every formula. Do not quote any
industry benchmark.
DEFINITION: labour cost % = (hourly wages + salaried pay + on-costs) / net sales.
On-costs are 11% of all wages and salary. Net sales exclude sales tax and tips.
LAST MONTH BY WEEK (net sales, hourly wages, salaried pay):
W1 22,800 / 5,790 / 900; W2 23,900 / 5,880 / 900;
W3 24,300 / 5,940 / 900; W4 22,900 / 5,810 / 900.
RATES: server $14 an hour, runner $12 an hour.
CHANGE A: remove one server at Tuesday and Wednesday lunch, 4 hours each.
CHANGE B: add one runner at Friday and Saturday dinner, 5 hours each.
GROSS MARGIN: 70%. Average table spend: $95.
Tuesday lunch sales average $620, Wednesday lunch $640.
Return: (1) the baseline labour % for the month and for each week; (2) the
weekly labour cost change for A and B including on-costs; (3) the new labour %
at unchanged sales; (4) for A, the fall in sales on the two lunches at which the
saving is cancelled by lost gross profit; for B, the extra tables a week needed
to cover its cost; (5) every assumption you made.
A typical first reply (illustrative) gets the baseline right at 31.9% and the weekly figures right too, and prices A and B at $124.32 and $133.20. It then goes wrong in three places:
- The break-even for A is 9.9%. It divided $124.32 by the $1,260 of lunch sales and treated every lost dollar of sales as a lost dollar of profit. A lost dollar costs you only the 70 cents of gross profit, so the right figure is 14.1%. The difference between 9.9% and 14.1% is the difference between a no and a probable yes.
- "Industry benchmarks for full-service restaurants are typically 28 to 35%." You told it not to, and it did. Delete the sentence. You cannot check where it came from, and it would anchor you.
- "Change A is recommended because it lowers the labour percentage." The recommendation rests on the ratio, which the break-even test just showed is the wrong guide. Strike it, and ask for the answer in dollars of weekly profit across a range of sales outcomes.
Ask for a second pass with the corrections and it will usually fix them. The point is not that the assistant is poor. It is that a confident, tidy reply invites you to skip the check. The next section keeps the check cheap.
Five spreadsheet lines that check the AI's sums
You do not need to rebuild the model. Check the five numbers that drive the decision, in a spare corner of your sheet:
Baseline labour % =SUM(F2:F5)/SUM(B2:B5) (total labour / total sales)
Weekly saving, change A =8*14*(1+0.11) gives 124.32
Weekly cost, change B =10*12*(1+0.11) gives 133.20
Break-even sales fall, A =124.32/0.70/(620+640) gives 14.1%
Extra tables for B =133.20/0.70/95 gives 2.0
If the assistant's figures disagree with these, the disagreement is the interesting part. Usually the model mixed up a rate, skipped the on-cost, or applied the margin the wrong way round. If everything matches, you can trust the rest of its output on the same inputs. The assistant is also good at the jobs a spreadsheet is not: ranking all your shifts by sales per labour hour, suggesting which two to test first and drafting the note to staff about a trial. To put the shift numbers in front of the team each day, see how to draft pre-shift meeting notes from POS data.
Letting the AI propose the next test, and draft the staff note
Once the first test is done, the assistant is useful for choosing the next one. Give it sales and total labour hours for each shift you could change, not the whole month, and ask it to rank them by sales per labour hour. Here are eight shifts (illustrative), with all roles included, and the instruction that follows:
Shift | Average sales | Labour hours, all roles
Tue lunch | 620 | 22
Wed lunch | 640 | 22
Thu lunch | 700 | 24
Tue dinner | 1,480 | 44
Wed dinner | 1,760 | 44
Thu dinner | 2,300 | 48
Fri dinner | 4,400 | 66
Sat dinner | 5,800 | 70
Rank these by sales per labour hour. Suggest three tests, lowest risk first. For each,
give the weekly saving at an average $14 an hour plus 11% on-costs, the break-even
sales fall at a 70% gross margin, and what could go wrong.
The ranking is simple division and usually comes back right, though you should still check it. Tuesday lunch comes out at $28.18 per labour hour, Wednesday lunch at $29.09, Thursday lunch at $29.17 and Tuesday dinner at $33.64, rising to $82.86 for Saturday dinner. Its suggestions are where you read carefully. A typical reply (illustrative) proposes closing Tuesday lunch altogether, cutting a Saturday dinner server, and starting the Tuesday to Thursday prep cook an hour later, with a weekly saving worked out for each. Two of those need correcting.
- "Close Tuesday lunch." The assistant cannot see who comes to it. A closure is a different decision from a staffing trial, because it removes the lunch regulars and your chance to win them back. Run the lighter test first.
- "Cut a Saturday dinner server." It picked Saturday because that shift has the most hours in total. Total hours are not productivity, and Saturday dinner earns the most per hour of any shift on the list. Reject the suggestion.
The third idea deserves a quick sum. Starting the prep cook an hour later on three days saves 3 hours at $15, which is $45, or $49.95 with on-costs. The break-even sales loss is $49.95 divided by 0.70, which is $71.36 a week. The risk is not walk-in sales but prep: if dishes are not ready at 11:30, you lose them at the pass. So the test for this change is whether lunch runs out of anything, not what the percentage does.
The assistant can also draft the note to the team. Give it the facts and tell it not to promise anything you have not decided. A typical draft (illustrative) reads:
Hi all, for the next four weeks we are trying one server instead of two on Tuesday and Wednesday lunch, to see whether we can keep service quick with a leaner team. Nobody's hours will be affected, and this is only a trial. We will look at sales, ticket times and your feedback every Friday and share what we find. If the first week is hard, tell [manager] straight away. Thanks, [your name]
"Nobody's hours will be affected" is the sentence to check. If the second server's four hours come off someone's contracted week, it is false, and a promise like that is worse than none. Speak to the people concerned before the note goes out, check your contracts and notice rules, and take advice where hours or pay change. Then correct or delete the sentence. The assistant drafted the tone; the decision and its consequences stay with you.
Running the change for four weeks with a control and a stop line
Run Change A alone for four weeks, then B in the next block. Two changes at once make a result impossible to read. Weather, school holidays and local events can move a lunch by 10% on their own, so keep a control: a similar shift you did not change. Thursday lunch, which averages $700, is the control here. Track the affected lunches, the control, and the gap between them (illustrative):
| Week | Tue and Wed lunch sales | Against $1,260 baseline | Thursday lunch (control) | Against $700 baseline | Gap attributable to the change |
|---|---|---|---|---|---|
| 1 | $1,235 | -2.0% | $690 | -1.4% | -0.6 points |
| 2 | $1,170 | -7.1% | $705 | +0.7% | -7.9 points |
| 3 | $1,150 | -8.7% | $680 | -2.9% | -5.9 points |
| 4 | $1,190 | -5.6% | $710 | +1.4% | -7.0 points |
The average attributable drop is 5.3 points, or about $67 of lunch sales a week. The profit effect is the $124.32 saving minus 70% of $67, which is roughly +$77 a week, well inside the 14.1% break-even. On those numbers you would keep the change. You would still read the reviews and ask the team about ticket times on those two lunches before settling, because a sales number can look fine while service quietly slips.
Agree the stop line in advance. Mine would be: revert if the affected lunches, after allowing for the control, fall more than 14.1% below baseline in two consecutive weeks, or if two reviews in the month mention slow lunch service. Write it on the sheet before the first week so the decision does not depend on how you feel on a bad Tuesday. If the test passes, make the new rota permanent, re-baseline after eight weeks and pick the next shift to test. For the covers side of the picture, the tutorial on forecasting covers shows how to anticipate which shifts will be busy, so you can staff for the week you are in rather than for last month.
Questions owners ask about labour cost and rota tests
What counts as labour cost in a restaurant?
Gross hourly wages including overtime, salaried managers' pay and employer on-costs such as payroll taxes, pension contributions and holiday pay accrual. Decide how to treat tips, a service charge and your own unpaid hours, write the choice at the top of your sheet and keep it fixed. Your payroll provider can tell you your on-cost rate.
What is a good labour cost percentage for a restaurant?
There is no single figure worth copying. The right level depends on whether you run table or counter service, how much bar income you have and how your rota is built. Compare against your own weeks and shifts instead, and judge any rota change by whether profit improves, not whether the percentage falls.
Can ChatGPT or Claude work out my labour cost percentage?
Yes, if you give them the numbers, and it is a good first pass for what-if scenarios. Paste weekly totals by role, never names or individual pay, ask them to show every formula and then check five of the figures in a spreadsheet. Delete any industry benchmark the reply quotes, because you cannot check where it came from.
How long should I trial a rota change?
Four weeks is a sensible minimum for a change to one or two shifts. Compare the affected shifts with a similar shift you did not change, so weather and local events do not fool you, and agree a stop line in advance, such as reverting if sales fall below the break-even figure two weeks running.
Further reads
- Free AI Shift Scheduling for Restaurants: Where Free Ends — What free scheduling tools allow before you pay.
- Restaurant Inventory Management With AI: Par Levels and Orders — The food-cost side of the same weekly numbers.
- AI KPIs for Small Businesses: 12 Metrics Worth Tracking — Which other numbers deserve a place on a weekly sheet.
- AI Software for Restaurants: POS-Built AI or an Add-On Tool? — Which till tools can report sales by day-part for you.
- Restaurant SOP Template: Opening and Closing Checklists With AI — Write down what a leaner shift must still cover.
- AI Food Insights Tool: Toast IQ, Square AI or a Spreadsheet? — Pull sales by day-part from your till.
- Toast IQ Team or Toast IQ Grow: Which Suits a Small Restaurant? — Toast IQ Team handles labour, Toast IQ Grow handles marketing. A break-even comparison for a small restaurant, and who should stay on the included Toast IQ.
- Cloud Kitchen Margins per Brand: Costing After Delivery Commission — Cost each virtual brand line by line after platform commission, packaging, promotions and refunds, and see which brand really earns its place in the kitchen.
- Hotel Staff Scheduling With AI: Front Desk, Housekeeping, Breakfast — A department-by-department rota method: occupancy sets the cover, hard rules limit the AI, and a checker sheet catches what its draft gets wrong.
- How to Price Ice Cream: Cost per Scoop and Menu Prices — Test real scoops per tub, cost every cone, sundae and pint, then set prices against a margin target worked out from your own overheads.
- Multi-Unit Franchisee: One Weekly AI Summary Across Locations — How a multi-unit franchise owner turns each store's POS export into one KPI sheet, an AI-written weekly summary, an exceptions list and a call sheet.
- Retail Staff Scheduling: Build a Rota From Hourly Till Sales With AI — A single-shop method: export timestamped sales, average them by weekday hour, set heads per hour, draft the rota with AI and check it.
- AI Automation for Restaurants: Back-of-House Jobs to Start With — Prep lists first, supplier order drafts second, kitchen rotas last: a ten-week rollout with the checks that keep each AI draft honest.
- AI Robots in a Restaurant: Are They Worth It for a Small Place? — Serving robots versus handheld and QR ordering for a small restaurant: what each removes, a walk audit with sums, and the lease-or-buy terms to demand.
- AI for Convenience Stores: A Weekly Routine for Reorders and Rotas — One weekly run-sheet for a convenience store: a reorder list from the till export, shelf prices against two rivals and a rota draft, each step approved by you.
- AI for Golf Course Management: Can It Plan Staffing Around Weather? — Export past rounds, add the weather, and let ChatGPT or Gemini turn each forecast into a weekly staffing sheet for the pro shop, starter, bar and range.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Toast's guide to restaurant labour cost percentage, for the formula and the cost lines it counts (checked October 2026); all figures, rates and on-cost percentages are illustrative examples for you to replace with your own payroll and POS numbers.