{
  "slug": "safety-stock-calculator",
  "title": "Safety Stock Calculator",
  "heading": "Safety Stock Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/safety-stock-calculator",
  "summary": "Buffer inventory sized to your actual demand and lead-time variability.",
  "description": "Safety stock exists to absorb the two things that cause stockouts even when your reorder point math is correct on average: demand spikes above your typical sales velocity, and supplier lead times running longer than planned. Sizing it off gut feel usually means either chronic stockouts or an oversized buffer quietly eating cash flow. This calculator uses the standard formula that combines demand variability (standard deviation of daily sales) and lead time in days, scaled by a service-level Z-score, to produce a safety stock unit count sized to your desired in-stock probability. Enter your daily sales standard deviation (how much daily sales typically swings above or below average), average lead time in days, and desired service level as a percentage (95% and 99% are the common tiers). Higher service levels require disproportionately more safety stock as you approach 99%+, so this calculator also shows the tradeoff by service level so you can pick a level appropriate to the SKU's margin and stockout cost.",
  "formula": "Safety stock = Z × demand std dev × √(lead time days), where Z is the service-level factor (1.65 for 95%, 2.33 for 99%).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=safety-stock-calculator",
  "inputs": [
    {
      "id": "demandStdDev",
      "label": "Daily sales standard deviation",
      "kind": "number",
      "hint": null,
      "default": 6,
      "unit": "units",
      "min": 0,
      "max": null
    },
    {
      "id": "leadTime",
      "label": "Average lead time",
      "kind": "number",
      "hint": null,
      "default": 35,
      "unit": "days",
      "min": 1,
      "max": null
    },
    {
      "id": "serviceLevel",
      "label": "Desired service level",
      "kind": "select",
      "hint": null,
      "default": "95",
      "options": [
        {
          "value": "90",
          "label": "90% (Z=1.28)"
        },
        {
          "value": "95",
          "label": "95% (Z=1.65)"
        },
        {
          "value": "98",
          "label": "98% (Z=2.05)"
        },
        {
          "value": "99",
          "label": "99% (Z=2.33)"
        }
      ]
    }
  ],
  "outputs": [
    {
      "id": "safetyStock",
      "label": "Safety stock (units)",
      "format": "number",
      "hint": null,
      "primary": true
    },
    {
      "id": "safetyStock99",
      "label": "Safety stock at 99% service level",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "z",
      "label": "Z-score used",
      "format": "decimal",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Daily sales standard deviation: 6 units",
      "Average lead time: 35 days",
      "Desired service level: 95% (Z=1.65)"
    ],
    "outputs": [
      "Safety stock (units): 59",
      "Safety stock at 99% service level: 83",
      "Z-score used: 1.65"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter daily sales standard deviation (units).",
      "Enter average lead time (days).",
      "Enter desired service level.",
      "Read your safety stock (units) on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "demandStdDev": 3.5999999999999996,
        "leadTime": 21,
        "serviceLevel": "95"
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "demandStdDev": 6,
        "leadTime": 35,
        "serviceLevel": "95"
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "demandStdDev": 9.600000000000001,
        "leadTime": 56,
        "serviceLevel": "95"
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "How do I calculate my daily sales standard deviation?",
      "a": "Pull at least 60-90 days of daily unit sales, calculate the average, then compute the standard deviation in a spreadsheet with the STDEV function. If you don't have granular daily data yet, a rough shortcut is 30-40% of your average daily sales as a starting estimate."
    },
    {
      "q": "Why does going from 95% to 99% service level cost so much more inventory?",
      "a": "The Z-score doesn't scale linearly with service level — it grows faster as you approach 100% because you're covering increasingly rare, extreme demand spikes. Going from 95% to 99% typically raises required safety stock by 40%, while 99% to 99.9% can nearly double it again."
    },
    {
      "q": "Should every SKU use the same service level?",
      "a": "No. Reserve 98-99% service levels for high-margin bestsellers or products where a stockout damages a customer relationship (like a subscription core item), and use 90-95% for lower-margin or slow-moving SKUs where a stockout is a minor inconvenience, not a lost customer."
    },
    {
      "q": "Does this formula account for lead time variability too?",
      "a": "This version assumes lead time itself is roughly fixed and only demand varies. If your supplier's lead time also swings significantly, use an extended formula that adds a term for lead time variability, since that risk compounds with demand risk rather than replacing it."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/ecommerce-reorder-point",
    "https://www.revenuelab.fyi/toolbox/eoq-calculator",
    "https://www.revenuelab.fyi/toolbox/sell-through-rate"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Safety Stock Calculator (https://www.revenuelab.fyi/toolbox/safety-stock-calculator)"
}