Stockout Rate Calculation

.stockout-calculator-container { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; background: #f9f9f9; border: 1px solid #e0e0e0; border-radius: 8px; } .calc-header { text-align: center; margin-bottom: 25px; border-bottom: 2px solid #0073aa; padding-bottom: 15px; } .calc-header h2 { margin: 0; color: #23282d; font-size: 24px; } .calc-row { display: flex; flex-wrap: wrap; margin-bottom: 15px; gap: 15px; } .calc-col { flex: 1; min-width: 250px; } .calc-label { display: block; margin-bottom: 5px; font-weight: 600; color: #333; font-size: 14px; } .calc-input, .calc-select { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .calc-select { background-color: #fff; cursor: pointer; } .calc-btn { width: 100%; padding: 12px; background-color: #0073aa; color: white; border: none; border-radius: 4px; font-size: 16px; font-weight: bold; cursor: pointer; transition: background-color 0.3s; margin-top: 10px; } .calc-btn:hover { background-color: #005177; } .result-box { margin-top: 25px; padding: 20px; background-color: #fff; border: 1px solid #ddd; border-radius: 4px; text-align: center; display: none; } .result-value { font-size: 36px; font-weight: bold; color: #0073aa; margin: 10px 0; } .result-label { font-size: 14px; color: #666; text-transform: uppercase; letter-spacing: 1px; } .result-note { font-size: 13px; color: #777; margin-top: 10px; font-style: italic; border-top: 1px solid #eee; padding-top: 10px; } .content-section { margin-top: 40px; font-family: inherit; line-height: 1.6; color: #333; } .content-section h3 { color: #23282d; font-size: 20px; margin-top: 30px; } .content-section ul { margin-left: 20px; } .content-section li { margin-bottom: 8px; } .highlight-text { background-color: #e6f7ff; padding: 2px 5px; border-radius: 3px; }

Stockout Rate Calculator

SKU Count Method (Physical Inventory) Lost Revenue Method (Financial Impact)
Current Stockout Rate
0.00%
Availability Rate
0.00%

What is Stockout Rate?

The Stockout Rate is a critical inventory management metric that measures the frequency at which inventory items are unavailable when requested by a customer. A high stockout rate indicates inefficiencies in supply chain management, leading to lost revenue, diminished customer loyalty, and potential damage to your brand reputation.

How to Calculate Stockout Rate

There are two primary ways to calculate this metric, depending on whether you are looking at physical inventory counts or financial impact:

1. SKU Count Method

This formula is best for warehouse managers focusing on operational efficiency. It measures the percentage of distinct products (SKUs) that have zero inventory available.

Formula: (Number of SKUs Out of Stock / Total Number of Active SKUs) × 100

Example: If you sell 2,000 different products and 100 of them are currently out of stock, your stockout rate is (100 / 2,000) × 100 = 5%.

2. Lost Revenue Method

This approach is more useful for financial planning and sales analysis. It estimates the percentage of demand that could not be fulfilled.

Formula: (Estimated Lost Sales / Total Potential Sales) × 100

Note: Total Potential Sales is calculated as Actual Sales + Estimated Lost Sales.

Why Monitoring This Metric Matters

  • Revenue Protection: Every stockout is a direct loss of immediate sales.
  • Customer Retention: 30% of consumers feel that stockouts hurt their shopping experience, often driving them to competitors.
  • Inventory Optimization: Identifying which items frequently stock out allows for better forecasting and reorder point adjustments.

What is a Good Stockout Rate?

While 0% is the theoretical ideal, it is often too costly to maintain due to storage and carrying costs. For most retailers, a stockout rate between 2% and 8% is considered acceptable, while anything above 10% requires immediate intervention. Conversely, the Service Level (Availability Rate) should ideally be between 92% and 98%.

// Initialize labels on load window.onload = function() { updateLabels(); }; function updateLabels() { var method = document.getElementById('calcMethod').value; var labelBase = document.getElementById('labelBase'); var labelMissing = document.getElementById('labelMissing'); var inputBase = document.getElementById('inputValueBase'); var inputMissing = document.getElementById('inputValueMissing'); if (method === 'sku') { labelBase.innerText = "Total Active SKUs"; labelMissing.innerText = "SKUs Currently Out of Stock"; inputBase.placeholder = "e.g. 2000"; inputMissing.placeholder = "e.g. 50"; } else { labelBase.innerText = "Total Potential Revenue (Sales + Lost)"; labelMissing.innerText = "Estimated Lost Revenue"; inputBase.placeholder = "e.g. 100000"; inputMissing.placeholder = "e.g. 5000"; } // Hide result when mode changes to encourage recalculation document.getElementById('resultBox').style.display = 'none'; } function calculateStockout() { var baseValue = parseFloat(document.getElementById('inputValueBase').value); var missingValue = parseFloat(document.getElementById('inputValueMissing').value); var method = document.getElementById('calcMethod').value; var resultBox = document.getElementById('resultBox'); var resultPercentage = document.getElementById('resultPercentage'); var resultAvailability = document.getElementById('resultAvailability'); var resultExplanation = document.getElementById('resultExplanation'); // Validation if (isNaN(baseValue) || isNaN(missingValue)) { alert("Please enter valid numbers for both fields."); return; } if (baseValue <= 0) { alert("Total value must be greater than zero."); return; } if (missingValue baseValue) { alert("Out of stock value cannot be higher than the total value."); return; } // Calculation var stockoutRate = (missingValue / baseValue) * 100; var availabilityRate = 100 – stockoutRate; // Display Results resultBox.style.display = 'block'; resultPercentage.innerText = stockoutRate.toFixed(2) + "%"; resultAvailability.innerText = availabilityRate.toFixed(2) + "%"; // Dynamic Explanation if (method === 'sku') { resultExplanation.innerText = "Based on your inventory, " + stockoutRate.toFixed(2) + "% of your unique products are currently unavailable for purchase."; } else { resultExplanation.innerText = "You are losing approximately " + stockoutRate.toFixed(2) + "% of your potential revenue due to inventory shortages."; } }

Leave a Comment