XYZ Analysis Calculator

Classify inventory into X, Y and Z groups from historical demand variability. Paste spreadsheet data or import CSV, calculate coefficient of variation, detect intermittent demand and export SKU-level results.

No sign-up CSV import Custom CV thresholds Sample or population SD Intermittency diagnostics CSV export

XYZ analysis compares demand variability across SKUs using the coefficient of variation: standard deviation divided by average demand. Use equally spaced demand periods such as weeks or months. Threshold conventions differ between organizations, so this calculator provides presets and custom cutoffs.

Analysis settings

X is at or below the first threshold. Y is above X and at or below the second threshold.
Sample uses N minus 1. Population uses N.
SKUs with fewer valid observations are excluded from classification.
Flags SKUs with at least this share of zero-demand periods.

Historical demand data

First two columns: SKU and Item Name. Every following column is one equal-length demand period. A header row is recommended.

XYZ analysis sorts inventory by how erratic historical demand actually is. Where ABC cares about economic weight, XYZ cares about something different entirely — which SKUs behave predictably, and which ones don’t.

WareStat’s XYZ Analysis Calculator handles multiple SKUs at once. Paste from Excel or Sheets, import a CSV, pick your coefficient-of-variation thresholds, export the finished classification when you’re done.

The Formula Behind It

XYZ classification usually runs on the coefficient of variation:

Coefficient of Variation = Standard Deviation / Average Demand

As a percentage:

CV (%) = (Standard Deviation / Average Demand) × 100

Because it measures variability relative to average demand, CV lets you compare a SKU that sells 10 units a month against one that sells 10,000 — same yardstick, wildly different scale.

X, Y and Z, Plainly

X items — low variability, generally the easiest to forecast with any confidence.

Y items — moderate variability. Worth a closer look for trend, seasonality, promotions, anything recurring that might explain the swings.

Z items — high variability, and usually the hardest to nail down reliably no matter how good your forecasting model is.

Two things XYZ does not tell you on its own: whether a pattern is seasonal, and how much money is actually riding on the product. It measures variability. That’s it.

Which Thresholds Should You Actually Use?

There isn’t a single standard everyone agrees on. Different methodologies land in genuinely different places — a few examples that show up in published approaches:

  • X ≤ 10%, Y ≤ 25%, Z above 25%
  • X ≤ 25%, Y ≤ 50%, Z above 50%
  • X below 50%, Y between 50–100%, Z above 100%

WareStat ships all three as presets, plus fully custom limits if none of them match how your business actually behaves.

What matters more than which set you pick is sticking with it. Switch methods halfway through a comparison and you’re not really comparing anything anymore.

Sample vs Population Standard Deviation

Both are supported, and the distinction is worth getting right.

Population standard deviation divides by N — fine when the numbers you’ve entered are the complete history you care about, not a sample of something larger.

Sample standard deviation divides by N − 1. It’s the more common choice for XYZ work, and it’s what Excel’s STDEV.S function does under the hood.

Pick one. Stick with it across whatever you’re comparing.

Getting Your Data Ready

One row per SKU. First two columns:

SKU | Item Name

Then a column per period, evenly spaced:

SKU | Item Name | Jan | Feb | Mar | Apr | May | Jun

Weekly works, monthly works, really any interval works — as long as every column in the same analysis covers a comparable stretch of time. And this only works with actual history behind it. A brand-new product with no track record simply doesn’t have the data XYZ needs to say anything meaningful.

Zero Demand Isn’t Nothing — It’s Information

A product moving 20 units every single month is a completely different animal from one that sells 120 units once every six months, even if the long-run averages come out looking similar.

So WareStat calculates the percentage of zero-demand periods per SKU, and flags intermittent demand separately from everything else.

You also get to decide what a blank cell actually means — zero demand, or just missing data? Get that wrong and missing observations quietly get treated as real sales of zero, which skews everything downstream.

And when average demand really is zero, CV literally can’t be calculated — you’d be dividing by zero. Rather than force that into Class Z and pretend it means something, WareStat just marks it N/D.

What You Actually Get Back

For every SKU:

  • total demand
  • average demand
  • standard deviation
  • coefficient of variation
  • zero-demand percentage
  • minimum and maximum demand
  • max-to-average ratio
  • XYZ class
  • a demand-pattern warning where relevant

There’s also a variability chart, which makes the outliers — the products sitting way past your X and Y cutoffs — pretty obvious at a glance.

How This Differs From ABC

Different questions entirely.

ABC asks: which products carry the most economic weight? XYZ asks: which products behave the most predictably?

Run both together and you get combined categories — AX, AY, AZ, BX, CZ, and so on — which is really where things get useful, because now you’re weighing value and uncertainty at the same time instead of just one or the other.

FAQ

What does XYZ analysis mean in inventory management? It sorts inventory into classes based on historical demand variability, typically using the coefficient of variation.

What’s the coefficient of variation, exactly? Standard deviation divided by average demand, usually shown as a percentage.

Are the X/Y/Z thresholds fixed? No. Different organizations use different cutoffs — that’s exactly why WareStat lets you change them.

How many months of history do I actually need? Enough to reflect how the SKU normally behaves. Too little and your variability estimate gets shaky; too much old data and it may not reflect current demand anymore.

Can I just paste data from Excel? Yes — SKU, name, and demand history columns copy straight in from Excel or Google Sheets.

What happens with products that never sell? If average demand is zero, CV is undefined — there’s no getting around the math. WareStat flags those separately rather than handing you a misleading class.