Restaurant Recipe Card Generator
A recipe card does two jobs at once. It tells the kitchen how to make the thing consistently, and it tells you what one plate of it costs. Most cards only do the first, which is why the costing lives in a spreadsheet nobody opens and the price on the menu is a year out of date.
The formula, in the open
- Batch cost = the sum of the line costs, exactly as entered. Summed from the integers already on the card, so the total is precisely the numbers printed beside it — no drift between the lines and the footer.
- Cost per portion = batch cost ÷ yield. With no yield entered this is blank rather than zero, because a portion cost of zero reads as free.
- Per-portion quantity = ingredient quantity ÷ yield, kept to three decimals. Whole units would round a 17 ml pour of vanilla to nothing.
Nothing here is a margin, a target or a benchmark — it is your ingredient costs divided by your yield.
A worked example
A house tomato sauce: ₹340 of tinned tomatoes, ₹48 of onion, ₹36 of garlic, ₹96 of olive oil, ₹60 of basil and ₹3 of salt. That is a batch cost of ₹583.00. The batch yields 40 portions, so ₹14.58 per portion — and 2,400 g of tomatoes across 40 portions is 60 g per portion, which is the number that tells a new chef whether they have plated it right.
What moves the number
Yield, more than price. Chefs tune recipe cost by hunting cheaper tinned tomatoes, but the same sauce stretched from 40 portions to 44 by simmering it four minutes less moves the per-portion cost further than most supplier switches, and the per-portion quantity on the card is what tells you whether the stretch is real or whether the plate just got smaller.
The PDF
Download PDF produces a real file: the ingredient table with costs, the batch total, your method one step per line, and an allergen-and-notes block. It carries a "Powered by OotaOS.com" credit in the footer. Everything is generated in your browser and nothing is uploaded — recipes are the one thing a kitchen should not be posting to a stranger's server.
Try it
The card below is the worked example. Replace it with one of yours.

