{
  "slug": "safety-stock-service-level",
  "title": "Safety Stock Calculator (Service Level)",
  "heading": "Safety Stock Calculator",
  "category": "math",
  "url": "https://www.revenuelab.fyi/toolbox/safety-stock-service-level",
  "summary": "Statistical safety stock from demand variability, lead time, and target service level.",
  "description": "Safety stock exists to absorb the combined variability of demand and supplier lead time so you don't stock out between reorders. This calculator uses the standard statistical formula that combines demand standard deviation, lead time standard deviation, and a z-score representing your target service level (probability of not stocking out in a cycle). A 95% service level uses z=1.65, 97.5% uses z=1.96, and 99% uses z=2.33 — moving from 95% to 99% roughly doubles required safety stock for most SKUs because the tail of the normal distribution gets expensive fast. This is why blanket 99% service level targets across an entire catalog are usually a mistake; reserve high z-scores for A-items and critical SKUs, and accept lower service levels on C-items where a stockout is cheap.",
  "formula": "SS = z × √(LT × σd² + d² × σLT²), where d = avg daily demand, LT = avg lead time (days).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=safety-stock-service-level",
  "inputs": [
    {
      "id": "avgDemand",
      "label": "Average daily demand",
      "kind": "number",
      "hint": null,
      "default": 120,
      "unit": "units",
      "min": 0,
      "max": null
    },
    {
      "id": "demandStdDev",
      "label": "Std deviation of daily demand",
      "kind": "number",
      "hint": null,
      "default": 35,
      "unit": "units",
      "min": 0,
      "max": null
    },
    {
      "id": "avgLeadTime",
      "label": "Average lead time",
      "kind": "number",
      "hint": null,
      "default": 12,
      "unit": "days",
      "min": 0,
      "max": null
    },
    {
      "id": "leadTimeStdDev",
      "label": "Std deviation of lead time",
      "kind": "number",
      "hint": null,
      "default": 3,
      "unit": "days",
      "min": 0,
      "max": null
    },
    {
      "id": "serviceLevel",
      "label": "Target service level",
      "kind": "select",
      "hint": null,
      "default": "1.65",
      "options": [
        {
          "value": "1.28",
          "label": "90%"
        },
        {
          "value": "1.65",
          "label": "95%"
        },
        {
          "value": "1.96",
          "label": "97.5%"
        },
        {
          "value": "2.33",
          "label": "99%"
        },
        {
          "value": "2.58",
          "label": "99.5%"
        }
      ]
    }
  ],
  "outputs": [
    {
      "id": "safetyStock",
      "label": "Safety stock",
      "format": "number",
      "hint": null,
      "primary": true
    },
    {
      "id": "reorderPoint",
      "label": "Implied reorder point",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "avgLeadDemand",
      "label": "Average demand during lead time",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "z",
      "label": "Z-score used",
      "format": "decimal",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Average daily demand: 120 units",
      "Std deviation of daily demand: 35 units",
      "Average lead time: 12 days",
      "Std deviation of lead time: 3 days",
      "Target service level: 95%"
    ],
    "outputs": [
      "Safety stock: 627",
      "Implied reorder point: 2,067",
      "Average demand during lead time: 1,440",
      "Z-score used: 1.65"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter average daily demand (units).",
      "Enter std deviation of daily demand (units).",
      "Enter average lead time (days).",
      "Enter std deviation of lead time (days).",
      "Enter target service level.",
      "Read your safety stock 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": {
        "avgDemand": 72,
        "demandStdDev": 21,
        "avgLeadTime": 7,
        "leadTimeStdDev": 1.7999999999999998,
        "serviceLevel": "1.65"
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "avgDemand": 120,
        "demandStdDev": 35,
        "avgLeadTime": 12,
        "leadTimeStdDev": 3,
        "serviceLevel": "1.65"
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "avgDemand": 192,
        "demandStdDev": 56,
        "avgLeadTime": 19,
        "leadTimeStdDev": 4.800000000000001,
        "serviceLevel": "1.65"
      }
    }
  ],
  "limitations": [
    "Results are rounded for display; the underlying calculation keeps full precision.",
    "Very large or very small inputs may hit floating-point limits in the browser.",
    "Inputs outside the accepted range are clamped rather than rejected."
  ],
  "faq": [
    {
      "q": "Where do I get demand and lead time standard deviation?",
      "a": "Pull 6-12 months of daily order history for the SKU and compute the standard deviation in a spreadsheet with STDEV. For lead time, use actual receipt dates versus PO dates from your last 10-20 purchase orders per supplier, not the supplier's quoted lead time, which is almost always optimistic."
    },
    {
      "q": "Why does lead time variability matter as much as demand variability?",
      "a": "The formula weights both because a supplier that's sometimes 8 days and sometimes 20 days late creates stockout risk even if your demand is perfectly steady. In practice, unreliable suppliers with high lead time variance often need more safety stock than volatile-demand items with a rock-solid supplier."
    },
    {
      "q": "Should every SKU have the same service level?",
      "a": "No. Segment by ABC/XYZ — A-items with high margin or stockout cost justify 98-99% service levels, while C-items with cheap substitutes or low margin can run 90-92% and free up working capital for where it matters more. A flat 99% policy across the catalog usually ties up cash in safety stock you don't need on slow movers."
    },
    {
      "q": "How does this change with a shorter lead time?",
      "a": "Safety stock scales with the square root of lead time, so cutting lead time in half doesn't halve safety stock — it cuts it by about 30%. Still meaningful, and it's why negotiating faster replenishment or dual-sourcing a critical component often beats carrying more inventory as a hedge."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/reorder-point",
    "https://www.revenuelab.fyi/toolbox/eoq-carrying-cost",
    "https://www.revenuelab.fyi/toolbox/cycle-count-accuracy"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Safety Stock Calculator (Service Level) (https://www.revenuelab.fyi/toolbox/safety-stock-service-level)"
}