exExponentialGrowthCalculator

Virus Spread & Epidemic Growth Calculator

A virus spread calculator projects epidemic case counts using I(t) = I₀ × R₀^(t/g), where R₀ is the average number of people each infected person infects and g is the generation time between infections. Enter the initial cases, R₀ and generation time to get the case count, doubling time and herd immunity threshold.

Epidemic projection

Cases at t
409,600
Doubling Time
5 days
Herd Immunity
50%
-32,660204,850442,36003060
Calculation steps
I(60) = 100 × 2^(60 / 5) = 409,600

The epidemic exponential phase

In the early days of an outbreak, when nearly everyone is susceptible, cases grow as I(t) = I₀ × R₀^(t / g). This is exponential growth with base R₀ and exponent measured in generations. Once enough of the population has been infected or vaccinated, the curve bends and behaves more like the logistic growth model, with a ceiling instead of unbounded growth.

Doubling time and herd immunity

Doubling time T_d = g × ln(2) / ln(R₀). Herd immunity threshold is 1 − 1/R₀. A pathogen with R₀ = 3 needs 67% immunity to halt sustained transmission. The same doubling time math used for money or population applies here, just driven by R₀ and generation time instead of a fixed annual rate.

Worked example: the default projection

With the calculator's default inputs, an initial 100 cases, R₀ = 2, and a 5-day generation time, day 60 falls at generation 12 (60 divided by 5), so the projected case count is 100 × 2^12 = 409,600. The doubling time for these inputs is exactly 5 days, matching the generation time whenever R₀ = 2, and the herd immunity threshold sits at 50%. Dropping R₀ to 1 stops growth entirely, since each infected person then infects exactly one other person on average.

Why reported case counts lag reality

Reported case counts always lag the true number of infections, because of the delay between infection, symptom onset, testing, and data reporting. During the exponential phase this lag can make an epidemic look smaller than it is: a count that appears to double every 5 days today reflects infections that occurred several days earlier, so the true current case count is already higher. Modellers often shift the case curve backward by the average reporting delay before fitting R₀ or generation time to real data.

Using this calculator for planning

Public health planning typically runs this projection under a few different R₀ scenarios rather than trusting one estimate, since early-outbreak R₀ figures carry wide uncertainty. Starting from 100 cases with a 5-day generation time, day-30 case counts reach about 1,139 at R₀ = 1.5 and 6,400 at R₀ = 2. Raise R₀ to 3 and the same day-30 count jumps to 72,900. That wide range in outcome from a modest change in R₀ is why hospital capacity planning and vaccine rollout targets are built around a range of scenarios rather than a single projected number.

Limits of a constant-R₀ model

A constant R₀ is a simplification. Real transmission rates shift as people change behaviour, as new variants with different transmissibility emerge, and as seasons change indoor crowding and humidity. A model built on one fixed R₀ and generation time is most reliable for the first few weeks of a new outbreak, before behaviour change or accumulating immunity has had time to bend the curve. Longer-range forecasting needs a time-varying R_t rather than the fixed R₀ used in this early-phase calculator. Treat every projection here as a snapshot based on today's transmissibility, not a forecast of how the outbreak will behave months from now.

R₀ for selected pathogens

PathogenApprox. R₀Herd immunity
Seasonal flu1.323%
COVID-19 ancestral2.560%
SARS367%
Measles12–1892–94%

FAQ

What is R₀?

R₀, the basic reproduction number, is the average number of new infections one infected person causes in a population where everyone is still susceptible. R₀ above 1 means each generation of cases is larger than the last, so the epidemic grows exponentially. R₀ below 1 means the outbreak shrinks and eventually dies out, which is the entire goal of measures like vaccination and distancing.

What is generation time in epidemics?

Generation time, also called the serial interval, is the average time between one person becoming infected and the people they infect becoming infected in turn. It is roughly 4 to 6 days for COVID-19, 11 to 12 days for measles, and 2 to 4 days for influenza. Shorter generation times make an epidemic feel faster even at the same R₀, because cases turn over more quickly.

How does R₀ link to doubling time?

Doubling time equals generation time multiplied by ln(2) divided by ln(R₀). An R₀ of 2 with a 5-day generation time produces a doubling time of exactly 5 days, since ln(2)/ln(2) equals 1. An R₀ of 1.5 with the same 5-day generation time stretches doubling time out to about 8.5 days, because each generation adds fewer new infections.

What is the herd immunity threshold?

Herd immunity is the point where 1 minus 1 divided by R₀ of the population is immune, either from infection or vaccination, so each new case infects fewer than one other person on average. An R₀ of 2 needs 50% immunity, an R₀ of 4 needs 75%, and an R₀ of 12, roughly measles, needs about 92%. Higher R₀ pathogens require far more of the population protected before spread stops on its own.

Does exponential growth continue forever?

No, exponential growth only describes the early phase of an outbreak, while nearly everyone is still susceptible. As people recover, get vaccinated, or otherwise leave the susceptible pool, growth slows and follows a logistic curve instead of a pure exponential one. Real epidemics always bend before infinite growth. Because of this, case counts eventually peak and decline rather than growing forever.

How is R differentiated from R₀?

R₀ assumes the entire population starts susceptible with no immunity and no behaviour change, making it a fixed property of the pathogen in a naive population. The effective reproduction number, R_t, accounts for existing immunity, current behaviour, and interventions like masking or distancing, so it changes constantly during an outbreak. Public health agencies track R_t week to week to judge whether an epidemic is currently growing or shrinking.

Related calculators

Exponential Growth
Generic version of the same model.
Bacterial Growth
Same equation for binary fission.
Logistic Growth
Late-stage epidemic saturation.
Doubling Time
Convert R₀ to doubling horizon.