Most answers to this question come from grocery retail, where 2% is the standard and the shelf gets replenished twice a week. D2C does not work that way, and copying those numbers is how brands end up with a warehouse full of cash they cannot spend.
The real answer: most D2C brands run somewhere between 8% and 12%. A well-run one targets 5% overall. Below that, you are usually not looking at better planning. You are looking at inventory you paid for to buy down a risk you could have accepted.
This page is the benchmark and the trade-off. Not the sales pitch.
The short answer
For a D2C brand between €10M and €80M:
- 8–12% is normal. This is where most brands sit, including ones that are well run.
- 5% overall is a good target. Achievable with real planning discipline and without deforming your working capital.
- Under 3% deserves a second look. Sometimes it is excellent execution. More often it means you are financing availability nobody asked for, and the cost has moved somewhere less visible: expiry, markdowns, storage, cash you cannot deploy.
That last point is the one that gets missed. A very low out-of-stock rate is not automatically good news. It is a number you bought, and the receipt is in your inventory line.
Why D2C cannot hit retail benchmarks
This is not a discipline gap. It is arithmetic, and it comes down to three things.
1. Marketing writes the demand curve, and it does not tell planning first
In grocery, demand is a slow-moving statistical object. In D2C, a creative that lands can triple a SKU’s velocity in 48 hours. One well-performing campaign, one affiliate post, one product moment, and the SKU that was covered for six weeks is covered for nine days.
You cannot forecast that from history, because it did not come from history. It came from an ad account.
2. The only defense is inventory, and inventory is cash
The standard response is to hold more. But safety stock sized for a 3x demand spike is not safety stock, it is a warehouse of dead capital that sits there in every month the spike does not happen.
And it does not even work reliably. Hold enough for a 3x spike and you are exposed the day a campaign does 5x. Hold enough for 5x and you have built a business that finances inventory instead of growth.
At some point you are paying real money to avoid a stockout that would have cost you less than the coverage did.
3. Your lead time is longer than your spike
The spike lasts days. Your replenishment cycle is weeks, sometimes months. You cannot react inside the window. By the time the reorder lands, the campaign is over and the demand it created has moved on.
This is the actual constraint. Not planning quality, not software. The gap between how fast demand can move and how fast supply can.
The number is a decision, not a score
Every point of out-of-stock reduction costs something, and the cost is not linear.
- 12% to 8% is usually free or close to it. This range is process: better visibility, reordering on time, a supplier who ships when they said, someone actually looking at the numbers weekly.
- 8% to 5% costs some capital and a lot of discipline. Segmented policies, lead times planned from real data, marketing and supply in the same weekly conversation.
- 5% to 3% costs real money. You are now buying coverage against events you cannot predict.
- 3% to 1% is, for most D2C brands, irrational. The capital required to defend a full catalogue against unforecastable spikes exceeds what the stockouts would have cost.
The job is not to minimise the number. It is to know which range you are buying, and to buy it deliberately.
Where you accept it, and where you do not
Averages hide the only decision that matters. A 10% out-of-stock rate can be excellent or fatal depending entirely on which products it lands on.
Your top SKUs get the capital. The products carrying your revenue and your repeat purchase get protected: tighter reorder points, real buffer, an alert the moment they drop, and first call on cash when it is tight.
The tail absorbs the variance. A slow-moving SKU going out for two weeks is not a failure. It is the system working. That is where you take the stockout, on purpose, so the top has cover.
Which means the goal is not a flat 5% everywhere. It is closer to 2–3% on the products that pay for the business and 15%+ on the tail, averaging to 5%. Two brands can both report 5% and one of them is running a completely different company.
How to measure it honestly
The two formulas
The simple one counts unavailable SKUs against total SKUs:
OOS rate = SKUs out of stock / total SKUs
The useful one weights by what each SKU actually earns:
Revenue-weighted OOS = revenue of unavailable SKUs / total expected revenue
Track both, because the gap between them is the diagnosis.
If SKU-level is 10% and revenue-weighted is 4%, your inventory is pointed at the right products. The stockouts are landing in the tail, where you want them. That is a well-run operation, not a problem to fix.
If SKU-level is 5% and revenue-weighted is 9%, you have it backwards. Your bestsellers are the ones going out, your catalogue average is flattering you, and the number to act on is the second one.
The number nobody tracks: recovery time
If you cannot prevent the spike, the honest performance measure is how fast you come back.
A bestseller out for three days is a bad week. The same SKU out for 20 days is a different category of problem: the customer bought elsewhere, the campaign got deprioritised, and your forecast is about to learn that the product is weak.
Track days-out-of-stock per SKU. On your top 20, anything past a week is structural.
Two ways your dashboard under-reports
Daily snapshots. Most systems check inventory overnight. A SKU that sold out at 11am and was restocked at 6pm never registers.
Variant-level reality. One unit left is “in stock.” Available in XS and XXL but not S, M, L is “in stock.” Availability at variant level is the only version a customer experiences.
What it costs, both ways
You need both sides of this to set the number, so here is the honest version of each.
What a stockout costs
The order you did not get. The obvious one, and usually the smallest.
The ad spend still running. Your campaigns do not know the product is gone. On a top SKU with budget behind it, a nine-day stockout burns real money driving traffic to a greyed-out button, and the collapsed conversion rate teaches the ad platform to deprioritise the campaign. You pay for the recovery too.
The first-time customer. They do not reschedule. They buy the competitor’s version, and if it works, that is their brand now. For consumables this is the expensive one: you paid acquisition cost to lose a two-year repeat cycle.
The forecast damage. A SKU that sold nothing for nine days because it was unavailable reads as reduced demand. Your forecast orders less next cycle, so it stocks out again. Bestsellers get demoted to mid-tier purely as an artefact of their own stockouts. Correct your demand history for unavailability or the forecast keeps learning the wrong lesson.
What avoiding it costs
Capital that cannot be deployed. Every unit of coverage is cash sitting in a warehouse instead of funding acquisition, product, or hiring.
Expiry and obsolescence. For consumables and anything seasonal, coverage bought for a spike that did not come gets written off.
Markdowns. The other way inventory leaves: at a discount, taking your margin with it.
Storage and handling. Real, recurring, and rising with volume.
The brands that get this wrong in the second direction are quieter about it, because a warehouse full of stock does not feel like a failure the way an out-of-stock bestseller does. It is often the more expensive mistake.
The four causes, in the order they show up
1. Marketing and supply are not in the same conversation
The dominant cause in D2C, and the most fixable. The campaign calendar exists. The planning cycle exists. They are in different tools, owned by different people, reviewed in different meetings.
The tell: your biggest stockouts follow your best campaigns.
2. Lead times treated as fixed
Your reorder points assume 45 days. Your actual receipts last year ranged from 38 to 71. You are planning against the contract instead of the distribution in your own data.
The tell: stockouts cluster after your longest-lead-time supplier ships, and it gets called bad luck every time.
3. One blanket policy across a catalogue that needs three
Two weeks of cover for everything, or a flat unit buffer per SKU. This ignores the two things that should drive it: how variable that SKU’s demand is, and how variable its supply is.
Predictably expensive in both directions at once. Stable SKUs carry too much, volatile bestsellers carry too little, and the average looks fine.
The tell: you are overstocked in cash terms and stocked out on the products that matter, in the same month.
4. Nobody owns the number
Marketing owns demand. Ops owns purchase orders. Finance owns the cash that limits both. Availability sits between all three and belongs to none of them.
The tell: ask why the bestseller went out and you get three explanations that are each individually true.
How to fix it, in order
Aimed at 5%, not at zero.
1. Measure honestly. Revenue-weighted, at variant level, with days-out per SKU. If you do nothing else, do this. You cannot make a capital trade-off against a number you are flattering.
2. Segment the catalogue. Top SKUs by revenue get a different policy from the tail. Decide explicitly where you are willing to stock out.
3. Put the campaign calendar into the planning cycle. The single highest-value change for most D2C brands. Planning needs to see what marketing is about to launch, with enough lead time to do something about it. This is a meeting, not a system.
4. Plan lead times from your own data. Twelve months of actual receipt dates against order dates, per supplier. Use the 80th percentile, not the average and not the quoted number.
5. Differentiate safety stock by variability. Volatile demand or supply gets more cover, stable gets less. This will not save you from a 5x campaign, and it should not be sized as if it could. It handles ordinary variance so your capital is aimed at the right SKUs.
6. Pause ads on unavailable products automatically. Cheap, fast, and it usually pays for the rest of the work on its own.
7. Track recovery time. Since you cannot prevent every spike, make speed back the number your team is measured on.
What good looks like
- Overall out-of-stock rate around 5%, with the tail deliberately carrying more of it than the top.
- Revenue-weighted rate lower than the SKU-level rate, which means your inventory is aimed correctly.
- Planning that sees the campaign calendar before the campaign runs.
- Lead times planned at the 80th percentile from real receipt data.
- Zero ad spend running against unavailable products.
- Demand history corrected for stockout periods.
- Recovery time on top SKUs measured in days, not weeks.
- One named owner reporting the number weekly.
None of this needs new software. Most brands doing it well are doing it in the systems they already have, with the trade-offs made deliberately instead of inherited.
If you want the wider frame this sits in, start with what Supply Chain actually covers beyond logistics.
