Free · no signup · nothing to upload

How to work out your reorder point

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.

The formula

Reorder point = (demand per day × lead time) + safety stock
safety stock  = z × √(demand per day × lead time)

Three inputs, and each one is worth being careful about:

Service levelzMeans
90%1.28You accept running out in about 1 lead time in 10
95%1.65About 1 in 20 — the usual starting point
98%2.05About 1 in 50
99%2.33About 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.

Work out yours

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.

Reorder point

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.

Why safety stock uses a square root

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.

expected demand over lead time = 5/day × 30 days = 150
variance = 150  →  standard deviation = √150 = 12.2
safety stock = 1.65 × 12.2 = 20 units

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 timeExpected demandSafety stock, correctly (z√demand)If you scaled it linearlyExtra cash tied up
15 days751410— (under-buffered)
30 days15020200
60 days300294011 units
120 days600408040 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.

A worked example

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.

1. demand per day   = 450 ÷ 90 = 5 units/day
2. lead-time demand = 5 × 30 = 150 units
3. z at 95%         = 1.65
4. safety stock     = 1.65 × √150 = 1.65 × 12.25 = 20 units
5. reorder point    = 150 + 20 = 170 units

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.

How much to order is a different question

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:

order quantity = demand over (lead time + review cycle) + safety stock
                 − (on hand + already on order)

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.

Three ways this formula misleads you

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.

1. A product that only sells on certain days has no "per day" rate

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.

2. Days you were closed look exactly like a stockout

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.

3. A discontinued product still has a demand history — and the formula will happily restock it

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.

A formula that returns a confident number for every SKU is easier to build and easier to sell. It is also how warehouses fill up with stock nobody ordered on purpose.

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.

If you would rather not do this per SKU every week

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.

$49 once — not per month
Not on sale yet — the payment page is being set up. Check back in a few days.

Instant download · 30-day refund, no questions asked · free updates within v1.x

An orders CSV is dropped in, columns are detected automatically, and the estimated cost of stockouts appears — $1,735 across one SKU and 12 stockout days.

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:

SKUSells/dayOn handCoverOrder nowWhen
SS-CREAM-504.83122 days187Order today
WKND-BOX2.856021 days56This cycle
B2B-CASE-126.00900150 daysStocked

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.

No server. That is the whole architecture.

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.

Honest comparison

Reorder CopilotA typical inventory app
Price$49 once$50–290 / month, forever
SetupTwo CSVs, no accountOAuth, sync, onboarding
Live sync with your storeNo — you re-export when you reorderYes
Multi-warehouse allocationNoUsually
Supplier MOQ / price breaksNoSometimes
Your data leaves your machineNeverYes, by design
Refuses to guessYes, and says whyRarely

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.

Not for you if

$49 once
Not on sale yet — the payment page is being set up. Check back in a few days.

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.

Requirements

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.