Hosting a taco party? Running out of tacos is a tragedy; having too many is merely “leftovers for breakfast.” Use this handy chart to plan.

Quick Reference
| Guests | Tacos (light, with sides) | Tacos (hungry, taco-only) | Tortilla packs (30 ct)* | Meat (lbs) |
|---|---|---|---|---|
| 5 | 15 | 25 | 1 – 1 | 1.875 – 3.125 |
| 10 | 30 | 50 | 1 – 2 | 3.75 – 6.25 |
| 15 | 45 | 75 | 2 – 3 | 5.625 – 9.375 |
| 20 | 60 | 100 | 2 – 4 | 7.5 – 12.5 |
| 30 | 90 | 150 | 3 – 5 | 11.25 – 18.75 |
| 50 | 150 | 250 | 5 – 9 | 18.75 – 31.25 |
| 75 | 225 | 375 | 8 – 13 | 28.125 – 46.875 |
| 100 | 300 | 500 | 10 – 17 | 37.5 – 62.5 |
*Assumes one tortilla per taco. Double it if you serve tacos on two tortillas, street-style. Meat assumes about 2 oz (1/8 lb) of cooked filling per taco.
The Formula
tacos = guests x tacos_per_guest
tacos_per_guest:
3 if serving rice, beans and sides
4 for a typical dinner
5 if the crowd is hungry (or teenagers)
tortillas = tacos x (2 if double-stacked else 1) x 1.1 # 10% tear buffer
meat_lbs = tacos x 0.125 # about 2 oz per taco
salsa_cups = guests / 4
limes = guests / 2
For the Nerds: Code Version
def taco_plan(guests, appetite=4, double_stack=False):
tacos = guests * appetite
tortillas = round(tacos * (2 if double_stack else 1) * 1.1)
return {
"tacos": tacos,
"tortillas": tortillas,
"meat_lbs": round(tacos * 0.125, 1),
"salsa_cups": round(guests / 4, 1),
"limes": -(-guests // 2), # ceiling division
}
print(taco_plan(20))
# {'tacos': 80, 'tortillas': 88, 'meat_lbs': 10.0, 'salsa_cups': 5.0, 'limes': 10}
Pro Tips
- Offer at least two proteins and one vegetarian filling.
- Keep tortillas warm in a towel-lined basket or cooler.
- Set out three salsas: mild, medium and “sign the waiver.” See the heat guide.
- Horchata and agua fresca keep everyone happy.