Revenue Per Labor Hour: A Coffee Shop Benchmark
Mark, founder of Parly·July 24, 2026·6 min read
What revenue per labor hour actually measures
It is 2:40 on a Tuesday. Two baristas are on the floor, one of them restocking cups, and in the last forty minutes you have rung up four drinks. Nobody is doing anything wrong. You are simply paying two people to stand in a quiet room. That feeling has a number, and the number is revenue per labor hour.
Revenue per labor hour is the sales a stretch of time brought in divided by the paid labor hours it took to bring them in. That is the whole definition. Ring up $420 in an hour with three people on the clock and you did $140 per labor hour. Ring up $95 in an hour with two people on the clock and you did about $47. It folds two things you usually look at separately, what came in and what you spent to staff it, into one figure you can compare across any slice of the day.
That is why owners reach for it. It travels. A slow morning and a packed Saturday are not comparable in raw dollars, but they are comparable in dollars per labor hour, because the metric already accounts for how many people you had on. It is the single labor number you can act on without pulling three reports first.
Then you go looking for the number you are supposed to hit, and the trouble starts.
The coffee shop benchmark you will find is folklore
Search for the target and you get a different answer on every page. One restaurant metrics guide says an SPLH over $120 is considered excellent for most restaurants (accessed July 2026). Elsewhere the figures get thrown around with no shop behind them: one page gestures at a range somewhere around $40 to $60, the next calls the floor something like $45, another swears the bar sits closer to $100. Treat those as illustrations of the spread, not numbers anyone measured. Earlier writing here used a $40 to $60 starting range as a rough frame, and a separate post assumed a $58 average to make its math work. Same metric, and the "right" answer spans roughly threefold depending on whose blog you opened last.
None of these pages shows its work. None tells you whether the number came from a counter-service cafe or a full-service kitchen with a bar tab, from a morning rush or a dead afternoon, from one shop or an average of a thousand. A single figure with no provenance and no concept attached is not a benchmark. It is folklore that got repeated until it sounded official.
Here is the tell. The one labor number in this space that actually is measured and sourced is a different number in a different unit. The National Restaurant Association's 2025 Operations Data Abstract, built from more than 900 operators, puts limited-service labor cost at a median of 31.7 percent of sales in 2024, with profitable operators at 30.0 percent (accessed July 2026). Notice what that is: a ratio someone counted, not a dollars-per-hour target someone remembered. Institutions publish labor as a percent of sales because that is what they can measure across many shops. The tidy RPLH target is the one nobody stands behind, which is exactly the one that circulates.
So stop hunting for the number. Nobody has measured a cafe-specific revenue per labor hour you can trust, and even if they had, it would be the wrong tool.
Why a single number hides the two hours that cost you
Say you compute your own average and it comes out to $85 per labor hour across the day. That looks healthy against every folkloric target above. It is also nearly useless, because it is an average, and the average is where your two most expensive hours go to hide.
Walk the same day back out into its parts (these are illustrative, run yours on real hours). Your 8 to 9 AM rush does $420 with three on the floor: $140 per labor hour, and honestly two of those people are underwater, the line is out the door, drinks are lagging, and tips per transaction slip because nobody has time to be nice. Your 2 to 4 PM stretch does $95 an hour with two on the floor: about $47 per labor hour, one of them on their phone. Blend the whole day and you get $85, a number that reports "fine" while describing neither hour that was actually happening.
That $85 is the number the folklore invites you to chase, and chasing it fixes nothing. The overstaffed afternoon is not an average problem, it is a specific two hours you are paying for that the traffic does not earn. The slammed rush is not an average problem either, it is a specific hour where the gap between what you scheduled and what walked in is costing you speed and tips. The whole-day average papers over both at once, which is the same trap that hides labor cost between the schedule and the timecards. One figure is the wrong altitude. You need to see the day.
Read it as a grid: day of week against hour
The honest read of revenue per labor hour is not a number. It is a grid.
Put the days of the week down the side, Monday through Sunday. Put your operating hours across the top. In each cell, the revenue per labor hour for that specific slot: that hour, that weekday, sales divided by the people you actually had on. Now Tuesday 2 PM and Saturday 2 PM are separate cells, because they are separate problems. Now the Saturday morning peak that a copy-paste schedule understaffs shows up as a scorching cell right next to a Tuesday afternoon that has gone cold. The two hours that cost you money stop hiding inside the day's average and light up on their own.
You do not have to build the grid by hand. Your Square sales already carry a timestamp on every transaction, and your Square Labor timecards already carry who was clocked in for every hour. Join the two and every cell fills itself. This is one of the reads Parly shows: a day-of-week by hour revenue-per-labor-hour grid, computed from your Square sales against your Square Labor timecards, so you can see which slots earn their staffing and which do not.
One honesty line, because it matters. Parly shows you the grid. It does not build your schedule, it does not run your payroll, it does not manage your team, and it will never tell you to send someone home. It is an instrument, not a manager. You read the cold cells and the hot ones, and every decision that follows, whether to stagger a start time, whether the Saturday rush needs a fourth person, whether the Tuesday afternoon can run leaner, stays yours. The grid makes the staffing conversation a data conversation instead of a gut one. It does not have the conversation for you.
Compute your own this week
You can build a rough version before your next order without any tool at all.
First, pull four weeks of Square sales grouped by hour and by day of week. Four weeks smooths out the one freak Saturday without burying a real pattern. Second, pull the matching labor hours from Square Labor for the same slots, the actual clocked hours, not the scheduled ones, because the gap between them is part of what you are trying to see. Third, divide sales by labor hours in each slot and drop the result into a seven-row grid. You now have your own revenue per labor hour, hour by hour, weekday by weekday, measured instead of remembered.
Then read four cells, not the whole thing. Find your two coldest afternoon hours, the ones where the number craters, and find your hottest rush hour, where it spikes so high the service is clearly suffering. Those three or four cells are where the money and the strain actually live. Everything in the healthy middle can wait.
Do not average them back together. The average is the number that lied to you in the first place. The point of the grid is that it refuses to average, and that refusal is what makes it worth building.
Build one week's grid for your slowest afternoon and your Saturday rush, read those four cells, and you will know more about your labor than any benchmark on the internet was ever going to tell you.