Your gathering
{{ summaryValue }}

{{ summaryLine }}

Editable estimate Buffer {{ resultsReady ? computation.normalizedInputs.buffer : '—' }}%
Party guest and menu inputs
Count teens and anyone eating a full adult portion here.

{{ fieldIssue('adults') }}

Children use half a food portion by default; adjust this in Advanced.

{{ fieldIssue('children') }}

{{ fieldIssue('style') }}

{{ params.hours }}h
Duration scales drinks; finger-food menus also add bites beyond 3 hours.
h

{{ fieldIssue('hours') }}

{{ params.appetite }}%
100% uses the menu portions; tune down for light eaters or up for hearty appetites.
%

{{ fieldIssue('appetite') }}

{{ params.buffer }}%
Added before package rounding. Start at zero if you do not want a reserve.
%

{{ fieldIssue('buffer') }}

{{ params.child_share }}%
Percent of an adult food portion. Drinks still use the full headcount.
%

{{ fieldIssue('child_share') }}

{{ params.vegetarian }}%
Share of main portions allocated to vegetarian food, assumed ready to serve. Check exact dietary needs with guests.
%

{{ fieldIssue('vegetarian') }}

{{ params.yield }}%
100% for ready-to-serve mains. For raw ingredients, enter the usable cooked weight as a percent of purchase weight; for example, 75%. {{ refinementNote('yield') }}
%

{{ fieldIssue('yield') }}

Portions and package sizes

Leave a portion blank to use the selected menu default. Enter 0 to omit a category. Each side quantity covers all side dishes combined. Packages for regular and vegetarian mains are rounded separately.

pieces per adult-equivalent food portion. Menu default: {{ defaultRate(0) }}. Allowed: 0–100.

{{ fieldIssue('appetizers_rate') }}

Amount in one purchasable package, in pieces; from 0.01 to 1,000. {{ refinementNote('appetizers_pack') }}
pieces

{{ fieldIssue('appetizers_pack') }}

{{ unitLabel(params.mains_rate_unit) }} per adult-equivalent food portion. Menu default: {{ fmt(defaultRate(1)) }}. Allowed: {{ measurementBound('mains_rate', 'min') }}–{{ measurementBound('mains_rate', 'max') }}. Changing units preserves the amount.

{{ fieldIssue('mains_rate') }}

Amount in one purchasable package, in {{ unitLabel(params.mains_pack_unit) }}. Allowed: {{ measurementBound('mains_pack', 'min') }}–{{ measurementBound('mains_pack', 'max') }}.Choose a supported package unit. Changing units preserves the amount. {{ refinementNote('mains_pack') }}

{{ fieldIssue('mains_pack') }}

{{ unitLabel(params.sides_rate_unit) }} per adult-equivalent food portion. Menu default: {{ fmt(defaultRate(2)) }}. Allowed: {{ measurementBound('sides_rate', 'min') }}–{{ measurementBound('sides_rate', 'max') }}. Changing units preserves the amount.

{{ fieldIssue('sides_rate') }}

Amount in one purchasable package, in {{ unitLabel(params.sides_pack_unit) }}. Allowed: {{ measurementBound('sides_pack', 'min') }}–{{ measurementBound('sides_pack', 'max') }}.Choose a supported package unit. Changing units preserves the amount. {{ refinementNote('sides_pack') }}

{{ fieldIssue('sides_pack') }}

rolls per adult-equivalent food portion. Menu default: {{ defaultRate(3) }}. Allowed: 0–20.

{{ fieldIssue('bread_rate') }}

Amount in one purchasable package, in rolls; from 0.01 to 1,000. {{ refinementNote('bread_pack') }}
rolls

{{ fieldIssue('bread_pack') }}

servings per adult-equivalent food portion. Menu default: {{ defaultRate(4) }}. Allowed: 0–20.

{{ fieldIssue('dessert_rate') }}

Amount in one purchasable package, in servings; from 0.01 to 1,000. {{ refinementNote('dessert_pack') }}
servings

{{ fieldIssue('dessert_pack') }}

{{ unitLabel(params.drinks_rate_unit) }} per guest per hour; a purchase allowance, not hydration advice. Menu default: {{ fmt(defaultRate(5)) }}. Allowed: {{ measurementBound('drinks_rate', 'min') }}–{{ measurementBound('drinks_rate', 'max') }}. Changing units preserves the amount.

{{ fieldIssue('drinks_rate') }}

Amount in one purchasable package, in {{ unitLabel(params.drinks_pack_unit) }}. Allowed: {{ measurementBound('drinks_pack', 'min') }}–{{ measurementBound('drinks_pack', 'max') }}.Choose a supported package unit. Changing units preserves the amount. {{ refinementNote('drinks_pack') }}

{{ fieldIssue('drinks_pack') }}

{{ tableStatus }}

CategoryServePurchase needPackages × sizeBuyCopy
{{ row.label }}{{ fmt(row.serveDisplay) }} {{ unitLabel(row.serveUnit) }}{{ fmt(row.served) }} {{ row.unit }}{{ fmt(row.purchaseDisplay) }} {{ unitLabel(row.buyUnit) }}{{ fmt(row.purchase) }} {{ row.unit }}0 packages · omitted{{ fmt(row.boughtDisplay) }} {{ unitLabel(row.buyUnit) }}{{ fmt(row.bought) }} {{ row.unit }}

{{ chartStatus }}

The chart could not load. Your shopping list is still available.

Before you shop
  1. Confirm the actual menu and dietary needs. Split each category across your chosen dishes; do not buy the full category allowance for every dish.
  2. Use “Serve” for prepared food and “Buy” for whole packages. Regular mains use {{ computation.normalizedInputs.yield.value }}% preparation yield;Regular-main preparation yield is unused; vegetarian mains and other categories are ready-to-serve purchases.
  3. Check package sizes and recipe yields in Advanced. A zero row is omitted. Package rounding can add more than your chosen buffer.
How the estimate works

These are editable house planning assumptions for informal gatherings, not official catering standards or a guarantee of appetite. Default child portions are 50% of an adult portion. Drinks use every guest at the same hourly rate.

Food portions = (adults + children × child share) × appetite × (1 + buffer)

Your inputs give {{ fmt(computation.values.food_factor) }} food portions. Each category multiplies that amount by its selected serving rate. Main portions are divided into regular and vegetarian shares before yield and package rounding.

Purchase = served need ÷ preparation yield
Packages = round up(purchase ÷ package size)

Percent inputs are divided by 100. Finger-food defaults add 2 appetizer pieces per food portion for each hour beyond 3; a custom appetizer rate replaces that rule. Other food quantities cover one meal, regardless of duration. Drinks = guests × hours × litres per guest-hour × (1 + buffer).

Purchase coverage compares the ready-to-serve amount from whole packages with the required amount. 100% covers the plan; more than 100% is rounding surplus. A zero row has no requirement. The chart compares percentages, never kilograms with pieces or litres.

Serve safely

Keep hot food at 140°F (60°C) or warmer and cold food at 40°F (about 4°C) or colder. Discard perishables left without temperature control for over 2 hours, or 1 hour above 90°F (about 32°C). Replace small dishes with fresh ones instead of topping up old food.

Source: FDA, Serving Up Safe Buffets, checked 10 September 2026. Quantity estimates do not assess allergies, safe cooking temperatures, storage capacity, or local food-service requirements.

Serving three side dishes does not mean preparing three full side-dish allowances for every guest. A party food plan estimates a total for each category, then divides that amount among the dishes on the menu. This distinction helps turn a guest list into a shopping list without counting every buffet choice as another meal.

The role of the food matters before any quantities are chosen. Small bites accompanying dinner serve a different purpose from finger food replacing dinner. Piece counts also need a consistent meaning within the menu; a small pastry and a substantial sandwich should not be treated as interchangeable portions simply because both count as one item.

Adult-equivalent food portion
A full food allowance used as a common unit for combining full and smaller portions. It is not the number of people attending or an age-based nutrition rule.
Ready-to-serve amount
The prepared food available to eat, rather than the weight of raw ingredients before preparation losses.
Cooking yield
The usable cooked weight as a share of the purchased weight. A lower yield means buying more to provide the same served amount.

Guest counts and portion counts answer different questions. Teens or other guests eating full portions should not automatically receive a smaller allowance because of age. Bread and individual desserts may also need a count for every guest even when a shared-food plan uses smaller portions. Dietary choices need their own check, because a total main-dish weight does not show whether everyone has a suitable option.

A deliberate reserve and whole-package buying can both create extra food. The reserve increases the planned allowance, while trays, bags and bottles may force another increase when only whole packages can be bought. For a small gathering, changing the package size may reduce surplus more than a small change to the portion allowance.

Informal quantity planning supports shopping decisions, not predictions of exactly what guests will consume. It does not establish nutrition or hydration needs, and buying enough food does not establish that it is safe to serve.

How to Use This Tool:

Build one meal plan, then match its portions and package sizes to the food you intend to provide. Results update when the required inputs are valid.

  1. Enter Adults and Children. Count teens and anyone eating a full portion under Adults. The combined headcount must be from 1 to 1,000.
  2. Choose a Menu style and set Event duration. Adjust Food appetite for larger or smaller food allowances. Duration changes drinks and the default bite allowance for finger-food meals, not the number of meals.
  3. Set any guest adjustments in Advanced. Child food portion starts at 50% of an adult food portion. Extra food and drinks starts at 0%; increase it only for a deliberate reserve. Vegetarian main share allocates part of the existing main allowance rather than adding another allowance.
  4. Enter the portions and package sizes that match your menu. Leave a portion blank to use its menu default, or enter 0 to omit that category. For regular mains purchased raw, set Main cooking yield to the expected usable cooked percentage; use 100% for ready-to-serve purchases. Vegetarian mains and all other categories are treated as ready to serve. Weight and drink portions can use different units from their package sizes, and changing units preserves the amount.
  5. Review Serve and Buy in the Shopping list, then check Purchase coverage for package surplus. Confirm actual package contents and recipe yields before buying.
    When Check inputs appears, correct the highlighted field. A category needs a valid package size when its requirement is positive, and regular mains need a valid cooking yield when included. Values that were unused while a category was omitted may need correction when it is added again.

Interpreting Results:

Serve is the planned prepared quantity, including the chosen reserve and, for food, the appetite adjustment. Purchase need allows for regular-main cooking loss but has not been rounded to packages. Buy is the total quantity supplied by the whole packages, not an extra amount to add to Serve. The serving and buying columns may use different units, so compare their labels as well as their numbers.

Purchase coverage compares the ready-to-serve amount from the purchased packages with the planned served amount. A value of 100% covers that allowance; more than 100% is package-rounding surplus beyond any reserve already included. A zero requirement has 0% coverage and means the category is omitted, not that a required food is missing. These are percentages within each category, not a comparison of kilograms with pieces or litres.

The summary's adult-equivalent portion count is before appetite and reserve adjustments. All food categories, including bread and dessert, use the adjusted portion count rather than a guaranteed whole item for every guest. Check individual-item needs and the regular/vegetarian split against the actual menu before treating a coverage figure as sufficient.

Technical Details:

Food quantities are built from an adjusted food-portion count and a serving rate for each category. Drinks instead use the actual headcount and event duration. Preparation yield converts served amounts into purchase amounts, and whole-package rounding is applied last.

Guest portions and meal quantities

Let A be Adults and C be Children. Let c, a and b be the entered percentages for Child food portion, Food appetite and Extra food and drinks. The following equations give the actual guest count G, adult-equivalent food portions E and adjusted food portions F.

G= A+C E= A+C×c100 F= E×a100×(1+b100)

For each food category i, multiply F by its portion rate r to obtain its served requirement S. For mains, this first gives the total main allowance before the vegetarian split. Drinks D use G, duration t in hours and drink rate d in litres per guest per hour.

Si= F×ri D= G×t×d×(1+b100)

Food appetite and child food share do not change drinks. Children count at the same hourly drink rate as adults, even when their food share is 0%. A food share of 0% therefore omits those children's food allowance, not their attendance or drink allowance.

Menu portion assumptions

These are editable house planning assumptions for informal gatherings, not official catering standards or measured consumption requirements. Each food rate below is per adult-equivalent food portion before appetite and reserve adjustments. Main and side weights are ready-to-serve weights.

Default food rates by menu style before appetite and reserve adjustments
Menu style Appetizers, pieces Total mains, kg All sides, kg Bread, rolls Dessert, servings
Buffet meal40.200.2511
Seated dinner30.200.2011
Barbecue30.250.251.51
Finger food as the meal12, plus time adjustment0001
Light lunch20.150.2011

All menu styles start with 0.25 L, or 250 mL, of non-alcoholic drinks per guest per hour. This is a purchase allowance, not a hydration target. Each category covers its chosen dishes combined; the side allowance is not repeated for each side dish.

When finger food replaces the meal and its appetizer portion is blank, the bite rate ra adds two pieces per adjusted food portion for each hour beyond three. Fractions of an hour count proportionally.

ra=12+2× max(0,t−3)

The default is therefore 12 pieces at three hours or less and 13 at 3.5 hours. A custom appetizer rate replaces this whole rule rather than receiving an extra time allowance. All other food quantities cover one meal regardless of duration. Custom portion values remain in effect when the menu style changes; clearing a portion restores the selected menu's default. Setting a portion to 0 does not redistribute that allowance among other categories.

Main allocation and cooking yield

Let v be Vegetarian main share as an entered percentage, and let rm be the total main serving rate. The regular and vegetarian served quantities divide one main allowance.

Sregular= F×rm×(1−v100) Svegetarian= F×rm×v100

At 100% vegetarian share, the entire main allowance becomes vegetarian and the regular-main cooking yield is unused. The split does not alter appetizers, sides, bread, dessert or drinks, and it does not check their ingredients.

For the purchase equations below, Y is the usable yield as a fraction. Regular mains use Main cooking yield divided by 100; vegetarian mains and every other category use a fixed yield of 1. For example, a chosen 75% yield assumes that each kilogram purchased supplies 0.75 kg ready to serve. It is an entered assumption, not a recipe-specific prediction. There is no separate cooking-yield adjustment for vegetarian mains or side dishes.

Whole packages and purchase coverage

For a positive served requirement S, purchase need P is adjusted for yield before dividing by package size s. N is the whole package count, B the bought quantity, R the ready-to-serve quantity supplied by those packages and K the percentage coverage. Purchase need and package size must be expressed in the same unit.

P=SY N=⌈Ps⌉ B=N×s R=B×Y K=100×RS

The ceiling brackets mean rounding up to the next whole package when a remainder exists. There is one precision exception: when the purchase-to-package ratio is within 0.0000000001 of its nearest positive whole number, including that boundary, that whole count is used to avoid an extra package caused by decimal calculation noise. A positive requirement smaller than one package still receives one package. A zero requirement receives zero packages, zero bought quantity and 0% coverage.

Regular and vegetarian mains use the same entered main package size, but their package counts are rounded separately. Other categories each have one package size. The starting sizes are 12 appetizer pieces, 1 kg for mains, 1 kg for sides, 6 bread rolls, 6 dessert servings and 2 L for drinks. These are editable buying units, not standardized retail sizes.

There is no separate rounding of adult-equivalent portions or served piece counts before package calculation. Displayed quantities and chart percentages use at most three decimal places; that display rounding does not determine the package count. Very small positive quantities can display as 0 while still producing a package purchase, so the displayed package count and Buy quantity are more useful for shopping than recalculating from rounded Serve values.

Weight and volume units

Main and side portions and packages independently support kg, g, lb and oz. Drinks support L, mL, US gal and US fl oz. The calculations use the following conversion factors; changing a unit changes the displayed number, not the underlying amount.

Exact weight and volume conversion factors used for party portions and package sizes
Input quantityEquivalent amountUnit
1 g0.001kg
1 lb0.45359237kg
1 oz0.028349523125kg
1 mL0.001L
1 US gal3.785411784L
1 US fl oz0.0295735295625L

Ounces for food are weight units; US fluid ounces for drinks are volume units. Imperial gallons and Imperial fluid ounces are not supported. Appetizer pieces, bread rolls and dessert servings remain counts and are not converted to weights or volumes.

Input limits and omitted categories

All limits below include their endpoints. Weight and volume bounds are expressed in kg and L here; other supported units show equivalent limits. Guest counts must be whole numbers, while portion rates can be fractional.

Accepted input ranges and conditions for party food planning
QuantityMinimumMaximumUnit or condition
Adults; Children01,000Whole guests in each field; combined total must be 1 to 1,000
Event duration0.512Hours
Food appetite50150%
Child food portion; Vegetarian main share0100% for each setting
Extra food and drinks050%
Main cooking yield10100%; required only for positive regular-main demand
Appetizers portion0100Pieces per food portion
Mains portion; Sides portion02kg per food portion, for each category
Bread portion; Dessert portion020Rolls or servings per food portion
Drinks portion02L per guest per hour
Each package size0.011,000Pieces, kg, rolls, servings or L for its category; required only for positive demand

Only a blank portion rate requests the menu default. Blank guest counts are not treated as zero. Enter numbers without thousands separators or unit text. Invalid package sizes or package units do not block an omitted category, and an invalid cooking yield does not block a plan with no regular-main requirement. Those values become required when the associated demand becomes positive. Missing or invalid active values are not replaced with sample quantities.

Planning Limits and Food Safety:

The estimate does not select recipes, calculate nutrients, assess allergies, plan alcohol or price the shopping list. It also does not assess safe cooking temperatures, storage capacity or local food-service requirements. The portion rates and cooking yield need to match the actual menu; a vegetarian allocation alone cannot confirm dietary suitability.

The U.S. Food and Drug Administration’s consumer buffet guidance gives the following holding precautions. Local food-service requirements may differ; these limits do not specify temperatures for cooking raw food.

  • Hold hot food at 140°F (60°C) or warmer and cold food at 40°F (about 4°C) or colder. Check food temperatures with a thermometer.
  • Discard perishable food left without hot or cold temperature control for more than 2 hours. When the surrounding temperature is above 90°F (about 32°C), the limit is 1 hour. A longer event duration does not extend these limits.
  • Use small serving dishes and replace them with freshly filled ones rather than topping up food already on display.

Worked Examples:

A buffet for 20 adults and 5 children

With a four-hour buffet, 50% child food portions, 100% appetite, no reserve, no vegetarian allocation and 100% cooking yield, the 25 guests represent 22.5 food portions. The default appetizer rate gives 90 pieces, bought as eight packages of 12 for 96 pieces. Regular mains need 4.5 kg and round to five 1 kg packages. Drinks use all 25 guests, giving 25 L before package rounding and thirteen 2 L packages to buy 26 L. The default dessert allowance is 22.5 servings, rounded to 24 in four packages of six; that is still fewer than 25 separate whole desserts, so adjust the allowance when every guest needs one.

Separate mains with a raw-purchase allowance

For 4 adults and 2 children at a buffet, keep child portions at 50% and appetite at 100%, then add a 20% reserve. Five adult-equivalent portions become six adjusted food portions, giving 1.2 kg of total served mains. A 50% vegetarian share assigns 0.6 kg to each main. With an assumed 50% regular-main cooking yield, regular purchase need is 1.2 kg, while vegetarian purchase need remains 0.6 kg. At a shared package size of 1 kg, buy two regular-main packages and one vegetarian-main package. Those purchases provide an assumed 1 kg ready to serve in each main category, giving each about 166.667% coverage of its 0.6 kg allowance. The extra package surplus is already on top of the 20% reserve.

References:

  • Serving Up Safe Buffets, U.S. Food and Drug Administration. Consumer guidance on buffet holding temperatures, time limits and replacing serving dishes; not a source for the portion or drink allowances.