EcoSym

Fish & Feeding

For a general introduction to consumers, see Consumers. Fish are the bioload you actually feed — the only thing in the tank whose mass comes from outside, and the engine behind almost every ammonia problem a keeper ever has.

Fish are a boundary, not a closed loop

Everything else in the tank lives inside a closed budget. An alga, a bacterium, a copepod — every atom of its body came from a pool in the water and returns to one when it dies. The tank feeds itself, and the books always balance.

Fish break that pattern, and they break it for a real-world reason. A fish's body was not built from the tank. It was built from food the keeper dropped in, and in a healthy tank that mass leaves again through the keeper's net and through water changes — not through the food web. A tank with no external food cannot support fish the way it supports its microbes: at any realistic stocking level the fish would simply strip the water to nothing, because nothing in a closed system replenishes what they eat.

So the model treats fish honestly, as a forcing function on the ecosystem plus a health readout, rather than pretending they are a self-sustaining population:

  • Their biomass is a stocking level you set — how many fish, how big — and it is held fixed. Fish do not grow or breed in the model; their mass only ever goes down, and only by death.
  • What the ecosystem feels from them is bioload: they consume oxygen and they release ammonia, carbon dioxide, and phosphate.
  • What you feel from them is health — a single gauge running from a perfectly healthy 1 down to a dead 0, driven by the very same water-quality stresses that govern mortality everywhere else in the model.

Why a fixed-biomass fish makes the bioload exact

There is an elegant consequence hiding in "fish don't grow." If a fish never adds body mass, it has nowhere to store nitrogen. Every nitrogen atom it digests has to come straight back out — excreted as ammonia, because a fish is ammonotelic — and every atom it fails to digest leaves as waste that becomes detritus and is mineralized to ammonia anyway. Follow any nitrogen atom in the food and it ends in the same place: the ammonia pool.

This is why the model reproduces the well-known aquaculture rule of thumb — that feeding a tank produces a predictable quantity of ammonia per gram of food, roughly twenty-five to thirty-five grams of ammonia-nitrogen per kilogram of feed per day — without anyone hardcoding that number. It falls out of the bookkeeping: feed mass in, the same nitrogen out as ammonia. Carbon follows the same logic, ending as carbon dioxide and detritus; phosphorus ends as phosphate and detritus. A fish that never grows is, from the tank's point of view, simply a machine that converts food into dissolved waste.

Feeding: the tank's only outside meal

Feed is the single external organic input in the entire model — every other pool is sealed. A feeding drops dry food of a fixed carbon-to-nitrogen-to-phosphorus makeup (roughly a 45%-protein prepared food by default) into the water, and from there it meets one of three fates, all of which arrive at the same destination:

  1. The fish eat it. Prepared food is a high-preference, fully available meal — no fish has to hunt for it. What a fish assimilates is excreted as ammonia and phosphate; what it cannot digest is egested as feces that become detritus.
  2. The uneaten share rots. Whatever the fish miss breaks down to suspended detritus within a few hours. This is the mechanism behind "uneaten food fouls the water": overfeed, and the surplus shows up as a detritus — and then ammonia — load even if no fish ever touched it.
  3. The detritus mineralizes. Feces and decayed food alike are broken down by the decomposer community into ammonia, phosphate, and carbon dioxide, exactly like any other dead organic matter.

Because the fish have no growth sink to soak up nitrogen, all three routes converge on ammonia — which is why the feed-nitrogen-becomes-ammonia identity holds no matter how much of a given feeding is actually eaten. In a sealed jar, where nothing vents to the air, total nitrogen, carbon, and phosphorus close exactly against what started in the tank plus what was fed; that conservation is the headline check on the whole subsystem.

How much food a tank gets is scaled to its fish rather than guessed in grams: the realistic hobbyist default is a maintenance ration of about 1.5% of the fish's body mass per day. In a fish-in cycling scenario this live bioload replaces the artificial ammonia dosing used to cycle a fishless tank — the fish themselves are now the ammonia source, which is the whole point of cycling with fish in the tank. The exact feed makeup, ration, and decay rates are tabulated in the Parameter Reference.

Why a fish load drains the buffer

Fish excrete their nitrogen as ammonia, which is a base, so each unit of excreted nitrogen nudges the water's alkalinity up at first — matching how the rest of the model handles ammonia release from decomposition and bacteria. But that ammonia does not stay. As the tank's nitrifiers oxidize it to nitrate, they consume more buffer than the excretion added, for a net loss of buffering capacity with every nitrogen atom that runs the full cycle. This is the chemistry behind a familiar piece of folklore: a heavily stocked tank's pH tends to creep downward, and fish-in tanks need water changes to hold their carbonate hardness. The Nitrogen Cycle follows this from the nitrogen side.

The health gauge

Health is the fish-facing half of the model — a single number per fish population, running from 1 (thriving) to 0 (dead). It is not a mass pool; it is a running tally of how the water has been treating that population, and it integrates the same stressors that drive mortality everywhere else in the model: unionized ammonia, nitrite, low oxygen, temperature, pH, copper, and hydrogen sulfide. Crucially, each stressor is measured against that species' own tolerances, so a fragile neon tetra and a hardy danio can sit in identical water and read it completely differently.

The gauge has a deliberate asymmetry at its heart, and it is the emotional core of the whole feature: a fish gets sick fast and heals slowly. Damage accumulates quickly when the water turns hostile; recovery in good water is gradual; and past a lethal threshold, collapse is nearly instant. The practical upshot is that a fish stays sick for days after an ammonia spike has cleared — the gauge carries a memory of what the tank put it through.

Three feedbacks make the number behave like a living animal rather than a meter:

  • Health drives death. A mortality term grows as health falls toward zero, sitting on top of the direct toxicity of ammonia, nitrite, and the rest. In the fish model this health pathway is the primary way fish die — the direct toxicity is tuned gently, so a hardy fish rides out a routine cycling spike, and fast death near lethal conditions comes through the health collapse rather than a brittle threshold.
  • A sick fish eats less. Appetite falls with both poor health and cold water, which lowers the fish's bioload but also slows its own recovery. That coupling can spiral a fish downward (sick, stops eating, weakens further) or pull it back up (eats less, water improves, recovers).
  • A dead fish makes things worse. When a fish dies its body settles and decays, releasing a second pulse of ammonia. This is the hard teaching moment of an uncycled tank: the tank gets worse after the fish dies, not better.

Reading the gauge

The model reports each population's health and, alongside it, the worst-off population in the tank — the "is it safe yet?" signal you actually care about. A health that dips during a new tank's ammonia-and-nitrite spike and then climbs back toward 1 as the cycle establishes is the healthy fish-in-cycling story. A health that keeps falling is a tank that was stocked too soon, or too heavily — the model showing you, before the fish do, that the water is losing.

The roster

The five fish span the axes that matter for fish-in cycling — how fragile or hardy they are, how they behave, and how much bioload they carry. They all run on the same machinery; what makes them behave differently is a single calibrated set of per-species tolerances — the ammonia, nitrite, oxygen, temperature, and pH bands each fish reads the same water against, taken from species or close-relative tolerance data where it exists. Those bands feed both the direct toxicity and the health gauge, so the fragile-to-hardy spread is one set of numbers, not a pile of special cases. Each fish has its own page under the fish species pages, and every value is tabulated in the Parameter Reference → Fish.

Species Character The point it makes
Zebra danio Hardiest The fish-in-cycling workhorse — rides out a new-tank spike, health dips then recovers
Betta Air-breather Survives a low-oxygen bowl (see below)
Neon tetra Fragile "Wrong fish, too soon" — health crashes in an uncycled tank where the danio shrugs
Guppy / Endler Hardy livebearer Hard-water lover; good water is species-specific, the mirror image of the soft-water neon
Corydoras Benthic detritivore The only roster fish that grazes in-tank (see below)

Air-breathers: the betta

Some fish do not rely on the water for all their oxygen. Labyrinth fish like the betta gulp air at the surface, and the model gives them partial credit for it: their health barely registers the low-oxygen stress that would suffocate a neon. A single betta in a small unfiltered bowl can pull the dissolved oxygen down to a level that would be lethal for most fish and still hold its health on the oxygen axis — even as its ammonia health slips slowly, because a tiny, unfiltered volume never really cycles. The air-breathing is not a licence to keep a fish in a bowl, and the model is careful to say so: the betta survives the oxygen, but not the slow poisoning.

In-tank grazing: the corydoras

The water-column fish — danio, betta, neon, guppy — eat only the prepared feed. The bottom-dwelling corydoras does something extra: it sifts the substrate for settled detritus, its main in-tank food, and picks up a little periphyton along the way. This is internal recycling, not a new source of mass — whatever the cory grazes from the tank simply reduces the additional feed the system needs, because part of its appetite is already satisfied from the bottom. It is no specialist scraper (it takes detritus readily but digests it poorly, and most of the biofilm stays protected on its surfaces), and it does not excuse overfeeding: uneaten food and feces still mineralize to ammonia just the same.

See also

Last updated: 6/7/2026