Crop Rotation Planner
Plan crop rotations from bed history and plant families with conflict scores, capacity-aware assignments and locally grounded caution notes.{{ summaryTitle }}
{{ summaryLine }}
{{ summaryAnnouncement }}
| Crop | Bed | Family | Risk | Score | Reason | Next step | Copy |
|---|---|---|---|---|---|---|---|
| {{ row.crop }} | {{ row.bed }} | {{ row.family }} | {{ row.risk }} | {{ row.score }} | {{ row.reason }} | {{ row.action }} |
The chart renderer is unavailable. The same assignments and risk scores remain in the tables.
| Bed | Recent families | Planned crops | Status | Next step | Copy |
|---|---|---|---|---|---|
| {{ row.bed }} | {{ row.recentFamilies }} | {{ row.plannedCrops }} | {{ row.status }} | {{ row.nextStep }} |
Introduction:
Garden beds remember more than the crop name on last year's label. Plant residue, roots, nutrient demand, insects, and soil-borne pathogens can carry effects into later seasons. Crop rotation uses that history to avoid returning closely related plants to the same ground too soon.
Botanical family is the key connection. Tomato after pepper is still a nightshade repeat because both belong to Solanaceae. Cabbage after kale repeats Brassicaceae, and cucumber after squash repeats Cucurbitaceae. Switching crop names without switching families may leave the main disease and pest relationship unchanged.
| Family | Common crops | Planning clue |
|---|---|---|
| Solanaceae | Tomato, pepper, potato, eggplant | Keep nightshade disease history together. |
| Brassicaceae | Cabbage, broccoli, kale, radish | Clubroot and brassica pests can make repeats consequential. |
| Cucurbitaceae | Cucumber, squash, pumpkin, melon | Track mildew, wilt, and vine-pest history. |
| Fabaceae | Bean, pea, cowpea, clover | Legumes can support fertility planning but do not erase disease risk. |
| Apiaceae | Carrot, parsnip, celery, parsley | Root and umbel crops share a family even when growth habits differ. |
Rotation intervals are guides rather than guarantees. University extension advice commonly recommends leaving two to four years between members of the same family in one location, but the right break depends on the pathogen, climate, crop variety, garden sanitation, and local history. Some problems persist longer, while airborne disease can arrive even after a careful rotation.
Fertility adds a second decision. Following one heavy feeder with another can increase nutrient pressure, while a recent legume may be a useful predecessor for a heavy-feeding crop. That relationship is not a fertilizer prescription. Nitrogen contribution varies with species, biomass, inoculation, harvest, residue handling, and soil conditions.
Small gardens rarely permit a perfect rotation. Bed count, crop demand, sunlight, trellising, watering, spacing, and harvest access may force compromises. A useful plan identifies the least conflicting placements and keeps uncertain crops visible instead of pretending every crop has been classified correctly.
Rotation is only one part of disease management. Clean planting material, resistant varieties, airflow, watering practice, sanitation, scouting, and local diagnostic advice can matter as much as the bed sequence. A low-conflict placement should still be checked against current conditions and local guidance.
How to Use This Tool:
Record the newest season first so recent family repeats receive the strongest weight.
- Enter one line per bed in Bed history. Put the bed name before a colon, separate seasons with vertical bars, and list crops within a season after its year.
- Enter one requested crop per line in Next crops. Up to 12 bed lines and 12 crop lines are accepted.
- Set the Rotation interval from two to six seasons and the Bed capacity from one to six crop lines per bed. Capacity limits assignments; it does not check plant spacing or companion planting.
- Choose Disease pressure and Planning goal to change the weight of family repeats and feeder history. Use the unknown-family penalty only when unidentified crops should receive explicit caution points.
- Review Rotation plan for each proposed assignment and Conflict heatmap for alternatives. Verify unknown families and resolve unassigned or conflict rows before planting.
Interpreting Results:
Read the row reason before the score. The score explains how the local heuristic ranked a crop-bed pair; it is not a probability of disease, expected yield, or agronomic approval.
- Low covers scores below 25. It means the recorded history produced limited modeled conflict.
- Watch covers scores from 25 through 59. Review family history, fertility, residue, and local conditions before keeping the assignment.
- Conflict begins at 60. Prefer another bed, a locally suitable break crop, or a longer rotation when practical.
- Unassigned means every bed reached the selected crop-line capacity. Increase capacity only after confirming that physical spacing and management can support the extra crop.
Technical Details:
Bed history is read one line at a time, with up to six pipe-separated seasons per bed. The first season is treated as most recent even when a year is omitted. Crop names are normalized and matched against a local family catalog; unrecognized names remain in the plan as Mixed / unknown.
Formula Core
Each crop-bed pair receives additive conflict and feeder terms. Season recency declines linearly across the selected interval. The total is clamped to 0 through 100 and rounded to the nearest whole point.
| Term | Exact contribution |
|---|---|
| U, unknown family | The selected unknown-family penalty, 0 to 40. A bed with no usable history adds 8 points to the family term. |
| F, same family | For each matching season: 42 × recency × disease-family multiplier × goal-family multiplier. |
| E, exact crop | For each exact-name repeat: 12 × recency × disease exact-crop multiplier. |
| H, heavy-feeder repeat | For a heavy feeder after another heavy feeder: 14 × feeder multiplier in the newest season, or 7 × feeder multiplier one season further back. |
| Q, sensitive-family repeat | When a cataloged sensitive crop has any same-family match: 8 × disease-family multiplier × goal-family multiplier. |
| L, recent legume credit | For a heavy feeder after a legume: subtract the larger of 10 × feeder multiplier for the newest season or 5 × feeder multiplier one season further back. |
For a selected interval of n seasons, recency is 1 for the newest season, then (n − 1)/n, continuing down to 1/n. The disease and goal settings supply the following multipliers.
| Setting | Family | Exact crop or feeder |
|---|---|---|
| Low disease pressure | 0.78 | 0.85 exact crop |
| Moderate disease pressure | 1.00 | 1.00 exact crop |
| High disease pressure | 1.35 | 1.20 exact crop |
| Balanced goal | 1.00 | 1.00 feeder |
| Disease-caution goal | 1.24 | 0.85 feeder |
| Feeder-balance goal | 0.90 | 1.35 feeder |
| Compact-fit goal | 0.85 | 0.95 feeder |
Rule Core
Assignments are greedy rather than globally optimized. Crops are processed in the order entered. For each crop, all beds are sorted by conflict score and then by original bed order; the first bed below capacity receives the crop. Earlier crop lines can therefore occupy a low-conflict slot that a later crop might also need.
| Band | Boundary | Assignment meaning |
|---|---|---|
| Low | Score < 25 | No strong modeled conflict in the recorded interval. |
| Watch | 25 ≤ score < 60 | Keep only after reviewing the named family or feeder concern. |
| Conflict | Score ≥ 60 | Prefer another placement or extend the break. |
| Unassigned | All beds at capacity | Returned with score 100 and a capacity warning. |
Limitations and Privacy:
The score is a repository-authored planning heuristic, not a plant-disease model or extension recommendation. It uses a finite crop-name catalog and cannot account for local pathogen survival, resistant cultivars, soil tests, weather, microclimate, pesticides, sanitation, spacing, or the physical layout of mixed plantings.
- Verify unknown crop families before accepting a low score, especially when the unknown-family penalty is zero.
- A longer lookback includes more history but does not prove pests or pathogens have cleared.
- Legume credit is a feeder-balance hint, not a measured nitrogen value or fertilizer recommendation.
- Bed histories and plans remain in the browser; no garden records are uploaded.
Worked Examples:
Two beds and two requested crops
Suppose Bed A held tomato last season and bean the season before, while Bed B held cabbage and then carrot. With moderate pressure, a balanced goal, three-season lookback, and capacity one, tomato scores 71 in Bed A but 14 in Bed B, so it goes to Bed B. Bean then scores 36 in Bed A and 0 in Bed B, but Bed B is already full; bean is assigned to Bed A with a Watch label. Reversing the crop-line order can change the greedy assignment.
References:
- Managing plant diseases in the home garden, University of Minnesota Extension, reviewed 2026.
- Rotating crops for a more resilient garden, Illinois Extension, February 28, 2025.