Fish-to-plant ratio
Does your fish stocking match your grow bed area? Nitrogen supply vs nitrogen demand.
Or enter rough totals instead (used when rosters are empty)
Skip the species pickers and enter totals directly. Useful for back-of-envelope sizing before picking specific fish or crops.
Override fish + plant defaults (optional)
Defaults pull from species data when you use the rosters. Override these if you know your specific conditions differ.
What this does
Pick your fish by species and count (or type a total biomass if you'd rather), add crops by species with a bed area for each, and the calc reports whether the nitrogen the fish produce roughly matches what the plants demand. Each fish species carries its own feed rate and feed protein; each crop carries its own nitrogen appetite. The "specifics" section lets you tune for life stage (juveniles eat 2-3x what mature fish do), water temperature (cool water cuts feed rate), and plant maturity (seedlings draw a fifth of mature-canopy demand).
The math
Fish produce nitrogen through excretion and uneaten feed. Daily feed is roughly 1.5% of fish body weight for a mixed-stage system at warm temperatures. Juveniles eat ~3%; mature fish ~1.2%; cold-water fish about half the warm-water rate. Feed is about 16% nitrogen by protein weight, and the fish keep roughly 30% of it, so a 32% protein omnivore feed leaves about 3.6% of its weight as nitrogen for the plants; a 40% carnivore feed about 4.5%, a 25% herbivore feed about 2.8%.
Plants consume nitrogen at category-specific rates. Per square meter of mature canopy:
- Leafy greens (lettuce, kale): 1.5 g N/day
- Herbs (basil, mint): 1.0 g N/day
- Fruiting crops (tomato, pepper): 3.0 g N/day
- Root crops (radish, beet): 2.0 g N/day
Seedlings draw about 20% of these rates, vegetative-stage plants about 60%. A bed planted with fresh transplants is effectively N-light for several weeks, which is why aquaponics systems are easy to start (slow plant uptake gives the biofilter time to mature).
Balanced means supply matches demand within reason (1.0 to 1.5x demand). Below 1.0, plants starve. Above 1.5, nitrate builds up in the water.
What this calc doesn't yet do
These limitations are real and matter for fine-tuning:
Plant demand is by crop category (leafy, herbs, fruiting, roots) scaled by the species' own appetite, so watercress and lettuce differ, but two lettuces don't. Fine differences between cultivars are below what this model can see.
Fish nitrogen is per species, but every fish of a species is treated as the same adult; a tank of tilapia halfway to harvest excretes less than the calc assumes. Use the life-stage setting for that.
Potassium, calcium and iron get a flag when the roster is likely to run short (fruiting crops, iron-hungry greens), with fish-safe supplements to reach for. It's a flag, not a dose; the system designer works out weekly amounts.
Day-night cycles aren't modeled. Plants stop taking up nitrogen at night while fish keep excreting, so ammonia spikes overnight in dense systems. The calc averages over 24 hours.
Cross-references
For initial system sizing from a target tank volume, use the system sizing calculator. It uses the same feed-rate and feed-to-bed ratios this calc does, so the numbers are consistent.
For nutrient mixing when fish waste isn't enough (typically K supplementation), use the nutrient mix calculator.
For per-crop compatibility and growing system selection, use the garden planner.