EOQ Calculator (Economic Order Quantity)
Calculate Economic Order Quantity from annual demand, order cost, and holding cost.
Returns optimal batch size, orders per year, and total inventory cost.
EOQ = √(2 × D × S / H). The Wilson formula, published by Ford W. Harris in 1913 and popularized by R.H. Wilson. It finds the order quantity that minimizes total inventory cost — the trade-off between ordering frequently (high order costs) and ordering large batches (high holding costs).
Where:
- D = annual demand (units per year)
- S = setup or order cost per order ($)
- H = holding cost per unit per year ($)
The trade-off the formula solves. Two costs move in opposite directions:
- Ordering cost: small batches mean many orders per year, each with admin overhead, shipping minimums, vendor processing time. Annual ordering cost = (D / Q) × S.
- Holding cost: large batches mean lots of inventory sitting in the warehouse paying rent, insurance, obsolescence, and capital cost. Annual holding cost = (Q / 2) × H.
EOQ is the Q where the two cost curves intersect — total cost minimum.
Worked derivation (the math sanity check).
- Total annual cost = (D / Q) × S + (Q / 2) × H
- Take derivative with respect to Q: -D × S / Q² + H / 2 = 0
- Solve: Q² = 2 × D × S / H
- Q = √(2DS / H)
Holding cost components (H per unit per year):
- Capital cost (cost of money tied up in inventory): typically 10-15% of unit value
- Storage (warehouse rent, utilities, security): 2-5% of unit value
- Insurance and taxes: 1-3%
- Obsolescence and shrinkage: 2-10% (huge for fashion, electronics, food)
- Total H is typically 15-30% of unit value annually
Order cost (S per order):
- Purchase order processing: $50-$200 in admin
- Inbound logistics (receiving, putting away): $20-$100 per order
- Quality inspection: varies
- Vendor minimum charges, freight tier breaks
- Total S typically $50-$500 for routine orders, much higher for capital purchases
Typical EOQ-driven decisions.
- A widget with D = 10,000/year, S = $100, H = $5: EOQ = √(2 × 10,000 × 100 / 5) = √400,000 = 632 units per order. Orders per year = 10,000 / 632 = 15.8 (every ~3.3 weeks).
- A high-value, slow-moving part: D = 50, S = $500, H = $200: EOQ = √(2 × 50 × 500 / 200) = √250 = 16 units per order. Orders per year = 3.
EOQ assumes constant demand and instantaneous replenishment. Both are oversimplifications. The model breaks down for:
- Seasonal demand (Christmas spikes, summer peaks): use period-specific EOQ or different model.
- Stochastic demand: add safety stock above EOQ-based reorder point.
- Quantity discounts: vendor offers price breaks at higher volumes — modify EOQ to consider tiered pricing.
- Backorders allowed: introduces shortage cost as a third variable.
The reorder point. EOQ tells you HOW MUCH to order; reorder point tells you WHEN. ROP = (daily demand × lead time in days) + safety stock. A part with EOQ of 632, daily demand of 27, and 2-week lead time has ROP = 27 × 14 + safety stock.
Sensitivity is forgiving. EOQ uses square root, so a 100% error in D, S, or H only produces a 41% error in EOQ. The model’s smoothness means rough estimates of inputs still give workable answers — one of its enduring strengths.
Where EOQ fails. Just-in-time (JIT) inventory inverts EOQ logic — Toyota’s lean approach minimizes inventory through frequent small orders supported by tight supplier integration. EOQ assumes order cost is fixed; JIT engineers it down to near zero, which would yield a tiny EOQ, which is the JIT philosophy.