How the numbers are calculated
For each pair the tool takes the difference (device minus reference) and the mean of the two. The bias is the mean of the differences, d̄, and s is their standard deviation. The limits of agreement are d̄ ± 1.96s (Bland & Altman, 1986).
The confidence interval for the bias is d̄ ± t × s/√n. For each limit, the standard error is s × √(1/n + 1.96²/(2(n − 1))), and its confidence interval is the limit ± t × SE, with t taken from the t distribution on n − 1 degrees of freedom (Bland & Altman, 1999). Proportional bias is tested by regressing the differences on the means; a slope different from zero means the disagreement changes with the size of the measurement.
Reading the plot
Each circle is one pair. The solid line is the bias, the dashed lines are the limits of agreement, and the shaded bands are their confidence intervals. Look for a funnel shape (spread growing with the mean) or a slope. If the spread grows with magnitude, Bland and Altman (1999) suggest transforming the data, for example with logs; the percentage-difference option here is a related alternative.
Is the agreement good enough?
Statistics can't decide that. Set the largest difference that would be clinically or practically acceptable before you collect data, then check whether the confidence intervals of both limits sit inside it. The sample-size calculator uses exactly this rule. For context, see how published studies of wearables report heart rate and SpO2 agreement on the wearable accuracy pages.
Validated against R and Python
On the Bland & Altman (1986) peak-flow data the tool returns a bias of −2.1 l/min and an SD of 38.8 l/min, matching the paper, and its limits and confidence intervals match R's SimplyAgree package to eight decimal places. The regression and error metrics match SciPy. The tests are in the ChatPPG repository.