Sample Size for a Proportion
How many respondents do you need for a given margin of error?
Overview
The Sample Size for a Proportion calculator tells you how many respondents you need to estimate a population proportion within a chosen margin of error and confidence level. Pop in 95% confidence and a ±3% margin and the calculator returns the minimum survey size.
It is built for survey designers, market researchers, public-health analysts and anyone running a poll. Sample size is the lever between cost and precision — and underpowered surveys mislead.
How it works
For a binary proportion with worst-case variance at p = 0.5, the sample-size formula is n = (z² * p * (1 - p)) / E², where z is the critical value for the chosen confidence level (1.96 for 95%) and E is the desired margin of error as a decimal.
If you know the population is finite (size N), the calculator applies a finite-population correction: n_corrected = n / (1 + (n - 1) / N). This brings the requirement down when sampling a meaningful fraction of the population.
Examples
95% confidence, ±5% margin, p assumed 0.5
→ n ≈ 385
95% confidence, ±3% margin, p assumed 0.5
→ n ≈ 1,068
99% confidence, ±5% margin, p assumed 0.5
→ n ≈ 666
95% confidence, ±5% margin, population 1,000
→ n ≈ 278 (finite correction)
FAQ
Why assume p = 0.5?
It maximises p * (1 - p), making the formula conservative — you can never need more respondents than the p = 0.5 case predicts.
What if I know p is far from 0.5?
Use the actual estimate. For rare proportions (p near 0 or 1) the required sample drops significantly.
Does the population size matter?
For small populations, yes. With millions of people you don't need to know N. For a 1,000-person community, the correction can cut the requirement substantially.
Is this for one-time surveys or ongoing tracking?
It's a single-point estimate. Tracking studies need a sample size that supports the smallest detectable change between waves, which is a different calculation.
What about non-response?
The calculator returns the number of completed responses needed. To account for non-response, inflate by 1 / response_rate.