Forecast error calculator (MAPE, WAPE, MASE)
How accurate are your forecasts, and in which direction do they drift? Paste actual and forecast values to see nine metrics, a per-product table and error charts. Below we also explain when each metric misleads.
Data is processed in your browser; nothing is sent anywhere.
The delimiter is detected automatically (tab, ; , |). You can copy and paste from Excel. Decimal comma and point are both accepted; date formats are yyyy-mm-dd and dd.mm.yyyy. If the first row is a header, columns are recognised by name; change them below if they are wrong.
01
How to use it
A
Paste actual and forecast values or upload a CSV; add a product/series name and a date column if you have them.
B
Check that the columns were recognised correctly; enter the seasonal period for MASE (12 for monthly).
C
Read the metrics, the per-product table and the charts; the warning notes tell you which metric not to trust.
02
When is each metric misleading?
MAPE divides each row's error by that row's actual value. When the actual is close to zero the ratio explodes: a forecast of 6 against an actual of 2 counts as a 200% error and can drag the average on its own; when the actual is zero the ratio is undefined, so this tool leaves those rows out of MAPE and tells you how many there were. MAPE also does not weigh under- and over-forecasts equally: if forecasts cannot be negative, an under-forecast is capped at 100% while an over-forecast has no upper limit.
For low-volume products and series, WAPE (Σ|e| / Σ|actual|) is often a better headline metric: it divides the error by total volume, so high-volume rows carry more weight and individual small values cannot distort the ratio. The volume-weighted average of the per-product WAPEs equals the pooled WAPE over all rows.
sMAPE puts the forecast in the denominator too (2|e| / (|A| + |F|)) and stays between 0 and 200%; but the name "symmetric" is misleading: the same absolute error is penalised more when the forecast is lower than when it is higher, and it is undefined for rows with A = F = 0. Do not rely on a single metric; read several together: bias % or ME for direction, WAPE for accuracy, MASE for comparison with the naive method.
03
How are the figures calculated?
The error is e = forecast − actual; a positive value means over-forecast (some sources flip the sign; the magnitudes stay the same). ME is the mean of these errors and shows bias; MAE and RMSE are in the same unit as the actuals, and RMSE penalises large errors more. Bias % = Σe / Σactual × 100.
MASE divides MAE by the naive forecast error of the series: the scale is the mean absolute difference between the actual series and its value one period earlier (m periods earlier if you set a seasonal period m). A value below 1 means you beat the naive method. Because there is no separate training data here, the scale is computed from the actuals in the table; rows must be in time order (the tool sorts them if you select a date column).
The tracking signal is the total error divided by MAE (Σe / MAE). Staying around zero means the forecast does not drift in one direction over time; large values that keep going the same way point to systematic bias. The alarm threshold varies by organisation; ±4 is a commonly quoted example.
04
How to read the per-product report and the total
If the third column holds a product or series name, the tool computes separate metrics for each and sorts them by volume (Σ|actual|). Look at the highest-volume products first: they largely determine the total error.
The total row is the pooled calculation over all rows: WAPE is the volume-weighted average, MAPE and sMAPE are row averages, and MASE is the row average of errors scaled by each product's own scale. For products on different scales, totals of ME, MAE and RMSE do not give a meaningful comparison; look at the per-product values.
A low MAPE can coexist with a high bias (for example always forecasting 5% too high). Do not read the numbers in isolation; look at the charts too: the actual-versus-forecast line shows lag, and the error histogram shows shift and outliers.
FAQ
- Is the data I enter sent anywhere?
- No. All calculations run in code inside your browser; the data is neither transmitted to a server nor stored.
- Why is MAPE so high?
- Rows with small or near-zero actuals inflate the ratio. Look at the tool's warning notes and at WAPE; because WAPE divides the error by total volume it is much less affected by those rows.
- What happens to rows where the actual is zero?
- They are excluded from MAPE and the number of such rows is shown. MAE, RMSE, WAPE and ME include them; sMAPE does too unless actual and forecast are both zero.
- Which metric should I report?
- There is no single right metric. WAPE for overall accuracy, bias % for direction and MASE for comparison with the naive method make a good trio. Use MAPE only for series whose actuals are far from zero.
- How should I choose the seasonal period for MASE?
- If the data has clear seasonality, set the period to the season length: 12 for monthly data, 52 for weekly, 7 for daily. Leave it at 1 if there is no seasonality or you are unsure.
- What if I have no date column?
- Rows are assumed to be in time order. If you select a product column, each product's rows are evaluated in the order you entered them.
Let's find where your forecast goes wrong
We build baseline models on your demand and sales data, compare them with your current forecasting process and break down the sources of error by product and period. Let's talk about your data in a free discovery call.