Selling Rate Calculator

Selling Rate Calculator (Sell-Through & Velocity) body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333; margin: 0; padding: 20px; background-color: #f4f7f6; } .calculator-container { max-width: 800px; margin: 0 auto; background: #fff; padding: 30px; border-radius: 8px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); } .calc-header { text-align: center; margin-bottom: 30px; border-bottom: 2px solid #007bff; padding-bottom: 15px; } .calc-header h1 { margin: 0; color: #2c3e50; font-size: 28px; } .input-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; } @media (max-width: 600px) { .input-grid { grid-template-columns: 1fr; } } .input-group { margin-bottom: 15px; } .input-group label { display: block; margin-bottom: 8px; font-weight: 600; color: #555; } .input-group input { width: 100%; padding: 12px; border: 1px solid #ddd; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .input-group input:focus { border-color: #007bff; outline: none; } .calc-btn { display: block; width: 100%; padding: 15px; background-color: #007bff; color: white; border: none; border-radius: 4px; font-size: 18px; font-weight: bold; cursor: pointer; transition: background 0.3s; } .calc-btn:hover { background-color: #0056b3; } #result-area { margin-top: 30px; padding: 20px; background-color: #e9ecef; border-radius: 4px; display: none; } .result-row { display: flex; justify-content: space-between; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid #d1d5db; } .result-row:last-child { border-bottom: none; } .result-label { font-weight: 600; color: #495057; } .result-value { font-weight: bold; color: #2c3e50; font-size: 18px; } .highlight-result { color: #007bff; font-size: 22px; } .content-section { margin-top: 50px; border-top: 1px solid #eee; padding-top: 30px; } .content-section h2 { color: #2c3e50; margin-top: 0; } .content-section h3 { color: #007bff; margin-top: 25px; } .content-section p { margin-bottom: 15px; text-align: justify; } .content-section ul { margin-bottom: 20px; } .content-section li { margin-bottom: 8px; } .error-msg { color: #dc3545; font-weight: bold; margin-top: 10px; text-align: center; display: none; }

Selling Rate Calculator

Calculate Sell-Through Rate, Sales Velocity, and Inventory Turnover

Sell-Through Rate (STR): 0%
Average Daily Sales Rate: 0 units/day
Remaining Inventory: 0 units
Days Until Stockout: 0 days
Reorder Status:

Understanding Selling Rates and Inventory Metrics

In retail and e-commerce, the "selling rate" is a critical indicator of product performance and inventory health. Unlike simple sales volume, selling rates (often analyzed as Sell-Through Rate and Sales Velocity) tell you how efficiently you are moving stock relative to what you have on hand and the time elapsed. This Selling Rate Calculator helps you determine the speed at which products are leaving your shelves.

What is Sell-Through Rate (STR)?

The Sell-Through Rate is a percentage that compares the amount of inventory you received against the amount you actually sold within a specific period. A high STR indicates strong demand or perhaps under-stocking, while a low STR suggests overstocking or poor product performance.

Formula: (Units Sold / Starting Inventory) × 100

What is Sales Velocity?

Sales Velocity, or the Average Daily Sales Rate, measures the number of units sold per day (or week/month). This metric is essential for forecasting. By knowing your daily selling rate, you can predict exactly when your current stock will run out.

Formula: Units Sold / Time Period (Days)

How to Interpret Your Results

  • High Selling Rate (>80% STR): Indicates a "hot" item. Be careful of stockouts. If your days until stockout are fewer than your lead time, you will lose sales.
  • Moderate Selling Rate (40-80% STR): A healthy balance. You have enough stock to meet demand without carrying excessive inventory costs.
  • Low Selling Rate (<40% STR): The item is moving slowly. You may need to run a promotion, discount the item, or improve marketing to increase the daily sales rate.

Example Calculation

Imagine you stocked 1,000 units of a new summer t-shirt. Over the course of 30 days, you sold 450 units.

  • Sell-Through Rate: (450 / 1000) × 100 = 45%
  • Daily Selling Rate: 450 / 30 = 15 units/day
  • Remaining Stock: 1000 – 450 = 550 units
  • Days Until Stockout: 550 / 15 = 36.6 days

In this scenario, if it takes 14 days to get new stock from your supplier, you are safe for now, but should plan to reorder in about 3 weeks.

function calculateSellingRate() { // 1. Get Elements var startInvInput = document.getElementById('initialInventory'); var soldInput = document.getElementById('unitsSold'); var periodInput = document.getElementById('timePeriod'); var leadTimeInput = document.getElementById('restockLeadTime'); var strDisplay = document.getElementById('strResult'); var velocityDisplay = document.getElementById('velocityResult'); var remainingDisplay = document.getElementById('remainingResult'); var stockoutDisplay = document.getElementById('stockoutResult'); var statusDisplay = document.getElementById('reorderStatus'); var resultArea = document.getElementById('result-area'); var errorMsg = document.getElementById('error-message'); // 2. Parse Values var startInv = parseFloat(startInvInput.value); var sold = parseFloat(soldInput.value); var days = parseFloat(periodInput.value); var leadTime = parseFloat(leadTimeInput.value) || 0; // 3. Validation Logic errorMsg.style.display = 'none'; resultArea.style.display = 'none'; if (isNaN(startInv) || isNaN(sold) || isNaN(days)) { errorMsg.innerText = "Please enter valid numbers for Inventory, Sold Units, and Time Period."; errorMsg.style.display = 'block'; return; } if (startInv <= 0 || days <= 0) { errorMsg.innerText = "Inventory and Time Period must be greater than zero."; errorMsg.style.display = 'block'; return; } if (sold startInv) { errorMsg.innerText = "Units sold cannot exceed Starting Inventory."; errorMsg.style.display = 'block'; return; } // 4. Calculations // Sell-Through Rate Calculation var str = (sold / startInv) * 100; // Velocity Calculation (Units per Day) var dailyRate = sold / days; // Remaining Inventory var remaining = startInv – sold; // Days to Stockout var daysToEmpty = 0; if (dailyRate > 0) { daysToEmpty = remaining / dailyRate; } else { daysToEmpty = Infinity; // Technically infinite if nothing is selling } // Reorder Logic var statusText = ""; var statusColor = "#2c3e50"; if (remaining === 0) { statusText = "OUT OF STOCK"; statusColor = "#dc3545"; } else if (dailyRate === 0) { statusText = "No Sales (Stagnant)"; statusColor = "#6c757d"; } else if (daysToEmpty <= leadTime) { statusText = "CRITICAL: Reorder Immediately"; statusColor = "#dc3545"; } else if (daysToEmpty <= (leadTime * 1.5)) { statusText = "WARNING: Reorder Soon"; statusColor = "#ffc107"; } else { statusText = "Healthy Stock Level"; statusColor = "#28a745"; } // 5. Update DOM strDisplay.innerText = str.toFixed(2) + "%"; velocityDisplay.innerText = dailyRate.toFixed(2) + " units/day"; remainingDisplay.innerText = remaining + " units"; if (daysToEmpty === Infinity) { stockoutDisplay.innerText = "Indefinite"; } else { stockoutDisplay.innerText = daysToEmpty.toFixed(0) + " days"; } statusDisplay.innerText = statusText; statusDisplay.style.color = statusColor; resultArea.style.display = 'block'; }

Leave a Comment