Skip to content
Inventory & operations

Safety stock formulas compared: four methods, one data set

Four safety stock formulas on one data set, from 543 to 6,120 units: what each assumes, the z values, and service level versus fill rate.

ERPray teamUpdated 9 min read
Short answer

Safety stock is the buffer that absorbs demand and lead-time variability. The service-level form is z × σ(demand) × √(lead time): at 95% service (z = 1.65), σ of 95 units/day and a 12-day lead time, that is 543 units. Add lead-time variability and the same data gives 2,149 units.

Key takeaways

  • Four common safety stock methods on identical data return 543, 2,149, 4,200 and 6,120 units. The method is a bigger decision than any input.
  • z × σ(demand) × √(lead time) ignores lead-time variability entirely. When suppliers are unreliable, that term usually dominates — in the example below it is 94% of the total variance.
  • Service level is the probability of not stocking out in a cycle. Fill rate is the share of demand shipped from stock. They are not the same number and the gap is large.
  • The √(lead time) term only holds if daily demands are independent and identically distributed. Measure σ at the same time granularity as the lead time, or the answer is wrong by a factor.
  • The best input is not the standard deviation of demand but the standard deviation of forecast error, because that is what the buffer is actually absorbing.

Ask four planners for a safety stock number and you will get four numbers, all defensible. That is not sloppiness — the methods genuinely disagree, because each one assumes a different thing about where the risk comes from. This article runs four safety stock formulas over one set of numbers so you can see the spread, then says plainly what each method assumes and when it is the right choice.

Safety stock
Inventory held above expected demand during the replenishment lead time, to absorb variability in demand, in lead time, or both. It buys a target probability of not running out. It is not the same as cycle stock, which is the quantity you order to cover normal demand between replenishments.

The data set

One item, one location. All four methods below use exactly these inputs.

InputValueWhere it comes from
Average daily demand420 unitsShipped units ÷ selling days over the last 12 months
Standard deviation of daily demand95 unitsσ of the same daily series
Average lead time12 daysReceipt date minus PO date, averaged over recent receipts
Standard deviation of lead time3 daysσ of the same receipt series
Maximum daily demand620 unitsHighest single day in the period
Maximum lead time18 daysLongest receipt in the period
Target service level95%Cycle service level, a policy choice
Unit cost / carrying rate$18.00 / 22% a yearLanded cost; carrying rate from capital, storage, service and risk
Coefficient of variation of demand is 95 ÷ 420 = 0.226, so demand is moderately variable. Lead-time CV is 3 ÷ 12 = 0.25, which is high.

The four safety stock formulas, side by side

Method 1 — Fixed days of cover

Safety stock = Days of cover × Average daily demand
             = 10 × 420
             = 4,200 units

Assumes nothing statistical at all — it is a policy, not a calculation. Right for new items with no demand history, very low volumes where statistics are noise, and deliberate overrides on strategically critical parts. It is also the only method that is easy to explain to a warehouse manager. Fails by over-buffering predictable items and under-buffering erratic ones, because it is blind to variability.

Method 2 — Max minus average

Safety stock = (Max daily demand × Max lead time) − (Avg daily demand × Avg lead time)
             = (620 × 18) − (420 × 12)
             = 11,160 − 5,040
             = 6,120 units

Assumes the worst demand day and the worst lead time occur together and persist for the whole lead time — a compound worst case whose joint probability is far below your service target. Right for items where a stockout is catastrophic rather than expensive: a line-stopping component, a regulated item, a spare with six-month resupply. Fails by being hostage to a single outlier. One freak day and one late shipment set the buffer for a year, and nobody questions it because the formula looks objective.

Method 3 — Demand variability only (the textbook formula)

Safety stock = z × σ(daily demand) × √(Lead time)
             = 1.65 × 95 × √12
             = 1.65 × 95 × 3.4641
             = 543 units

Assumes lead time is constant at 12 days, and that daily demand is normally distributed and independent day to day. The √12 comes from adding 12 independent daily variances: variance adds, so standard deviation grows with the square root of the number of days. Right for stable domestic supply where the supplier hits the date, or an internal transfer on a fixed schedule. Fails by being silent about supplier reliability — here it returns 543 units, under one and a half days of demand, against a supplier whose lead time varies by three days.

Method 4 — Demand and lead-time variability combined

Safety stock = z × √( LT × σ(demand)² + demand² × σ(LT)² )
             = 1.65 × √( 12 × 95² + 420² × 3² )
             = 1.65 × √( 12 × 9,025 + 176,400 × 9 )
             = 1.65 × √( 108,300 + 1,587,600 )
             = 1.65 × √1,695,900
             = 1.65 × 1,302.27
             = 2,149 units

Assumes demand and lead time both vary, independently of each other, and both are roughly normal. The two variance terms sit under one root because independent variances add. This is the form most planning systems implement when you tick "include lead-time variability". Right for most real supply chains, and certainly any import lane. Fails by the independence assumption: if your supplier goes late precisely when the market is hot — a real correlation in allocation markets — the formula understates the buffer, because a positive covariance term has been dropped.

The four answers, and what they cost

MethodSafety stockDays of coverAnnual carrying costAssumes
3 — z × σ(demand) × √LT543 units1.3$2,150Lead time is constant
4 — Combined demand + lead time2,149 units5.1$8,510Both vary, independently, normally
1 — Fixed 10 days of cover4,200 units10.0$16,632Nothing; it is a policy
2 — Max minus average6,120 units14.6$24,235Both worst cases coincide and persist
Carrying cost = units × $18.00 × 22%, so $3.96 per unit-year. The spread between the cheapest and most expensive method is $22,085 a year on one item.

Check one row: 2,149 × $3.96 = $8,510, and days of cover is 2,149 ÷ 420 = 5.1. Across 8,000 SKUs, a method choice that shifts the average buffer by four days of cover is a working-capital decision of a different order than anything the individual inputs will do. Get your own rate from the inventory carrying cost calculator first — 22% is plausible, not universal.

Free calculator
Safety stock calculator

Run your own demand, lead time and service level through the demand-only and combined formulas, plus the max-minus-average method, side by side.

Service-level z values

z is the number of standard deviations of buffer you hold. It comes from the one-tailed normal distribution: at z = 1.65, roughly 95% of the distribution sits below the buffer, so 5% of cycles are expected to run short.

Cycle service levelzSafety stock (Method 4)Days of coverAnnual carrying cost
50%0.000 units0.0$0
90%1.281,667 units4.0$6,601
95%1.652,149 units5.1$8,510
97.5%1.962,552 units6.1$10,106
99%2.333,034 units7.2$12,015
99.9%3.094,024 units9.6$15,935
Each row is z × 1,302.27, the combined standard deviation over the lead time from Method 4. Carrying cost at $3.96 per unit-year.

The shape of that table is the point. Moving 95% → 99% costs 885 extra units and $3,505 a year to remove four failed cycles in a hundred. Moving 99% → 99.9% costs another 990 units and $3,920 to remove nine in a thousand. The curve steepens sharply above 98%, which is why a blanket 99.5% policy across a whole catalogue is almost always wrong. Set service level by ABC class.

Service level is not fill rate

These two get used interchangeably in planning meetings and they are different measures. Confusing them makes a 95% policy sound far worse than it is.

MeasureDefinitionWhat it counts
Cycle service level (type 1)Probability of not stocking out during a replenishment cycleCycles. One unit short for one day is a failed cycle, same as being 5,000 short for a month.
Fill rate (type 2)Share of demanded units shipped from stockUnits. Being one unit short of a 4,000-unit demand is 99.98% fill, not a failure.
Line and order fillShare of order lines, or complete orders, shipped in fullLines or orders. The measure customers usually judge you on, and the harshest of the three.
The z formulas above all target cycle service level. If your commitment is a fill rate, you are optimising the wrong variable.

Work the gap. At 95% cycle service level with roughly 12 replenishment cycles a year, you expect 12 × 0.05 = 0.6 stockout events a year. Annual demand is 420 × 365 = 153,300 units. If a typical shortfall event runs about 800 units, expected units short are 0.6 × 800 = 480, so unit fill rate is 1 − (480 ÷ 153,300) = 99.7%. A 95% service level and a 99.7% fill rate describe the same policy. The 800-unit shortfall is an assumption here, illustrating the arithmetic rather than a benchmark — measure your own average shortfall size from stockout history and the fill rate calculator will do the rest.

Getting the √(lead time) term right

The most common error in safety stock calculation is not choosing the wrong method. It is a units mismatch inside the right method.

  • σ and lead time must be in the same time unit. If σ is a weekly standard deviation, lead time must be in weeks. Feeding weekly σ with a lead time in days inflates the answer by roughly √7, about 2.6 times.
  • Do not double-count the lead time. If your σ was measured over lead-time-length buckets already (the standard deviation of demand during lead time), then safety stock is simply z × σ. Multiplying by √LT again is a factor-of-3.5 error at a 12-day lead time.
  • √LT assumes independent daily demands. Real demand is often autocorrelated — a busy week is followed by a busy week — which makes true variability over the lead time larger than √LT implies. Where you see strong autocorrelation, measure σ over lead-time buckets directly instead of scaling a daily figure.
  • Normality fails for slow movers. For items selling a handful of units a month, demand is lumpy and discrete, and the normal distribution overstates how often small quantities occur. Poisson or negative-binomial models fit better; a practical alternative is to set the buffer from the observed demand distribution rather than from σ.
  • Add the review period under periodic review. If you only review stock every R days, exposure is lead time plus review period. With R = 7 and LT = 12, Method 3 becomes 1.65 × 95 × √19 = 683 units instead of 543, and Method 4 becomes 1.65 × √(19 × 9,025 + 1,587,600) = 1.65 × √1,759,075 = 2,188 units.

Turning safety stock into a reorder point

Safety stock on its own does not trigger anything. It becomes operational as part of the reorder point.

Reorder point = (Average daily demand × Average lead time) + Safety stock
              = (420 × 12) + 2,149
              = 5,040 + 2,149
              = 7,189 units

That is the number that goes into the ERP min field. Two practical notes: the order quantity is a separate decision driven by ordering and carrying cost, which is what EOQ addresses, and many systems store safety stock as a days value rather than units, so a change in average daily demand silently re-sizes the buffer. Check which one your item record holds. The reorder point calculator and the reorder point guide cover the review-period and variability options in more depth.

Choosing a method, practically

SituationMethod to useWhy
A-class item, imported, variable supplierCombined (Method 4)Lead-time variance dominates; ignoring it under-buffers badly
A-class item, reliable domestic supplyDemand-only (Method 3)Lead-time σ is near zero, so the extra term adds nothing
C-class item, low value, lumpy demandFixed days of cover (Method 1)Statistics on 4 units a month are noise; policy is cheaper to run
Line-stopping component or regulated itemMax minus average (Method 2)Stockout cost is not proportional to units short
New item, no historyFixed days of cover, reviewed at 90 daysNo σ exists yet; commit to a review date, not a permanent number
Segment the policy. One formula across a whole catalogue guarantees you are wrong in both directions at once.

The right way to settle an argument about service level is with the cost on both sides: carrying cost per unit-year against the expected cost of a stockout. If a stockout on this item costs $2,400 in lost margin and expedite, then removing 0.5 expected events a year is worth $1,200 — which buys about 303 units of buffer at $3.96 each, not 2,000. Turns and coverage read the same way; inventory turnover is a symptom of these policies rather than a target to chase.

Getting the inputs out of your ERP

Every formula above needs four numbers per item: average daily demand, σ of demand, average lead time and σ of lead time. The first two come from shipment history net of returns and excluding intercompany transfers. The second two come from receipt dates against PO dates, where partial receipts, amended dates and dropped lines all distort the series. Most teams export two years of transaction lines, compute σ in a spreadsheet once, and never update it.

This is the class of question was built for. Ask "average and standard deviation of daily shipped units, and of PO receipt lead time, by item for the top 200 items by value" and get it computed live from your own account, with the query shown underneath so you can confirm which receipt date and which transaction types it used before the numbers set your buffers.

Frequently asked questions

What is the standard safety stock formula?

The most-cited one is safety stock = z × σ(demand) × √(lead time), where z comes from the target service level. At 95% service (z = 1.65), a daily demand σ of 95 units and a 12-day lead time, that gives 1.65 × 95 × 3.4641 = 543 units. It assumes lead time is constant, so it understates the buffer whenever suppliers are unreliable.

What z value should I use for safety stock?

Use the one-tailed normal value for your target cycle service level: 1.28 for 90%, 1.65 for 95%, 1.96 for 97.5%, 2.33 for 99% and 3.09 for 99.9%. A 50% service level has z = 0 and needs no safety stock. Because the curve steepens sharply above 98%, set z by ABC class rather than applying one figure across the catalogue.

What is the difference between service level and fill rate?

Cycle service level is the probability of not stocking out during a replenishment cycle — it counts cycles. Fill rate is the share of demanded units shipped from stock — it counts units. Because most stockouts are partial and brief, fill rate is much higher than cycle service level for the same buffer. A 95% service level can correspond to a fill rate above 99%.

How do you calculate safety stock with variable lead time?

Use safety stock = z × √(lead time × σ(demand)² + demand² × σ(lead time)²). With z = 1.65, 12-day lead time, demand σ of 95, average demand 420 and lead-time σ of 3 days: 1.65 × √(108,300 + 1,587,600) = 1.65 × 1,302.27 = 2,149 units. The lead-time term is often the larger of the two by a wide margin.

Why does the safety stock formula use the square root of lead time?

Because variances add and standard deviations do not. Over 12 independent days the variance is 12 × σ², so the standard deviation is σ × √12. The assumption is that daily demands are independent and identically distributed. When demand is autocorrelated, or when σ was already measured over lead-time buckets, the √(lead time) term is wrong and must be dropped or replaced.

Should safety stock be stored in days or units in the ERP?

Units give you control; days give you automatic scaling. A days-of-cover setting re-sizes the buffer whenever average daily demand is recalculated, which is helpful for growing items and dangerous during a demand spike. If you use a statistical method, store units and schedule a recalculation — otherwise the system quietly overwrites the maths you did.

Your ERP already knows. Start asking.

ERPray computes answers like these live from your own ERP account and shows the exact query behind every number. Early access is open for NetSuite teams — free plan at launch.