The Herd Immunity Threshold, Explained
After reading this you can compute the fraction of a population that must be immune to stop an outbreak, explain why unvaccinated people are protected once you cross that line, and spot the assumptions that make the simple formula optimistic.
What the threshold is, with one example
A contagious disease spreads when each infected person passes it to more than one other person on average. Slow that average below one and the outbreak shrinks with every generation of cases. Herd immunity is the trick of pushing that average below one not by isolating everyone, but by making enough of their contacts immune that the chains of transmission break.
Take measles, one of the most contagious diseases known. In a fully susceptible population one case produces roughly 15 new cases. If 90% of contacts are already immune, only 10% of those 15 potential transmissions can happen, so the effective spread drops to about 1.5. That is still above one, so measles keeps going. You need about 94% immune before the effective spread falls below one and the outbreak fizzles. The Explorer lets you drop an infection into a grid and watch this happen: below the line the color floods the grid, above it the infection stalls after a few neighbours.
When this idea applies, and when it does not
The threshold formula assumes people mix roughly at random and that immunity blocks transmission, not just symptoms. Those assumptions hold well enough for a first estimate of many childhood diseases. They break in three common situations.
First, if a vaccine prevents illness but still allows some onward transmission, the real threshold sits higher than the formula predicts. Second, if the population clusters (a school of unvaccinated children inside a well-vaccinated city), local pockets can sustain outbreaks even when the citywide average is above the line. Third, R₀ itself is not a fixed constant of the pathogen. It depends on contact rates, so the same virus has a different R₀ in a crowded dormitory than in a rural village.
The threshold is a population property, not personal protection. Being one unvaccinated person in a 95%-immune town is very different from being unvaccinated in a town at 60%. The formula tells you when chains break on average, not whether any single individual is safe.
The formula and the intuition behind it
Start with the basic reproduction number R_0: the average number of new infections one case causes in a fully susceptible population. If a fraction p of the population is immune, then only the fraction 1-p can be infected, so the effective reproduction number is:
Here R_e is the average number of new cases per case once immunity is present. An outbreak grows when R_e \gt 1 and dies out when R_e \lt 1. Set R_e = 1 and solve for the immune fraction at that tipping point. That critical fraction is the herd immunity threshold p_c:
Every symbol: p_c is the fraction of the population that must be immune, and R_0 is the basic reproduction number. Nothing else. The threshold rises steeply as diseases get more contagious. At R_0 = 2 you need 50% immune. At R_0 = 4 you need 75%. At R_0 = 10 you need 90%.
A worked example using the demo values
R0 = 4 with 75% coverage
The demo drops an infection into the grid with R_0 = 4 and vaccine coverage set right at the threshold. Work the numbers by hand.
- Compute the threshold: p_c = 1 - 1/4 = 0.75. So 75% immune is the tipping point.
- Set coverage at exactly p = 0.75. The effective reproduction number is R_e = 4 \times (1 - 0.75) = 1.0.
- At R_e = 1.0 the outbreak neither grows nor collapses on average. Each case replaces itself. In the grid you see a slow, wandering chain that neither explodes nor dies quickly.
- Nudge coverage to 80%: R_e = 4 \times 0.20 = 0.8. Now each case produces fewer than one on average, so the infection dies out after a handful of steps even though 20% of people were never immune.
- Drop coverage to 60%: R_e = 4 \times 0.40 = 1.6. The infection spreads through most of the susceptible grid.
The lesson from step 4 is the whole point. At 80% coverage the 20% who are unvaccinated rarely get infected, because most of their neighbours cannot pass the disease along. Their protection is indirect, borrowed from the immunity of the crowd around them.
Reading and interpreting the results
The single number to watch is R_e. Above one, expect growth; below one, expect decay. The distance of your coverage from the threshold tells you the margin. At R_0 = 4, coverage of 78% gives R_e = 0.88, a thin margin that a small cluster of unvaccinated contacts can defeat locally. Coverage of 90% gives R_e = 0.40, a comfortable buffer.
Watch the grid runs too. Because the simulation is stochastic (each transmission is a random event), a run just above the threshold sometimes fizzles and sometimes limps along by chance. Run it several times. Near the tipping point the outcome varies; well past it, nearly every run dies out fast.
Read the threshold as a floor, not a target. Aiming for exactly 75% at R_0 = 4 leaves R_e = 1.0, which is not stop, it is stall. Real programs aim well above the line to absorb clustering and imperfect vaccines.
Common mistakes
The frequent errors are all about treating a rough model as a precise one.
- Treating R0 as a property of the virus alone
- R0 folds together how infectious the pathogen is and how often people contact each other. The same disease has a higher R0 in a crowded city, which raises the required coverage.
- Confusing "vaccinated" with "immune"
- If a vaccine is 90% effective, then 100% vaccine coverage gives only 90% immunity. To reach an immune fraction of 0.75 with a 90%-effective vaccine you need coverage of 0.75 / 0.90 \approx 0.83.
- Assuming uniform mixing
- A national average above the threshold can hide local pockets far below it. Outbreaks find those pockets.
- Reading indirect protection as personal safety
- Herd immunity lowers the population risk. It does not make any individual invulnerable, and it erodes quickly if coverage drops.
Related tools on this site
If you like watching biological processes play out step by step, the Antibiotic Resistance Evolution Simulator shows why finishing a course of antibiotics matters, using the same idea of selection over many generations. For how a drug builds and clears in the body over a dosing schedule, see the Drug Half-Life & Dosing Simulator.
For everyday health numbers built on their own formulas, the Blood Pressure Category Calculator classifies a reading, the Water Intake Calculator estimates a daily fluid target, and the Blood Alcohol Estimator applies the Widmark equation.
Frequently asked questions
Why do unvaccinated people stay safe above the threshold?
Because most of their contacts are immune. An unvaccinated person at 90% coverage still gets exposed occasionally, but the person who exposed them almost never has anyone else to pass it to, so chains die out. The protection is borrowed from the crowd, and it disappears if coverage falls.
Does a higher R0 always mean a higher threshold?
Yes. The threshold 1 - 1/R_0 increases with R0. At R_0 = 2 you need 50%, at R_0 = 5 you need 80%, at R_0 = 10 you need 90%. Very contagious diseases can require coverage above 95%.
Can a disease with R0 below 1 spread at all?
Not in a sustained way. With R_0 \lt 1 each case produces fewer than one new case on average, so any introduction fades out on its own, with or without vaccination.
Why does the same coverage sometimes stop the grid and sometimes not?
The simulation is random. Near the threshold, where R_e is close to 1.0, chance decides whether an early chain happens to reach susceptible neighbours. Run it several times to see the spread of outcomes, not just one.
Is the real-world threshold ever higher than the formula says?
Often. Imperfect vaccines, population clustering, and waning immunity all push the practical target above 1 - 1/R_0. The formula is a lower bound under idealized mixing, not a promise.