Yeast Propagation Scheduler
Work backward from your brew day to a full step-up starter plan — the volume, DME weight, and cell target for every step, each with its own start date. Built on the gravity-aware Braukaiser growth model and the industry-standard 10× volume step rule by a former New Belgium yeast specialist.
growth = f(IR, agitation) · 10× volume cap per step (2 L max on the first). Confirm the final step with a cell count before you trust the plan.
Plan the whole build, not just one starter.
A big lager pitch rarely comes from a single starter — it comes from a chain of starters, each one feeding the next. This tool takes your brew day and works backward: it figures out your target cell count, then builds a step-by-step schedule of starter volumes, DME weights, and dates that gets a small pack of yeast to that target without ever exceeding a safe volume jump. Instead of guessing "how many steps do I need," you get the full plan — what to build, how much DME to weigh, and which day to start it.
Everything runs client-side. Nothing is stored, nothing is sent — change any input and the plan recalculates live.
The step-up algorithm, explainedWorking backward from a cell target.
Step 1: find the target, same as the pitch calculator
The target is the standard pitch-rate equation — your chosen rate (M cells/mL/°P) times batch volume times wort gravity in °Plato, converted to billions:
Step 2: grow toward it with the Braukaiser model
Each step builds a fresh DME solution at your chosen starter gravity, pitches in the cells you have so far, and grows them using Kai Troester's gravity-aware model. The model keys off grams of DME, not just volume, because extract mass — not liquid volume — is what actually feeds the yeast:
points = (SG_starter − 1) × 1000
gPerL = 2.72715 × points # g DME per litre — reproduces the classic 100 g/L ≈ 1.037 rule
# inoculation rate (IR) sets the growth factor per gram of DME
IR = current_cells_billion / grams_DME
stir plate: IR < 1.4 → growth = 1.4 | 1.4–3.5 → growth = 2.33 − 0.67×IR | >3.5 → 0
shaking: growth = 0.62 (flat, 0 above IR 3.5)
none: growth = 0.40 (flat, 0 above IR 3.5)
new_cells = growth × grams_DME
cellsAfter = current_cells + new_cells
Step 3: cap every jump at 10× the previous volume
The scheduler never lets one step outgrow the last by more than 10× — the first step is capped at 2 L regardless of how big your final target is. Each step you compute is the smaller of "what's needed to hit the target in one shot" and "what the 10× cap allows this step." When the cap binds, the scheduler adds another step and keeps going, for up to six steps.
Vfinish = gramsToFinish / gPerL
Vcap = (first step) ? 2.0 L : 10 × previous_step_volume
V = min(Vfinish, Vcap)
Step 4: schedule backward from brew day
Each step budgets about two days — roughly a day to reach high krausen and attenuate, plus time to cold-crash and decant before the next build or the final pitch. With n steps, step i starts 2×(n−i+1) days before brew day, and the plan's total lead time is 2×n days.
10 gal of a 1.060 lager, one 100 B pack, stir plate, 1.037 starter. 10 gal = 37,854 mL. 1.060 SG ≈ 14.7 °P.
target = 1.5 × 37,854 × 14.7 / 1000 ≈ 835 billion cells.
Step 1 (2 days before the next step): build 2.0 L at 1.037 (DME ≈ 202 g). IR = 100/202 ≈ 0.5, well under 1.4, so growth = 1.4. Pack grows to ≈ 383 B.
Step 2 (pitch day): build ≈ 3.2 L at 1.037 (DME ≈ 323 g). IR = 383/323 ≈ 1.19, still under 1.4, growth = 1.4. Final cells ≈ 835 B — right at target.
Total DME ≈ 525 g across two steps. Lead time: start step 1 four days before brew day.
When the standard schedule is wrong.
A generated schedule is a plan, not a guarantee. Here's where blind trust in the numbers costs you a batch.
The 10× rule is the real constraint, not a suggestion
Both Wyeast and White Labs cap a single propagation step at a 10-fold volume increase, and this scheduler never exceeds it — that's exactly why a big lager pitch takes two or three steps, not one giant flask. Try to grow 10× the cells you actually have in a single jump and you underpitch that step: the inoculation rate is too low relative to the extract mass, the yeast stalls partway through, and the volume you end up with doesn't carry the cell count the label math implies.
Model uncertainty compounds across steps
Every step's yield carries the Braukaiser model's own ±10–20% uncertainty. That's tolerable for one starter — but chain three steps together and the error stacks, so a "final ≈ 835 B" plan could land meaningfully high or low in practice. Don't pitch on faith: count the final step before you trust it enough to pitch. A five-minute count is cheap insurance against a fermentation that stalls two days in.
Stir-plate growth is optimistic — and it's the least-sourced number in the model
The stir-plate branch of this model (flat 1.4 growth below IR 1.4) is the most favorable case in the whole system, and it's also the branch with the thinnest citation trail. Kai Troester's own writing raises the question of whether stepping is even necessary for a well-agitated stir starter at moderate targets — a single well-sized starter can sometimes get you close enough. Treat the step count this tool gives you as a plan to validate, not a fixed requirement; if a single starter clears your target with reasonable IR, take that path over an unnecessary second step.
Timing is a real constraint, not a rounding error
Each step needs roughly 24–48 hours to reach peak activity, and then more time to cold-crash and decant the spent wort before the next build or the final pitch — this scheduler budgets about two days per step for exactly that reason. Rush a step and pitch it while it's still at high krausen and you dump spent wort, trub, and dissolved CO₂ straight into your beer, along with yeast that hasn't finished its own growth cycle. If your brew day is fixed, count backward from it and start early — don't compress the schedule to fit a deadline.
Viability sets the floor for every step downstream
An old pack doesn't just start the first step from a weaker base — it drags down every step after it, because each step's inoculation rate depends on the cells you actually have, not the cells the label claims. A pack you assume is 100 B but is really 60 B (a few months old, unrefrigerated) changes the IR at every step and can push the schedule to need an extra build entirely. Don't guess: estimate real viability first, then plan the schedule from that number.
Notes from the labAt New Belgium, a propagation schedule was a working document, not a spreadsheet you set and forgot — we'd write out the whole step-up chain on the whiteboard days ahead of brew day, because getting a big lager pitch ready on time meant every step's timing had to land, not just its cell math. The step count is easy; the discipline is starting early enough that a slow step doesn't blow your brew day. I've seen more stalled fermentations from a rushed final step, pitched at high krausen because the schedule ran tight, than from an undersized starter. Build the schedule backward from brew day, then respect the clock it gives you — the cells will follow if the timing does.
Track every step against how the batch finishes.
A propagation schedule is a prediction chained across multiple builds. The value shows up when you log each step's actual cell count against the plan, and see which schedules produce clean, on-time fermentations. That's what a QC dashboard does automatically.