← All articles

Inventory analytics · Retail · Distribution

Days of supply: how to spot dead stock before it eats your margin

Days of supply tells you how long current stock lasts at the current pace. Here is the formula, a table of starting thresholds, and what a real catalogue of 3,803 SKUs looks like through this lens.

Dead stock rarely announces itself. An item that stopped selling three months ago sits in the stock report next to one that sold yesterday, with the same quantity and the same cost. One number separates them: days of supply. It is simple enough for a spreadsheet and, set up once, it tells you every week what to reorder, what to stop buying and what to clear.

The formula

Days of supply = units on hand ÷ average daily units sold

Average daily sales should come from a recent window: 90 days is a sensible default, shorter for fast fashion, longer for slow industrial parts. Use units, not money, so price changes do not distort the pace.

Two companions make it useful:

  • Days since last sale: today minus the date of the last sale. Days of supply cannot be calculated for an item that does not sell (it divides by zero), and those are exactly the items you need to see.
  • Lead time: days from placing an order to having the goods on the shelf. Days of supply only means something next to it.

Starting thresholds

These are starting points, not laws. Tune them by category, supplier lead time and how much a stock-out costs you compared with holding stock.

ConditionStatusAction
Days of supply below lead time + safety daysReorder nowPlace the order; check if a faster supplier is worth it
Between lead time and 2× your ordering cycleHealthyNothing; review with the regular cycle
Above 90 days for an item that sells weeklyOverstockSkip the next order; review the order quantity
No sale for 90+ daysDead stock candidateStop reordering; try a bundle or a price test
No sale for 180+ daysWrite-off decisionClear, return to supplier or write down

What a real catalogue looks like

The public dataset UCI Online Retail II records a year of sales of a UK online gift retailer: 3,803 SKUs sold between 2010-12-01 and 2011-12-09. It has no stock levels, so we cannot compute days of supply for every item. We can measure the demand side, which is the half most businesses skip.

SKUs by days since last sale, at the end of the data11.4% of SKUs had not sold for half a year or longer.
0–30 days2,869
31–90 days291
91–180 days209
181+ days434

Source: UCI Online Retail II (Chen, 2019), sheet Year 2010-2011, CC BY 4.0; our calculation

75.4% of SKUs sold in the last month. But 643 SKUs, 16.9% of the catalogue, had not sold for over 90 days.

A narrower cut: 614 SKUs (16.1% of the catalogue) sold during the first half of the year and then went silent for 90+ days. Together they made just 1.9% of revenue. Every unit of them still on a shelf is cash that is not working.

A fifth of SKUs, most of the money

Cumulative share of revenue by share of SKUs, %SKUs sorted from highest to lowest revenue. 21.5% of SKUs make 80% of revenue.
0%
20%
40%
60%
80%
100%
100%
5%46%
10%61%
15%71%
20%78%
25%83%
30%87%
35%90%
40%93%
45%94%
50%96%
55%97%
60%98%
65%99%
70%99%
75%100%
80%100%
85%100%
90%100%
95%100%
100%100%
5%20%35%50%65%80%100%

Source: UCI Online Retail II (Chen, 2019), sheet Year 2010-2011, CC BY 4.0; our calculation

Sort SKUs by revenue and the curve rises steeply: 21.5% of SKUs make 80% of revenue. That gives the classic ABC split:

ClassRuleSKUsHow to manage
ATop SKUs up to 80% of revenue816Never run out: weekly review, safety stock
BNext SKUs up to 95%965Regular cycle, standard reorder points
CThe remaining 5% of revenue2,022Order on demand, cut slow items first
Source: UCI Online Retail II (Chen, 2019), sheet Year 2010-2011, CC BY 4.0; our calculation

Class C is where dead stock lives: 2,022 SKUs sharing 5% of revenue. Each one needs space, a line in the catalogue and someone’s time.

Worked example: one real item

The item with the most orders in the data is White hanging heart t-light holder (code 85123A). In the last 90 days it sold 9,324 units, 103.6 a day on average.

Weekly units sold: White hanging heart t-light holderLast 26 full weeks of the data. A typical week sells about 477 units; the strongest sold 1,705.
0
500
1,000
1,500
2,000
903
Jun 05629
Jun 12390
Jun 19391
Jun 26236
Jul 03258
Jul 10264
Jul 171,198
Jul 24726
Jul 31780
Aug 07441
Aug 14477
Aug 21297
Aug 28775
Sep 04396
Sep 11449
Sep 18663
Sep 25710
Oct 02404
Oct 09163
Oct 16683
Oct 23234
Oct 30447
Nov 061,705
Nov 13594
Nov 201,326
Nov 27903
Jun 05Jul 03Jul 31Aug 28Sep 25Oct 23Nov 27

Source: UCI Online Retail II (Chen, 2019), sheet Year 2010-2011, CC BY 4.0; our calculation

Suppose there are 2,000 units on hand and the supplier delivers in 21 days. These two numbers are our assumptions; the sales pace is real.

Days of supply = 2,000 ÷ 103.6 ≈ 19 days. That is below the 21-day lead time, so the item needs an order today: by the time goods arrive, the shelf would already be empty. Look at the weekly chart again: the strongest week sold 1,705 units, 85% of the assumed stock, which is why safety days matter.

How to set it up

  1. Export sales lines (date, SKU, units) and current stock per SKU.
  2. Compute average daily units over 90 days and days since last sale for every SKU.
  3. Divide stock by pace; flag items by the thresholds above.
  4. Review the flagged list before every purchasing cycle, not once a quarter.

A spreadsheet does this for a few hundred SKUs. Above that, or with several warehouses, it belongs on a dashboard that refreshes by itself.

Limits

  • The dataset has no stock or cost data, so the cash tied up in dead stock cannot be measured here; in your data it can.
  • Seasonal items look dead out of season. Compare with the same period last year before clearing.
  • A 90-day average lags behind sudden changes in demand; use it with the weekly trend, not instead of it.

Data: UCI Online Retail II (Chen, 2019), licensed CC BY 4.0. Sales numbers on this page are calculated by our script on that dataset; stock on hand and lead time in the worked example are stated assumptions.