Skip to content

Descriptive Statistics Calculator

8 values

Mean
5
Median
4.5
Mode
4 (×3)
Sum
40
Count
8
Min
2
Max
9
Range
7
Q1 (25th %ile)
4
Q3 (75th %ile)
5.5
IQR
1.5
Variance (sample)
4.57142857
Variance (pop.)
4
Std dev (sample)
2.13808994
Std dev (pop.)
2

Estimates for educational purposes — not financial, medical, or legal advice. See terms.

Compute the full suite of descriptive statistics from a list of numbers: central-tendency measures (mean, median, mode), spread measures (range, variance, standard deviation, IQR), and percentile summary (Q1, median, Q3). All computed in one pass from a free-form textarea accepting comma, space, newline, semicolon, or tab separators.

What this tool outputs

Fifteen values from any input list:

  • Count — how many numbers in your list
  • Sum — arithmetic sum of all values
  • Mean — the arithmetic average (sum / count)
  • Median — middle value when sorted (midpoint of the two middle values for even-length lists)
  • Mode — most frequent value(s). “No mode” when all values are unique; “multimodal” when multiple values tie
  • Min, Max, Range — smallest, largest, and their difference
  • Q1, Q3, IQR — first and third quartile plus the interquartile range (Q3 − Q1)
  • Sample variance & standard deviation — the n − 1 denominator versions (unbiased estimators for the underlying population)
  • Population variance & standard deviation — the n denominator versions (exact for the data as given)

Example: the [2, 4, 4, 4, 5, 5, 7, 9] reference dataset

A classic stats-textbook example. Enter 2, 4, 4, 4, 5, 5, 7, 9 and the tool reports:

  • Count: 8, Sum: 40, Mean: 5
  • Median: 4.5 (midpoint of the 4th and 5th sorted values, both 4 and 5)
  • Mode: 4 (appears three times, the most of any value)
  • Min: 2, Max: 9, Range: 7
  • Q1: 4, Q3: 5.75, IQR: 1.75 (with type-7 interpolation)
  • Population variance: 4, Population stdev: 2
  • Sample variance: 32/7 ≈ 4.571, Sample stdev: ≈ 2.138

The population stdev of exactly 2 is the reason this dataset is used as a teaching example — it’s the simplest 8-element set with an integer population standard deviation.

Example: a single-value input

Enter just 42. Mean, median, min, max all equal 42. Range = 0. Population variance = 0 (a single point has no spread from itself). Everything else — sample variance, sample stdev, Q1, Q3, IQR — shows as ”—” because those all require at least 2 values to be defined.

Example: all-same-value input

Enter 5, 5, 5, 5, 5. Every statistic except “mode” either equals 5 or 0. The mode is 5 (the single unique value, appearing with frequency 5). Both variances and both standard deviations are 0 because there’s no spread. The IQR is 0, same reason. Useful as a sanity check: if your real-world data accidentally becomes a constant, the tool’s zero-variance output will catch it.

Sample vs. population

Two versions of variance and standard deviation are reported because they answer different questions:

  • Population (divide by n): what is the exact variance of the data I have? Use this when your data IS the population you care about (a census, a complete set of measurements, a closed collection).
  • Sample (divide by n − 1, Bessel’s correction): what is an unbiased estimate of the variance of the underlying population, given this sample? Use this when your data is a random sample drawn from a larger population and you want to say something about the population.

In practice, most real-world statistics uses samples — if you’re analysing a subset of your users, a day’s server logs, or a batch of measurements, you want the sample versions. If you’re computing stats for a specific roster, class, or inventory, use the population versions.

Quartiles: the type-7 convention

The tool uses linear interpolation between adjacent sorted values (type-7 in the Hyndman & Fan taxonomy). For sorted values s[0], s[1], ..., s[n-1], quantile p is at position h = (n − 1) · p. Round down to get the lower index, then linearly interpolate between s[⌊h⌋] and s[⌊h⌋ + 1].

This is what R uses by default, and what most modern stats packages default to. Excel’s QUARTILE.INC uses the same method; QUARTILE.EXC uses a subtly different one (type-6). Tukey’s hinges (the original boxplot quartiles) and the SAS default (type-3) both differ slightly. For most datasets and most purposes the differences are small, but if you’re matching a specific expected output from a textbook or software package, check which convention it uses.

What this tool does not do

It doesn’t handle grouped / frequency data. If your input is “10 values of 5, 15 values of 7, 5 values of 9”, you’d need to expand that into a flat list first. A grouped-data calculator is a different tool.

It doesn’t compute confidence intervals, hypothesis tests, or p-values. Descriptive statistics describe the data you have; inferential statistics draw conclusions about a larger population. For standardising a single value against the mean and stdev this tool already computes, use the z-score calculator. For full t-tests, chi-square tests, regression, and so on, use a statistics package like R, SciPy, or a dedicated web calculator.

It doesn’t handle missing values specially. Blank tokens are ignored by the parser, but there’s no distinction between “no data” and “zero”; if you have missing values in your input, strip them out before pasting.

It doesn’t plot histograms or box plots. For visualisation, use a spreadsheet, matplotlib, or a dedicated charting tool.

It doesn’t support weighted statistics. Every value counts equally; you can’t say “this value should count twice” without duplicating it.

Frequently asked questions

What's the difference between sample and population standard deviation?

Sample standard deviation divides the sum of squared deviations by n − 1; population standard deviation divides by n. The n − 1 version (Bessel's correction) is what you use when your data is a sample drawn from a larger population and you want an unbiased estimate of the population's true variance. The n version is correct when your data IS the entire population you care about. In practice, most real-world uses are samples, so the sample stdev is the default in stats courses. The tool shows both — use whichever matches your situation.

How does the tool compute quartiles?

Using linear interpolation between adjacent sorted values — specifically the 'type-7' convention from Hyndman & Fan (1996), which is what R and most modern stats packages use by default. For a sorted list of n values, the position of quantile p is h = (n − 1) · p. If h is an integer, use that value directly; if it's fractional, linearly interpolate between the two neighbouring values. There are at least nine different quantile conventions in common use (Excel's QUARTILE.INC, Tukey's hinges, the 'method 6' of SPSS, etc.), but type-7 is the most common default. If you need a specific convention for a class or paper, check with your instructor — the differences are small but the answers won't match exactly.

What happens with only one value?

The mean, median, min, max all equal that single value, and the range is 0. The population variance is 0 (zero deviation from the mean, by definition). The sample variance, sample standard deviation, Q1, Q3, and IQR are all reported as NaN (shown as '—') because they all require at least 2 values to be defined — sample variance divides by n − 1 = 0, and quartiles need at least two points to interpolate between.

What does 'no mode' mean?

It means every value in the dataset appears exactly once, so no value has a higher frequency than any other. Some definitions say the mode is undefined in that case; others say every value is a mode. The tool labels it 'no mode (all unique)' rather than listing every value, because for large unique datasets listing every value isn't useful. If multiple values are tied for the maximum frequency (bimodal, trimodal), the tool lists all of them.

Can I paste data from Excel or Google Sheets?

Yes. Copy a column or row from a spreadsheet and paste into the textarea — the tool's parser accepts any mix of comma, space, newline, tab, and semicolon as separators. A column copied from Excel comes in as newline-separated values; a row comes in as tab-separated. Both parse correctly. You may need to strip header rows manually if the first row isn't a number.