🍽️ Restaurants & bars — Sector insight

The two-point gap: where a restaurant group's margin really goes

In a flat market, margin is found, not grown. The numbers that decide multi-site restaurant profitability in 2026 — theoretical vs actual food cost, prime cost, delivery contribution and site EBITDA — and how to get all of them onto one dashboard your GMs and your board both trust.

Executive summary

🍽️

Restaurants & bars at DataHexis

"Covers per service, food cost %, labour ratios, menu engineering, and booking analytics." This article goes one level deeper: which of those numbers actually moves EBITDA, and why most groups can't see it yet.

— from the Industries section of the DataHexis website

Ask a restaurant group how trading is going and you'll get a sales number. Ask where last month's margin went and you'll usually get a pause, then a theory.

That pause is expensive. Sales are the number everyone can see: the EPOS shows them by the minute. Margin lives in the join between systems: recipe specs, supplier invoices, stock counts, rotas and platform statements. Nobody owns that join, so nobody sees the leak until the month-end pack arrives three weeks later and the money has already gone.

Why margin is found, not grown

For most of the last decade, a group could grow its way out of a soft margin. New sites and rising covers covered a lot of sins. In 2026 that option has largely gone.

−0.7%UK restaurant like-for-like sales, June 2026, and 14 months of sector growth below CPINIQ-RSM
£12.71National Living Wage from April 2026 (+4.1%); the 18–20 rate rose 8.5%GOV.UK
15%Employer NIC since April 2025, with the threshold cut to £5,000UKHospitality

Put those together and the maths is unforgiving. Labour has stepped up two years running while like-for-like sales go nowhere, so prime cost (food, drink and labour together) drifts towards the top of the usual 55–65% band. Nobody decided that; it just happened a few pence at a time. At that point the groups that protect EBITDA aren't the ones with the best sales. They're the ones that can see, site by site and week by week, where the pennies are going.

Seeing that clearly comes down to four numbers: the food-cost gap, prime cost, contribution by sales channel and site EBITDA. Each one sounds simple and is surprisingly hard to calculate honestly across sites.

The two-point gap: theoretical vs actual food cost

Definition

Theoretical food cost is what you should have spent: every dish sold multiplied by its recipe cost. Actual food cost is what you did spend: opening stock plus purchases minus closing stock. The gap between them is waste, over-portioning, comps that weren't rung through, theft and recipe drift. It's the single most controllable number in a restaurant P&L.

Most groups track actual food cost %. Far fewer track it against theoretical, because theoretical needs three things to line up: item-level sales from the EPOS, a costed recipe for every dish, and a recipe cost that updates when supplier prices move. Get those joined and the variance usually lands somewhere between half a point and two points. There's no official industry standard; experienced operators treat roughly one point as normal for a simple menu, and one-and-a-half to two points as tolerable for scratch or seafood-heavy kitchens.

The value is easy to put a number on. Take a group with £6.3m of annual food sales and a blended gap of 1.2 points: that's about £76k a year leaving the business with nothing to show for it. Close it to the 0.6 points your best site already manages and you recover around £38k of EBITDA. You haven't touched a menu price, renegotiated a supplier or cut a shift.

Theoretical is what you should have spent. Actual is what you did. The gap between them is your margin, walking out the back door.

The site with the widest gap is rarely the one with the worst chef. It's usually the site where spec sheets haven't been updated since the last menu change, deliveries go unchecked on a busy Friday, or staff meals and comps don't get recorded. Those are process problems, and a weekly variance number is how you find them.

Two GPs, one business

Here's a conversation that plays out in a lot of groups: a GM says the site is running at 72% GP, and the FD says the business made 40% gross profit. Both are right. The GM means food and drink margin. The statutory accounts, like many in UK hospitality, put site staff costs inside "cost of sales". Same business, two definitions, and a monthly argument that isn't really about performance at all.

That's why the first deliverable in this kind of project isn't a dashboard. It's a measure library: one written definition of every number that matters, built once into the data model and reused everywhere. The definitions that cause the most trouble in restaurant groups are:

A worked example: the GM's view

To make this concrete, here's what the finished reporting looks like for a typical central London operator: a multi-site restaurant and bar group trading across Covent Garden, Soho, Marylebone and the City, with about £8.75m of annual net sales. It's a composite of typical multi-site set-ups rather than a single client. The figures are illustrative, but they're built to be realistic against the benchmarks cited in this article.

The data comes from five places, and none of them were designed to talk to each other:

🧾
EPOS
Item-level sales, voids, comps, covers
📦
Purchasing & stock
Supplier invoices, stock counts, recipe specs
🗓️
Rota & payroll
Scheduled vs worked hours, on-cost
🛵
Delivery platforms
Orders, commission, payouts
📊
One model
Shared measures, one trading day

Every GM opens the same live view each morning. It's refreshed overnight and judged against their own site's targets, not a group average that suits nobody.

app.datahexis.co.uk / dashboard / covent-garden
📊 Overview🍽️ Covers & RevPASH💷 Food cost👥 Labour🛵 Channels📤 Reports

Site view: Covent Garden

Week ending Sunday 6 September
Net sales vs forecast
+2.8%
£57.9k for the week
✓ On track
Spend per head
£46.20
Target £45.00
✓ On target
Food cost gap
1.1 pts
29.7% actual vs 28.6% theoretical
! Above 0.8
Labour % of sales
31.4%
£41.80 sales per labour hour
✓ Under 32%
Prime cost
59.9%
Group ceiling 60%
! Near ceiling

Status is always a word and an icon as well as a colour, so the signal survives a phone screen in a dark back office.

RevPASH by day-part: revenue per available seat-hour, last 4 weeks (£)
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Lunch
£9
£10
£11
£12
£14
£19
£17
Pre-theatre
£18
£22
£24
£25
£27
£29
£12
Dinner
£20
£23
£26
£28
£33
£35
£18
Late
£5
£6
£8
£10
£16
£19
£4
Lower RevPASHHigher RevPASH

Covers tell you how busy you were. RevPASH tells you what your seats earned. Pre-theatre carries the week from Tuesday to Saturday, and collapses on Sunday when most West End theatres are dark. That's a rota and pricing decision hiding in plain sight.

Menu engineering matrix (Kasavana & Smith)
★ Stars

High cash margin, high popularity. Protect the spec; feature them.

! Plowhorses

Popular, thin margin. Re-cost the recipe before touching the price.

? Puzzles

Good margin, few takers. Reposition, rename or retrain the pitch.

✕ Dogs

Low margin, low popularity. The shortest route to a simpler kitchen.

Top row: more popular · Bottom row: less popularLeft: higher margin · Right: lower margin

Classified on cash margin per dish, not GP%. A burger making £9 a plate beats a salad making £6, even at a lower percentage.

The board view: five charts that replace the month-end pack

A GM needs this week. The board needs the pattern: whether rising wages are being absorbed or passed on, which sites are leaking, and whether delivery growth is adding profit or just adding sales. It's the same data model and the same definitions, just a different altitude.

Prime cost vs the 60% ceiling

Group prime cost (food + drink + labour) as % of net sales, monthly, Oct 2025 – Sep 2026
57% 60% 63% Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Sep Apr: wage rise Jun: dashboards live 60% ceiling Oct: 60.2% Oct: 60.2% Nov: 59.8% Nov: 59.8% Dec: 58.6% Dec: 58.6% Jan: 61.4% Jan: 61.4% Feb: 61.0% Feb: 61.0% Mar: 60.4% Mar: 60.4% Apr: 62.3% Apr: 62.3% May: 61.8% May: 61.8% Jun: 60.6% Jun: 60.6% Jul: 59.7% Jul: 59.7% Aug: 59.3% Aug: 59.3% Sep: 58.9% Sep: 58.9% 60.2% 58.9%

April's wage rise pushed prime cost to 62.3%. It came back under the ceiling within three months, from tighter rotas on quiet day-parts and from closing the food-cost gap. There was no across-the-board price rise.

The food-cost gap, by area

Food cost as % of food sales, last 4 weeks
TheoreticalActual
Soho
+0.6 pts
Covent Garden
+1.1 pts
Marylebone
+1.4 pts
City
+2.1 pts
27.0%31.0%

Same menu, same suppliers, and a gap that runs from 0.6 to 2.1 points. The City site's 2.1 is the two-point gap in the title.

What's left of £100 of food sales

After food cost, commission and packaging, before labour (ex-VAT)
Dine-in
£70.50
Pick-up via app (13%)
£51.90
App-delivered (30%)
£31.50

Commission is charged on the VAT-inclusive order: 30% of £120 is £36 against £100 of net sales. Dine-in still has to pay for front-of-house labour, but the gap is wider than most boards assume.

Where each £1 of sales goes

% of net sales, rolling 12 months, site level (pre-central costs, pre-IFRS 16)
Food cost 21%Drink cost 7%Labour 32%Occupancy & site overheads 25%Site EBITDA 15%
Prime cost 60% — controllable weekly

The same P&L shape every founder carries in their head. The bracket is the part the team can change this week.

Site EBITDA by area

Four-wall EBITDA margin, rolling 12 months, against the 15% group target
15% group target
Soho
17.8%✓ Above target
Covent Garden
15.9%✓ On target
Marylebone
14.6%! Just below
City
10.9%⚠ Review

The City site trades hard Monday to Thursday and pays a full week's rent for a two-day weekend. That's a structural question for the board, not a performance question for the GM, and the data now makes that distinction obvious.

Under the hood (for the data team)

Everything above depends on a model that's boring in the best way: predictable, documented and reconciled to the ledger. Here's how it's put together.

Data model, pipeline and refreshStar schema, trading-day logic, row-level security

A lightweight warehouse (Azure SQL or Microsoft Fabric, depending on scale) sits between the source systems and Power BI. Nightly extracts land raw, then get conformed into a star schema:

TableGrainWhy it matters
Fact Sales LineOne row per item sold, per ticketTheoretical cost and menu engineering both need item-level sales, not daily totals
Fact PurchasesInvoice line, mapped to purchase categoryPDF and CSV invoices are standardised into proteins, dairy, dry goods and beverage
Fact Stock CountSite × category × count dateActual food cost needs opening and closing stock, not purchases alone
Fact LabourShift, with scheduled and worked hoursSPLH and labour % by day-part, including employer on-cost
Dim Menu ItemConformed dish, recipe cost by dateA dish rolls up the same way at every site
Dim DateTrading day, day-part, week, periodOne calendar, including the 5am cut-over

Trading day is assigned once, upstream, so every report inherits it:

-- Trading day: anything closed before 05:00 belongs to the previous day's service
CAST(DATEADD(HOUR, -5, ticket_closed_at) AS date) AS trading_date

Row-level security gives each GM their own site, area managers their patch, and the board everything, all from one semantic model. Incremental refresh keeps the nightly load to minutes rather than hours.

The measures behind the food-cost gapSample DAX, including the detail that usually gets missed
Theoretical Food Cost % =
DIVIDE (
    SUMX ( 'Sales Line', 'Sales Line'[Quantity] * 'Sales Line'[Recipe Cost at Sale] ),
    [Food Net Sales]
)

Actual Food Cost % =
DIVIDE ( [Opening Stock] + [Food Purchases] - [Closing Stock], [Food Net Sales] )

Food Cost Gap (pts) =
( [Actual Food Cost %] - [Theoretical Food Cost %] ) * 100

The detail that usually gets missed is Recipe Cost at Sale. Recipe cost is snapshotted onto each sales line when the sale happens. If you look it up live instead, last month's variance quietly changes every time a supplier price moves, and nobody trusts the number twice.

Is Power BI the right tool for restaurants?An honest answer, including when it isn't

A fair criticism from parts of the restaurant-tech world is that Power BI is slow and fragile for hospitality. Pointed straight at raw EPOS exports, it often is. The fragility comes from skipping the warehouse and the measure library, which is exactly the layer described above.

Where Power BI isn't the answer: live rota building, automated ordering and shift-by-shift labour forecasting. Specialist hospitality platforms do those jobs better, and many groups already run one. Our view is that they're complementary. The operational tool runs the shift. The Power BI model sits across all your systems, including that tool, reconciles to the finance ledger, and belongs to you rather than to a vendor.

If you run one venue, the same four numbers matter more

None of this is exclusive to groups. A single, well-run restaurant or bar feels a one-point food-cost gap or a bad rota week more, not less, because there's no other site to average it out. The difference is scale: one site means one EPOS, one supplier list and a much lighter model. A first dashboard often comes in under the two-week average, built on the systems you already pay for.

Whether it's one venue or twenty, the test is the same: could you tell someone where last week's margin went, to the nearest point, by Monday lunchtime?

Frequently asked questions

What is a good food cost percentage for a UK restaurant?

UK benchmarks typically put food cost at roughly 28–35% of food sales and drink cost somewhat lower, for a gross profit of around 65–70% in casual dining and 70–80% in bars. The more useful measure is the gap between theoretical and actual food cost: around one point is normal for a simple menu, and consistently above two points signals waste, portioning or recording problems worth investigating.

What is prime cost, and what should it be?

Prime cost is food and drink cost plus total labour cost (including employer NIC and pension), as a percentage of net sales. Most UK full-service operators work within 55–65%, and above 70% is a warning sign. After the April 2025 NIC changes and April 2026 wage rises, many groups are running near the top of that band. That's why a weekly prime cost number, rather than a monthly one, matters.

Which KPIs should a multi-site restaurant group track weekly?

At minimum, track these by site: net sales against forecast and like-for-like, spend per head, the food-cost gap (actual vs theoretical), labour % and sales per labour hour, prime cost, RevPASH by day-part, and contribution by channel. Monthly, add four-wall site EBITDA on a consistent pre-central-cost basis.

How much do delivery platforms really cost a restaurant?

Uber Eats publishes UK rates of 30% for orders it delivers and 13% for pick-up or your own delivery, plus VAT on the fee. Because commission is calculated on the VAT-inclusive order value, a 30% rate costs around 36% of your net (ex-VAT) sales before packaging, which is why delivery should be reported as contribution, not just revenue.

Can this work for a single restaurant, and how long does it take?

Yes. The model is lighter for one site, and a first working dashboard is typically live in around two weeks (often sooner for a single venue), built on the EPOS, rota and accounting systems you already use.

Sources

  1. NIQ-RSM Hospitality Business Tracker, June 2026 (published 23 July 2026). nielseniq.com
  2. UKHospitality, "Annual cost increases hit hospitality" (April 2025). ukhospitality.org.uk
  3. GOV.UK, National Minimum Wage and National Living Wage rates. gov.uk
  4. Jelly, UK restaurant gross profit margin benchmarks (2026). getjelly.co.uk
  5. Chef's Resources, "Theoretical food cost vs actual food cost: acceptable variances". chefs-resources.com
  6. Uber Eats UK merchant pricing (accessed September 2026). merchants.ubereats.com
  7. Kasavana, M. L. & Smith, D. I. (1982). Menu Engineering: A Practical Guide to Menu Analysis. Hospitality Publications.
50+UK businesses served
12+Industries covered
2wkAverage time to first dashboard
98%Client satisfaction rate

Find your two-point gap

In a free 60-minute discovery call, we'll look at how your EPOS, purchasing, rota and delivery data fit together, and tell you honestly whether a dashboard would pay for itself.

Book a free discovery call → First dashboard typically live in about two weeks · UK-based team