ABC-XYZ Analysis Calculator

Combine product value and demand variability in one ABC-XYZ inventory matrix. Import historical demand, classify each SKU into one of nine segments and identify where inventory control deserves the most attention.

No sign-up CSV import Custom ABC thresholds Custom XYZ thresholds Clickable 9-cell matrix CSV export

ABC measures economic importance. XYZ measures historical demand variability. The combined matrix separates high-value predictable SKUs from high-value volatile SKUs and from lower-value items that may justify simpler control. Thresholds are configurable because no single split fits every inventory portfolio.

ABC settings

Direct value can represent revenue, gross margin, purchasing value or another consistent monetary measure.

XYZ settings

Flags SKUs when zero-demand periods reach this share of history.

SKU data

Expected columns: SKU, Item Name, Unit Cost, then equal-length demand periods.

ABC-XYZ analysis stacks two classifications on top of each other and gives you a nine-segment matrix out the other end. ABC handles economic weight. XYZ handles how erratic demand has actually been. Put them together and you get something neither one gives you alone.

WareStat’s ABC-XYZ calculator runs both from the same dataset, sorts every eligible SKU into one of nine buckets — AX, AY, AZ, BX, BY, BZ, CX, CY, CZ — and shows exactly how much of your portfolio’s value is sitting in each one.

The Two Dimensions

They’re calculated independently, then merged.

For ABC:

ABC Value = Total Demand × Unit Cost

Rank everything high to low, convert to cumulative percentages, split into A, B and C.

For XYZ, it’s the coefficient of variation:

CV = Standard Deviation of Demand / Average Demand

Cross the two and you land on a 3×3 grid — nine segments running from AX (high value, steady as a rock) down to CZ (low value, all over the place).

What Each of the Nine Segments Actually Means

AX — high value, stable demand. Usually earns tight control, solid records, frequent review. Because demand here is predictable, buffers can often stay leaner than you’d expect for something this financially important.

AY — high value, moderate variability. Financially significant enough that it’s worth digging into why the variability exists — trend, seasonality, a promo calendar, something recurring.

AZ — high value, volatile demand. Probably the segment most worth investigating first. Big money riding on something you can’t predict well is exactly the combination that causes the worst stockouts and the worst excess stock, often in the same year.

BX — medium value, stable demand. A reasonable candidate for standardized, partly automated replenishment — nothing dramatic needed here.

BY — medium value, moderate variability. Balanced attention, without the intensity you’d apply to an A item.

BZ — medium value, volatile demand. The volatility can still bite — shortages, excess stock, both — so exception-based planning tends to earn its keep here.

CX — lower value, stable demand. Good territory for simplified control and automation, assuming operational criticality doesn’t say otherwise.

CY — lower value, moderate variability. Simple policies generally work, though it’s worth keeping an eye on anything seasonal or event-driven underneath the numbers.

CZ — lower value, volatile demand. Often the segment where simplified Min/Max rules, make-to-order, lower stocking priority, or outright SKU rationalization start to make sense.

None of this is a rulebook to follow blindly. Lead time, margins, criticality, substitution options — all of that still needs to sit alongside whatever segment a product lands in.

The Matrix Itself

Every combination shows up in an interactive 3×3 grid. Each cell tells you:

  • how many SKUs live there
  • what share of total portfolio value that represents
  • which segment it is

Click into AZ, or CX, or wherever — the detailed SKU table filters instantly. It’s not just a classification result sitting on a screen; it’s a way to actually see where money and unpredictability overlap.

ABC Thresholds

A typical starting point:

A — roughly the first 80% of cumulative value B — 80% to 95% C — whatever’s left

Not universal, though — WareStat also ships 80/95, 70/90 and 75/95 presets, plus fully custom thresholds.

One detail worth knowing: whatever SKU pushes the cumulative total across a threshold stays in the higher class. Otherwise a single large item could get bumped down a tier purely because its own value happened to tip the running total over the line — which would be a strange way to reward size.

XYZ Thresholds

Same story, no universal standard here either.

Published conventions land in different places — roughly 10%/25%, 25%/50%, or 50%/100% depending on who you ask. All three ship as presets, and you can go fully custom if none fit.

What matters more than the specific cutoff is not switching mid-comparison.

What Data Does This Actually Need?

For standard ABC, the layout is:

SKU | Item Name | Unit Cost | Period 1 | Period 2 | Period 3 | …

Something like:

SKU-001 | Filter | 8.50 | 100 | 105 | 98 | 102 | 101 | 99

WareStat totals demand across those periods and multiplies by unit cost to rank for ABC.

Already have a financial figure per SKU? Switch to Direct Annual Value instead — revenue, gross margin, purchasing value, whatever fits — while the period columns keep driving the XYZ half of the analysis regardless.

Where the Real Risk Concentrates

A basic matrix tells you how many products fall where. WareStat goes further and calculates how much value sits inside volatile, hard-to-predict demand specifically.

Two numbers worth paying attention to:

Z-Class Value Exposure — the share of total ABC value tied up across every Z item.

AZ Exposure — the share concentrated specifically in the high-value, high-variability corner.

A portfolio stuffed with Z items isn’t automatically risky — not if those items are cheap and don’t matter much financially. AZ exposure is what actually separates “lots of unpredictable SKUs” from “a lot of money riding on unpredictable SKUs.” Very different problems.

Zero and Intermittent Demand

CV by itself doesn’t tell the whole intermittent-demand story.

So WareStat also tracks the percentage of periods with zero demand per SKU, and flags anything crossing your chosen intermittency threshold.

Blank cells can be treated either as genuine zero demand or as missing observations — your call, and it matters, because letting missing history masquerade as real zero sales quietly distorts the variability numbers underneath everything.

And when average demand is actually zero, CV simply can’t be computed — division by the mean breaks down. The product keeps its ABC class either way; the XYZ side just reports N/D rather than forcing it into Z and pretending that means something.

What This Doesn’t Tell You

ABC-XYZ is a segmentation tool. It isn’t a forecasting model, and treating it like one is a mistake worth avoiding.

Two products can share nearly identical CVs while behaving nothing alike underneath — one seasonal, one trending steadily upward, one just spiking randomly a couple times a year. The number alone doesn’t distinguish between them.

It also has nothing to say about lead time, criticality, substitutability, obsolescence risk, or how SKUs relate to each other. All of that needs separate evaluation before a matrix cell turns into an actual stocking decision.

ABC-XYZ Compared to ABC Alone

ABC alone answers one question: which SKUs matter most financially?

XYZ alone answers a different one: which SKUs are hardest to predict?

Put together, you get the more useful combined question — which financially important products are actually easy or hard to forecast? That’s exactly why two Class A products can end up needing completely different inventory policies, even though ABC alone would treat them identically.

FAQ

What is ABC-XYZ analysis? It layers an economic-value classification on top of a demand-variability classification, producing nine combined segments.

What does AX mean? High economic importance, relatively stable historical demand.

What does AZ mean? High value, high variability — usually the segment deserving the closest planning attention.

What does CZ mean? Lower value, highly variable demand. Depending on operational importance, often a candidate for simplified stocking or a broader portfolio review.

Can I paste from Excel? Yes — SKU, name, value or unit cost, and historical demand columns all copy straight in from Excel or Google Sheets.

Can I import a CSV? Yes, and you can export the finished SKU-level classification back out as CSV too.

Revenue or unit cost for the ABC side? Traditional ABC leans on consumption value — quantity times unit cost. But WareStat also supports direct financial metrics like revenue or gross margin when that fits your purpose better.

Is ABC-XYZ enough on its own to set safety stock? No. It’s a genuinely useful segmentation layer, but safety stock still needs to account for demand distribution, lead-time uncertainty, service targets and what a stockout actually costs you.