Inventory Turnover Analysis: A Real Example (2026)

inventory turnover analysis: a real example

most ecommerce solopreneurs talk about inventory like it is a static thing. they know they have $20,000 in stock, they know it sits in a fulfillment center somewhere, and they know cash is tight. they cannot tell you which SKU is selling weekly versus sitting for 9 months, which means they reorder the wrong things, run out of bestsellers, and tie up cash in product that will never move.

a real inventory turnover analysis takes one afternoon. you list every SKU, calculate how often each turns over (sells through and gets replaced), flag dead stock, and prioritize reorders. that gives you three lists: SKUs to reorder immediately, SKUs to discount, and SKUs to discontinue. running this monthly turns inventory from a vibes-based guess into a cash flow lever.

this tutorial walks the entire process with a realistic 14-row sample dataset of SKUs from a small ecommerce business. by the end, you will have a working turnover calculation, a dead stock list, and a clear answer about what to reorder. no NetSuite, no expensive ERP, just spreadsheets and 30 minutes.

the sample dataset

below is the dataset we will use. paste into Google Sheets, save as inventory-turnover-2026, and follow along.

sku product unit_cost retail_price beg_inventory_units end_inventory_units units_sold_90d revenue_90d
S001 classic_tee_navy 8 32 120 35 220 7040
S002 classic_tee_white 8 32 100 28 195 6240
S003 classic_tee_red 8 32 80 70 12 384
S004 hoodie_navy 22 78 60 18 75 5850
S005 hoodie_grey 22 78 50 12 70 5460
S006 hoodie_pink 22 78 45 38 9 702
S007 cap_navy 6 28 200 90 165 4620
S008 cap_white 6 28 180 95 130 3640
S009 tote_canvas 4 22 150 145 8 176
S010 scarf_winter 12 48 80 78 4 192
S011 sticker_pack 1 8 500 380 180 1440
S012 mug_logo 5 24 120 92 42 1008
S013 jacket_premium 38 145 30 9 32 4640
S014 belt_leather 14 58 40 35 8 464

inventory turnover is the number of times stock cycles through your business in a given period. the standard formula is units_sold / average_inventory, calculated as a multiple per year. healthy ecommerce ranges from 4-8 turns per year for fashion, 6-12 for accessories, 12+ for fast-moving consumables. the analysis takes 30 minutes in Sheets, classifies SKUs into reorder/discount/kill buckets, and consistently surfaces 20-40% of inventory tied up in dead stock that should be liquidated.

step 1: structure and add helper columns

paste data into A1:H15. add the following derived columns.

column I: avg_inventory

formula in I2:

=(E2+F2)/2

expected output for S001: (120+35)/2 = 77.5.

drag down.

column J: turnover_90d

formula in J2:

=G2/I2

expected output for S001: 220/77.5 = 2.84.

this is how many times the average inventory turned over in 90 days.

column K: annualized_turnover

formula in K2:

=J2*4

expected output for S001: 2.84 × 4 = 11.36 turns/year.

annualized turnover is the standard metric for cross-business comparison.

column L: days_of_inventory

formula in L2:

=(F2/G2)*90

expected output for S001: (35/220)*90 = 14.3 days.

at the current sales pace, you have 14 days of inventory left. for fast movers, 30-45 days is healthy. below 14 days is reorder territory.

common mistake: most solopreneurs use ending inventory instead of average inventory in the formula. that causes turnover to spike falsely whenever they happen to be near a stockout. always use the average.

step 2: classify SKUs by velocity

build a velocity tier column.

formula in M2:

=IF(K2>=12, "fast", IF(K2>=6, "medium", IF(K2>=2, "slow", "dead")))

expected outputs by SKU:

sku annualized_turnover tier
S001 11.36 medium
S002 12.19 fast
S003 0.32 dead
S004 7.69 medium
S005 9.03 medium
S006 0.43 dead
S007 4.55 slow
S008 3.78 slow
S009 0.22 dead
S010 0.20 dead
S011 1.64 dead
S012 1.58 dead
S013 6.56 medium
S014 0.85 dead

7 of 14 SKUs (50%) are dead stock by the standard definition (under 2 turns per year).

step 3: calculate dead stock cash impact

build a summary block.

tier sku_count inventory_value annual_revenue turn_rate
fast 1 $224 $24,960 12.2
medium 4 $2,706 $87,560 8.7
slow 2 $1,110 $33,040 4.2
dead 7 $4,628 $4,406 0.7

inventory_value formula:

=SUMIF(M:M, "dead", F:F) * AVG_unit_cost

dead stock represents $4,628 in tied-up cash returning $4,406 per year in revenue. that is $0.95 of revenue per dollar of inventory invested. if you sell at 60% gross margin, dead stock returns $0.57 in profit per dollar of cash tied up, and that is over a full year.

compare to fast-moving SKUs returning $111 in revenue per dollar of inventory cost.

dead stock cash recovered would buy 6x more fast-moving inventory.

step 4: build the reorder list

filter to SKUs with days_of_inventory < 21 and tier in (fast, medium).

sku tier days_of_inventory reorder_qty (60-day target)
S001 medium 14.3 147 units
S002 fast 12.9 130 units
S004 medium 21.6 50 units
S005 medium 15.4 47 units
S013 medium 25.3 21 units

reorder_qty formula:

=ROUND((G2/90)*60 - F2, 0)

this is “60 days of expected demand minus current inventory.”

total reorder cost:

sku reorder_qty unit_cost reorder_cost
S001 147 8 $1,176
S002 130 8 $1,040
S004 50 22 $1,100
S005 47 22 $1,034
S013 21 38 $798
total $5,148

if you liquidate the dead stock for 50 cents on the dollar, you recover $2,314, which covers nearly half the reorder cost.

step 5: build the discount list

dead stock that has any positive sales velocity (more than 0 sales in 90 days) is candidate for discount. dead stock with zero sales is candidate for liquidation or write-off.

sku tier units_in_stock inventory_value suggested_action
S003 dead 70 $560 30% off, 60-day clearance
S006 dead 38 $836 40% off, 90-day clearance
S009 dead 145 $580 50% off, bundle with bestsellers
S010 dead 78 $936 60% off (off-season) or hold for season
S011 dead 380 $380 bundle as freebie
S012 dead 92 $460 30% off
S014 dead 35 $490 50% off or write off

discount level should reflect inventory cost basis. a sticker pack at $1 cost can be given away in bundles. a leather belt at $14 cost needs deeper discount because the gross margin allows it.

step 6: calculate the inventory turnover trend

if you have multiple months of inventory snapshots, plot total turnover over time. healthy growth shows turnover stable or rising as the catalog matures. declining turnover means you are buying more than you sell.

month total_inventory_value revenue turnover_proxy
2026-01 $9,800 $11,200 1.14
2026-02 $10,400 $12,100 1.16
2026-03 $11,200 $13,400 1.20
2026-04 $12,800 $13,200 1.03

april dropped. that is the first signal of inventory bloat. dig in before may.

step 7: dashboard the priorities

create a final summary block.

action sku_count cash_impact
reorder this week 5 -$5,148
discount/liquidate 7 +$2,314 (recovered)
net cash needed -$2,834

the actionable output is one number: $2,834 in additional cash needed to keep fast-movers in stock through the next 60 days, after liquidating dead stock.

if cash is tight, the discount list is your bridge.

comparing inventory turnover benchmarks

business type healthy annualized turnover red flag below
fashion (apparel, accessories) 4-6 turns/year 2
home goods 3-5 turns/year 1.5
beauty/cosmetics 6-10 turns/year 3
food/beverage 12-25 turns/year 8
electronics 6-12 turns/year 4
fast-moving consumables 12-20 turns/year 8
jewelry 1-3 turns/year 0.5

your benchmark depends on the SKU type, not just business type. a t-shirt should turn faster than a wedding dress.

our Shopify analytics complete guide for solo sellers covers the broader ecommerce metrics this turnover plugs into, and our ecommerce data analysis 2026 playbook provides the analytics framework around inventory.

frequently asked questions

what time window should I use?

90 days is standard for solopreneurs. shorter (30 days) is too noisy. longer (180+ days) hides recent demand shifts.

how do I handle seasonal SKUs?

calculate turnover only over the in-season period. a swimsuit sold in June through August should have its turnover measured June-August, not annualized.

what counts as dead stock?

industry rule of thumb: under 2 annualized turns. some businesses use under 1. others use “no sales in 60 days.” pick a definition and stick to it.

should I include in-transit inventory?

yes if it is paid for. no if you are operating drop-ship or pre-order. always be consistent with the definition.

how often should I run this?

monthly for active inventory management. quarterly minimum.

conclusion: build the list this weekend

inventory analysis is one of those tasks solopreneurs procrastinate on because it feels accounting-heavy. it is not. it takes 30 minutes and surfaces $2-5K in tied-up cash that you can recover within 30 days.

start this weekend. export your SKU list with units sold over 90 days, beginning and ending inventory, and unit cost. paste into the schema above. flag dead stock, build the reorder list, build the discount list. you will find one or two SKUs you forgot you bought and one bestseller you are about to run out of. fixing both pays for the analysis 10x over.

for next steps, our pricing analysis tutorial covers the price-discount math that drives liquidation decisions, and our ROAS analysis tutorial connects ad spend to inventory velocity. measure, sell through, reorder.