Cycle Counting: How to Keep Inventory Accurate Without Shutting Down

Cycle counting is how you keep inventory accurate without closing the warehouse for a weekend. Instead of counting everything once a year, you count a small slice of your stock every day, so errors surface in days instead of months.
Here is what cycle counting is, the main methods, a step-by-step process, a worked example with the math, and how to measure whether it is actually working.
What cycle counting actually is
Cycle counting is a recurring audit where you count a subset of your SKUs on a rotating schedule while normal operations keep running. Nobody stops picking, receiving, or shipping. A counter walks a handful of locations, counts what is there, and compares it to what the system says should be there.
The point is not the count itself. The point is catching the cause of the error while it is still fresh. If a bin is short today, you can trace it to a mis-pick or a bad receipt from this week. If you only count once a year, that same error is buried under twelve months of transactions and you will never find the root cause.
Cycle counting vs the annual physical count
The traditional alternative is the wall-to-wall physical inventory: shut down, count everything, reconcile, reopen. It has its place (some auditors still want one), but as an accuracy tool it is weak.
| Cycle counting | Annual physical count | |
|---|---|---|
| Downtime | None | Full shutdown, often a weekend |
| Error detection | Within days | Once a year |
| Root-cause fixes | Yes, errors are recent | No, causes are long gone |
| Labor | Spread evenly | One brutal spike |
| Accuracy trend | Continuously improving | Reset once, then drifts |
The annual count tells you how wrong you were. Cycle counting keeps you from getting wrong in the first place.
The three cycle counting methods
You do not count every SKU equally often. You count the important stuff more. There are three common ways to decide "important."
ABC analysis. Rank SKUs by annual value (usage times cost) and split them into buckets. A items are the vital few that drive most of your value, so you count them most often. C items are cheap or slow, so they get counted rarely. This is the default method for a reason: it puts your counting effort where the money is.
Control group. Count the same small set of items repeatedly over a short window. This is a diagnostic tool, not a full program. You use it to test your process and find whether your errors come from counting, receiving, or the system itself, then you roll the fix out wider.
Random sample. Pick items at random each day. Simple to run and free of bias, but it wastes counts on low-value stock and can miss your high-turnover problem SKUs. Fine as a supplement, weak as your whole strategy.
Most operations run ABC as the backbone and reach for a control group when accuracy is slipping and they need to know why.
How to run a cycle count, step by step
- Classify your SKUs. Run an ABC split by annual value. A rough starting point: top 20% of items by value are A, next 30% are B, remaining 50% are C.
- Set count frequencies. For example, A items monthly, B items quarterly, C items once a year. Adjust to your risk and headcount.
- Freeze the location before counting. Snapshot the expected quantity for the bins you are about to count so in-flight transactions do not muddy the comparison.
- Count blind. Do not show the counter the expected number. If they can see it, they will "confirm" it instead of actually counting.
- Compare and record the variance. Match counted quantity against expected, and log the gap.
- Investigate real variances. Small rounding on a bulk bin is noise. A missing case is a signal. Trace it: mis-pick, unrecorded receipt, damage, theft, or a unit-of-measure mix-up.
- Adjust stock and fix the cause. Correct the record, then fix whatever created the gap so it does not repeat next cycle.
A worked example: how many to count per day
Say you carry 1,000 SKUs and your ABC split lands like this:
- A: 200 SKUs, counted monthly (12 times a year): 200 x 12 = 2,400 counts
- B: 300 SKUs, counted quarterly (4 times a year): 300 x 4 = 1,200 counts
- C: 500 SKUs, counted annually (1 time a year): 500 x 1 = 500 counts
Add them up: 2,400 + 1,200 + 500 = 4,100 counts per year.
Now spread that across your working days. With about 250 working days:
Counts per day = total planned counts per year / working days per year
Counts per day = 4,100 / 250
Counts per day = 17 SKUs per day
Seventeen SKUs a day. That is one person, maybe an hour, and every item in the building gets verified on a schedule that matches its value. Compare that to the annual count, where those same 4,100+ line items all land in one exhausting weekend.
How to measure if it is working
Counting is the input. Accuracy is the output. Track Inventory Record Accuracy (IRA): the share of counts where the physical quantity matched the system.
Record accuracy = (counts that matched) / (total counts) x 100
Count 17 items and 16 match the system exactly? That is 94%. A healthy warehouse target is 97% or higher, and world-class operations push past 99% on their A items.
One rule that keeps this honest: use an exact match, not a "close enough" tolerance. If you count 48 and the system said 50, that record did not match. Counting it as a pass because it is "only two off" is how a 92% operation convinces itself it is at 99%.
Common mistakes to avoid
- Counting with the expected number visible. Blind counts or your data is soft.
- Treating every variance as an adjustment. Fix the record and the cause, or you will re-count the same error forever.
- One frequency for all SKUs. A fast-moving A item and a dusty C item do not deserve the same attention.
- Doing it in a spreadsheet past a few hundred SKUs. Manual scheduling, freezing, and variance tracking collapses under real volume across multiple bins and locations.
Where software takes over
Everything above is mechanical, which means it is a job for software once you are past a small catalog. A good system holds the ABC class per SKU, schedules the counts, freezes the location, records variances, and reports your accuracy trend without you nursing a spreadsheet.
Inventoros handles cycle counting across multiple locations out of the box, tracks variances and record accuracy, and it is open source, so you self-host it and own every number. The documentation walks through cPanel, VPS, and Docker installs, and because it ships a full REST and GraphQL API, you can feed counts in from barcode scanners or your own mobile flow instead of typing them by hand.
FAQ
How often should I cycle count? Count by value, not by calendar habit. A typical schedule is A items monthly, B items quarterly, and C items once a year. Tighten the frequency on anything that moves fast or has a history of shrinkage.
What is a good inventory accuracy target? Aim for 97% or higher on record accuracy, using an exact match rather than a tolerance. High-value A items should sit at 99% or better, since that is where errors cost you the most.
Do I have to stop operations to cycle count? No, and that is the entire advantage. You count a few locations at a time while picking and receiving continue. Just freeze the expected quantity for a bin right before you count it so in-flight transactions do not distort the comparison.
Is cycle counting better than an annual physical inventory? For keeping stock accurate, yes. Cycle counting catches errors within days and lets you fix the cause. An annual count only measures how far you drifted after the fact. Some businesses still run a yearly count for their auditors, but they rely on cycle counting to stay accurate the rest of the year.