Skip to content
ArumSoft Learning
KO
    Excel templateBusiness finance

    Recipe Costing and Plate Margin Calculator for Excel

    Price each ingredient once, with the purchase unit, the recipe unit and the usable yield after trimming. Build each recipe as a list of ingredient lines; the workbook looks up the cost per unit, adds a Q-factor for garnish and seasoning, and puts every menu item on one page with plate cost, food cost %, gross margin in dollars and the price that would hit your target. Twenty sample recipes come in the file.

    Sheets:
    6
    Works with:
    Excel for Microsoft 365, Excel 2016 or later, Excel for Mac and Excel for the web
    Updated:

    Recipe Costing and Plate Margin Calculator.xlsx

    Excel workbook (.xlsx) · 37 KB · 6 sheets

    Download template

    Free to download. No sign-up needed.

    What you can do with it

    • Cost per recipe unit from purchase price, pack size and yield
    • Recipes built from ingredient lines with INDEX/MATCH lookups
    • Plate cost, food cost %, gross margin and price at target for every menu item
    • A food cost % chart and six checks that catch unmatched ingredients and missing prices
    Start Here sheet of the recipe costing Excel template showing target food cost %, Q-factor, recipes costed, average food cost %, recipes over target, highest food cost item, best margin item and a food cost by recipe chart
    The Start Here sheet with the 20 sample recipes that come in the file.

    What's inside

    The workbook has 6 sheets. You only type on a few of them; the rest calculate.

    SheetWhat it's forYou enterCalculated for you
    Start HereTargets and the menu summaryTarget food cost %, Q-factorRecipes costed, average food cost %, recipes over target, highest food cost item, best margin item, average plate cost and price, unmatched lines
    IngredientsOne row per ingredient (60)Name, category, purchase unit and price, recipe unit, units per purchase, yield %, dateCost per recipe unit
    RecipesOne row per ingredient per recipe (120)Recipe, ingredient, quantityUnit, unit cost, line cost, lookup status
    MenuOne row per menu item (20)Recipe, category, servings, menu priceIngredient cost, Q-factor, plate cost, food cost %, gross margin, price at target, status
    ListsDropdownsCategories, units, menu categoriesNothing
    ChecksSix data checksNothingOK or Review

    Before you start

    • Gather current invoices for your main ingredients: the pack you buy and what it costs.
    • Decide the recipe unit for each (oz, each, fl oz) and how many of those are in a pack. Estimate yield for anything you trim or peel.
    • Write each recipe as ingredient and quantity per plate (or per batch, then set the servings on the Menu tab).

    Step-by-step guide

    1. Set the targets

      Start Here B6 is the target food cost %; B7 is the Q-factor added to every plate for garnish, oil and seasoning you do not list (2–5%).

    2. Price the ingredients

      Ingredients tab: how you buy it, what it costs, the recipe unit, how many recipe units are in a purchase unit, and the yield. Cost per recipe unit calculates.

    3. Build the recipes

      Recipes tab: recipe name (dropdown from the Menu tab), ingredient (dropdown), quantity. Unit and cost are looked up; a "Not found" lookup means the name does not match the Ingredients tab.

    4. Set menu prices

      Menu tab: one row per item with category, servings per recipe and the price. Plate cost, food cost %, margin and the price at target calculate.

    5. Read Start Here

      Which items are over target, which has the highest food cost %, which earns the most margin in dollars, and the average plate cost and price. The chart ranks food cost % by recipe.

    6. Fix what the Checks tab flags

      Unmatched ingredient names, ingredients without a cost, duplicate names, menu items without a price or without recipe lines, and yields outside 50–100%.

    Formula map

    Every formula in the workbook, grouped by the sheet and column it lives in. A column of copied formulas counts once; the range it covers is shown.

    SheetCellsFunctionsWhat it computesReadsFeeds
    IngredientsH5 copied down to row 64IF, ORCost per recipe unitD5, F5, G5Looked up by every recipe line.
    RecipesE5 copied down to row 124IF, IFERROR, INDEX, MATCHUnit cost lookupB5Line cost multiplies this by quantity.
    RecipesG5 copied down to row 124IF, ISNUMBER, MATCHLookup statusB5Counted on Start Here B16 and on the Checks tab.
    MenuD5 copied down to row 24IF, SUMIFIngredient cost per servingC5The base for plate cost.
    MenuF5 copied down to row 24IFPlate costD5, E5Food cost %, margin and price at target all start here.
    MenuH5 copied down to row 24IF, ORFood cost %F5, G5Compared with the target for the status; charted on Start Here.
    MenuJ5 copied down to row 24IFPrice at targetF5Compare with what you charge today; a large gap is a pricing decision or a recipe to rework.
    MenuK5 copied down to row 24IFStatusH5Conditional formatting colors the three states.
    Start HereB13IFERROR, INDEX, MATCH, MAXBest gross margin—Dollars matter more than percent: a 40% food cost on a $28 plate earns more than 20% on a $7 side.
    ChecksB7IF, SUMPRODUCT, COUNTIFIngredient names are unique—A silent wrong lookup is the hardest error to spot.

    Every formula, explained

    Each formula below is copied straight from the file, so what you read here is exactly what the cell contains. Click any cell in Excel to see it in the formula bar.

    Cost per recipe unitIngredients!H5 · copied down to row 64
    =IF(OR(A5="", F5=0, G5=0), "", D5/F5/G5)

    Purchase price divided by the number of recipe units in a pack, then divided by yield so the cost of the trimmed-away part is carried by what you serve.

    Piece by piece

    OR(A5="", F5=0, G5=0)
    Blank row or missing pack size or yield: show nothing.
    D5/F5
    Price per recipe unit before yield.
    /G5
    Divided by yield (0.9 = 90% usable) raises the usable cost.

    With the sample data: D5 = 4.14, F5 = 1, G5 = 95.0% → H5 result 4.36

    How it is used: Looked up by every recipe line.

    How to change it: Nothing to change.

    Learn this: How to Write Basic Formulas in Excel →
    Unit cost lookupRecipes!E5 · copied down to row 124
    =IF(B5="", "", IFERROR(INDEX(Ingredients!$H$5:$H$64, MATCH(B5, Ingredients!$A$5:$A$64, 0)),
        0))

    Finds the ingredient on the Ingredients tab and returns its cost per recipe unit.

    Piece by piece

    MATCH(B5, Ingredients!$A$5:$A$64, 0)
    Row number of the ingredient (exact match).
    INDEX(Ingredients!$H$5:$H$64, …)
    The cost on that row.
    IFERROR(…, 0)
    Zero if the name is not found, so the line cost does not error.

    With the sample data: B5 = Chicken breast → E5 result 4.36

    How it is used: Line cost multiplies this by quantity.

    How to change it: Nothing to change.

    Learn this: How to Use INDEX and MATCH in Excel →
    Lookup statusRecipes!G5 · copied down to row 124
    =IF(B5="", "", IF(ISNUMBER(MATCH(B5, Ingredients!$A$5:$A$64, 0)),
        "OK", "Not found"))

    Shows whether the ingredient name matches the Ingredients tab, so a zero cost from a typo is visible.

    Piece by piece

    MATCH(B5, Ingredients!$A$5:$A$64, 0)
    A number if found, an error if not.
    ISNUMBER(…)
    TRUE when found.

    With the sample data: B5 = Chicken breast → G5 result OK

    How it is used: Counted on Start Here B16 and on the Checks tab.

    How to change it: Nothing to change.

    Learn this: How to Use IFERROR in Excel →
    Ingredient cost per servingMenu!D5 · copied down to row 24
    =IF(A5="", "", SUMIF(Recipes!$A$5:$A$124,
        A5, Recipes!$F$5:$F$124)/IF(C5=0,
        1, C5))

    Adds every recipe line for this item and divides by the number of servings the recipe makes.

    Piece by piece

    SUMIF(Recipes!$A$5:$A$124, A5, Recipes!$F$5:$F$124)
    Total line cost for this recipe.
    IF(C5=0, 1, C5)
    Servings, treating a blank as 1.

    With the sample data: C5 = 1 → D5 result 4.3

    How it is used: The base for plate cost.

    How to change it: Nothing to change.

    Learn this: How to Use SUMIF and SUMIFS in Excel →
    Plate costMenu!F5 · copied down to row 24
    =IF(A5="", "", D5+E5)

    Ingredient cost plus the Q-factor.

    Piece by piece

    D5
    Ingredient cost per serving.
    +E5
    Q-factor: D5 × Start Here B7.

    With the sample data: D5 = 4.3, E5 = 12.9% → F5 result 4.43

    How it is used: Food cost %, margin and price at target all start here.

    How to change it: Nothing to change.

    Learn this: How to Write Basic Formulas in Excel →
    Food cost %Menu!H5 · copied down to row 24
    =IF(OR(A5="", G5=0), "", F5/G5)

    Plate cost divided by menu price.

    Piece by piece

    OR(A5="", G5=0)
    No item or no price: show nothing.
    F5/G5
    Plate cost ÷ price.

    With the sample data: F5 = 4.43, G5 = 16 → H5 result 27.7%

    How it is used: Compared with the target for the status; charted on Start Here.

    How to change it: Nothing to change.

    Learn this: How to Use the IF Function in Excel →
    Price at targetMenu!J5 · copied down to row 24
    =IF(A5="", "", F5/'Start Here'!$B$6)

    The menu price that would put this item exactly at the target food cost %.

    Piece by piece

    F5
    Plate cost.
    /'Start Here'!$B$6
    Divided by the target (0.30 → price = cost ÷ 0.3).

    With the sample data: F5 = 4.43 → J5 result 14.76

    How it is used: Compare with what you charge today; a large gap is a pricing decision or a recipe to rework.

    How to change it: Nothing to change.

    Learn this: How to Write Basic Formulas in Excel →
    StatusMenu!K5 · copied down to row 24
    =IF(H5="", "", IF(H5<='Start Here'!$B$6,
        "OK", IF(H5<='Start Here'!$B$6+0.05, "Watch", "Over")))

    OK at or under the target; Watch within five points over; Over beyond that.

    Piece by piece

    H5=""
    No data: show nothing.
    H5<='Start Here'!$B$6
    At or under target.
    H5<='Start Here'!$B$6+0.05
    Within 5 points over.

    With the sample data: H5 = 27.7% → K5 result OK

    How it is used: Conditional formatting colors the three states.

    How to change it: Change 0.05 to move the Watch band.

    Learn this: How to Use the IF Function in Excel →
    Best gross marginStart Here!B13
    =IFERROR(INDEX(Menu!$A$5:$A$24,
             MATCH(MAX(Menu!$I$5:$I$24), Menu!$I$5:$I$24, 0)),
             "")

    Finds the largest margin in dollars on the Menu tab and returns the item name.

    Piece by piece

    MAX(Menu!$I$5:$I$24)
    Largest gross margin.
    MATCH(…, Menu!$I$5:$I$24, 0)
    Its row.
    INDEX(Menu!$A$5:$A$24, …)
    The item on that row.

    With the sample data: B13 result Pan-Seared Salmon

    How it is used: Dollars matter more than percent: a 40% food cost on a $28 plate earns more than 20% on a $7 side.

    How to change it: Nothing to change.

    Learn this: How to Use INDEX and MATCH in Excel →
    Ingredient names are uniqueChecks!B7
    =IF(SUMPRODUCT((Ingredients!$A$5:$A$64<>"")*(COUNTIF(Ingredients!$A$5:$A$64, Ingredients!$A$5:$A$64)>1))=0,
        "OK", "Review")

    A duplicate name would make the lookup return the first one silently, so this counts how many names appear more than once.

    Piece by piece

    COUNTIF(Ingredients!$A$5:$A$64, Ingredients!$A$5:$A$64)>1
    TRUE for any name that appears twice or more.
    (Ingredients!$A$5:$A$64<>"")*…
    Ignore blank rows.
    SUMPRODUCT(…)=0
    No duplicates.

    With the sample data: B7 result OK

    How it is used: A silent wrong lookup is the hardest error to spot.

    How to change it: Nothing to change.

    Learn this: How to Use COUNTIF and COUNTIFS in Excel →

    Tips and limits

    • Capacity: 60 ingredients, 120 recipe lines, 20 menu items. For more, extend the ranges with Ctrl+H ($64, $124, $24).
    • Re-price ingredients monthly from the latest invoices; the Last updated column shows what is stale. Every plate cost updates at once.
    • The Q-factor replaces listing salt, oil and garnish on every recipe. If you do list them, set it to 0.
    • Price at target is a starting point, not a rule. Use the margin-in-dollars column alongside it: the goal is dollars per seat, not a percentage.
    • For batch recipes (soups, sauces), enter the whole batch on the Recipes tab and set Servings on the Menu tab to the number of portions it yields.

    Learn the skills behind this template

    Was this guide helpful? Spot a mistake? Send feedback · admin@arumsoft.com