The formula, the z table, a worked example, and the three cases where this formula quietly gives you a wrong answer. There is a calculator below, but the point of this page is that you can do it on paper afterwards.
Three inputs, and each one is worth being careful about:
z comes from it:| Service level | z | Means |
|---|---|---|
| 90% | 1.28 | You accept running out in about 1 lead time in 10 |
| 95% | 1.65 | About 1 in 20 — the usual starting point |
| 98% | 2.05 | About 1 in 50 |
| 99% | 2.33 | About 1 in 100 — expensive, and rarely worth it below a high-margin bestseller |
The reorder point is when to order, not how much. When stock on hand plus stock already on order falls to this number, you place the order.
This runs in your browser. Nothing is sent anywhere — the page is blocked from making network requests at all, which you can check by turning your internet off and reloading.
This calculator is the textbook formula. If any of the three cases below apply to your catalogue, the number you just worked out by hand is wrong.
This is the part most sources get wrong, and getting it wrong is expensive in a way nobody notices — it does not cause a stockout, it just quietly parks your cash in a warehouse.
Demand over a lead time is a count of events: so many orders arrive, each for a unit or two. Counts like that follow a Poisson distribution, and the defining property of a Poisson distribution is that its variance equals its mean. The standard deviation is therefore the square root of expected demand — not a percentage of it, and not proportional to it.
So doubling your lead time does not double the buffer you need — it multiplies it by about 1.41 (that is √2). Demand over the window doubles, but the uncertainty around it grows only by the square root. Here is the same SKU at four lead times, buffered both ways:
| Lead time | Expected demand | Safety stock, correctly (z√demand) | If you scaled it linearly | Extra cash tied up |
|---|---|---|---|---|
| 15 days | 75 | 14 | 10 | — (under-buffered) |
| 30 days | 150 | 20 | 20 | 0 |
| 60 days | 300 | 29 | 40 | 11 units |
| 120 days | 600 | 40 | 80 | 40 units |
The linear column anchors on the same 30-day buffer of 20 units and scales it with lead time, which is what "double the lead time, double the buffer" gives you. At a 120-day lead time it holds twice the buffer that is actually called for. On one SKU that is 40 units of dead cash; the reason it matters is that you apply this rule to every SKU you stock, and a container-shipped catalogue is mostly long lead times.
The same arithmetic runs the other way at short lead times: scaling down linearly leaves you under-buffered on fast-turning items, which is where stockouts actually happen.
One SKU, every step visible, so you can repeat it in a spreadsheet.
SS-CREAM-50. Sold 450 units over the last 90 open days. Your supplier ships in 21 days, but with their handling and your receiving it is realistically 30. You want to get through 95% of lead times without running out.
When on hand plus on order drops to 170, place the order. The 20 units of safety stock are what you expect to still have left when the delivery lands — they are the buffer against a good week, not spare stock to sell down.
The reorder point tells you when. The quantity depends on how often you review stock — if you check weekly, each order has to cover the lead time and the week until you look again:
For SS-CREAM-50 on a weekly review with 12 units on hand and nothing on order: 5 × 37 = 185, plus 20 safety, minus 12 = 193 units. Then round to your supplier's case size.
The arithmetic above is correct and still gives a badly wrong answer in three common cases. All three are measured failures, not hypotheticals — the numbers come from building the tools on this site.
Divide a weekend product's sales by seven and you get a number that describes no day of its life. The formula then treats five quiet weekdays as demand you failed to meet.
Measured: a Saturday-only SKU selling 1,040 units a year was scored as 6,122 units lost — 5.9× everything it had ever sold.
Do instead: compute the rate over the days it actually sells, and count your lead time in those days too. A 30-day lead time is about 8 Saturdays, not 30.
A public holiday, a site outage, a tracking gap — the data is identical to being out of stock: zero units sold. Left in, they drag your daily rate down and inflate what looks like lost demand.
Measured: one Thanksgiving weekend produced about $2,577 of phantom loss per SKU, spread across an entire catalogue.
Do instead: before anything else, throw away every day on which your whole shop sold nothing. One SKU at zero is a signal; all of them at zero is a closure.
This is the expensive one. The formula only looks at units sold ÷ days. A product you stopped selling four months ago still has a rate, so it still gets a reorder point, and if the on-hand number is low it reads as "order more". Nothing in the arithmetic knows the product is dead.
Measured: during development, a reorder tool recommended restocking a discontinued SKU that was already sitting on 400 dead units — a five-figure write-off, generated by correct arithmetic.
Do instead: before sizing anything, check whether the SKU sold at all in the recent half of your history. If it did not, it gets no reorder point and no order quantity — not a small one. Seasonal products fail this test too, and that is the right outcome: size them from last season, by hand, with your judgement in the loop.
If you want to see where availability already cost you before you change anything, the free stockout cost calculator takes the same orders export and prices the gaps — with all three of the corrections above applied. See it run on sample data if you do not have an export handy.
Everything above is on this page for free, and doing it by hand for your top twenty SKUs is a perfectly reasonable afternoon. It is the every week, for every SKU, with the three corrections applied part that stops happening. That is what the paid tool is for.
Instant download · 30-day refund, no questions asked · free updates within v1.x
A real run of the free stockout calculator, not a mockup: an orders export goes in, the columns are detected, the number comes out. The paid tool takes the same file and points it forwards.
You give it your order history and your stock levels; it produces the decision, not a dashboard:
| SKU | Sells/day | On hand | Cover | Order now | When |
|---|---|---|---|---|---|
| SS-CREAM-50 | 4.83 | 12 | 2 days | 187 | Order today |
| WKND-BOX | 2.85 | 60 | 21 days | 56 | This cycle |
| B2B-CASE-12 | 6.00 | 900 | 150 days | — | Stocked |
Export as purchase-order.csv with costs and line totals, and send it to your supplier.
Every weekday gets its own rate, whole-shop zero days are discarded first, safety stock uses the square root, and any SKU with no sales in the recent half of your history is refused an order quantity rather than given a small one. Each SKU it declines to size is listed with the reason — nothing is silently dropped.
One HTML file. Your order history and stock levels are read by JavaScript already in your browser and go nowhere — the file ships a Content-Security-Policy of default-src 'none', so the browser blocks every outbound request. Turn off your internet and it works identically. There is nothing to cancel and no vendor who can raise your price later.
| Reorder Copilot | A typical inventory app | |
|---|---|---|
| Price | $49 once | $50–290 / month, forever |
| Setup | Two CSVs, no account | OAuth, sync, onboarding |
| Live sync with your store | No — you re-export when you reorder | Yes |
| Multi-warehouse allocation | No | Usually |
| Supplier MOQ / price breaks | No | Sometimes |
| Your data leaves your machine | Never | Yes, by design |
| Refuses to guess | Yes, and says why | Rarely |
If you reorder weekly from one location and a re-export is no burden, the monthly fee buys you convenience you may not need. If you run multiple warehouses or need live sync, buy the app instead — this is not trying to be that, and saying so is cheaper for both of us than a refund.
If the first run doesn't tell you something useful about your own catalogue, ask for a refund and keep the file. I would rather that than have you argue with me about it.
Order history CSV with a date, a SKU and a quantity — Shopify, Amazon, WooCommerce, or your own spreadsheet. Stock on hand CSV is optional, but needed for order quantities rather than just reorder points. Any modern browser. No installation.