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 fed from outside — and they wear it
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 is not built from the tank. It is built from food the keeper drops in. A tank with no external food cannot support fish the way it supports its microbes: at any realistic stocking level the fish would strip the water to nothing, because nothing in a closed system replenishes what they eat. So the model adds the one thing the rest of the ecosystem never gets — an outside meal — and then lets the fish respond to it the way a real fish does.
A fish is therefore two things at once: a forcing function on the ecosystem and an animal with a body that gains and loses condition.
- What the ecosystem feels from them is bioload: they consume oxygen and release ammonia, carbon dioxide, and phosphate.
- What the fish carries is condition — its weight relative to a healthy adult size. Fed a normal ration, a fish holds its weight (and a well-fed one banks a little reserve). Underfed, it wastes — it burns its own body to stay alive, and its condition falls. Refed, it puts the weight back on and then plateaus; it does not balloon past a healthy size.
- And what you read off them is health — a separate gauge from a thriving 1 down to a dead 0, driven by water quality.
Condition and health are two different clocks, and a fish can be in trouble on either. A fish poisoned by ammonia in clean-but-toxic water loses health while still plump; a fish in spotless water that is simply not being fed loses condition while its health reads fine. Both can kill — and the model tracks them apart so you can tell why a fish is in trouble, not just that it is.
Wasting, recovery, and the death floor
Because biomass is now a real, bioenergetic pool, a fish does the three things a fish actually does. It holds its weight when its food covers its metabolism. It wastes when food falls short of metabolism, catabolising its own tissue, and that body mass leaves as ammonia (a living, starving fish burns its own muscle and excretes the nitrogen, just like any other metabolic loss). The pace is the one a hobbyist's intuition expects: a hardy fish rides out a holiday-length fast without trouble — only lightly thinned after a week or two, and it puts the weight straight back on once you are home — then, left unfed for weeks, it thins visibly and keeps wasting. Once it has lost too much — past about half its structural mass, which for an unfed danio takes around six weeks — it crosses a death floor: it dies, over a few days, rather than lingering for weeks shrinking toward nothing. (Earlier versions had no floor at all — a fish could sit "alive" at five per cent of its body weight, which is not how starvation ends — and even with the floor, the death was made deliberately quick once crossed, so a fish dies as a fish, at roughly half its mass, instead of metabolising itself down to a sliver first.)
What happens to a dead fish. A dead fish does not rot in the tank — a real aquarist nets it out, and the model does the same: the carcass is removed from the system, releasing no nutrients. This matters most for the cautionary runs. When an overstocked tank crashes, the fish that die are taken out rather than decomposing into a second ammonia wave, so the danger the model shows you is the deaths themselves — the health crash and the empty tank — not an inflated ammonia number from rotting bodies. (A fish that dies of poisoning is netted out near its full weight; one that starves has already burned away half its body as ammonia while alive, so only the lean carcass leaves.)
The flip side is recovery, and it is the behaviour a hobbyist most wants to see: a thin or stressed fish, once conditions improve and food returns, puts the weight back on. It grows fastest when it is furthest below size, slows as it approaches its target, and stops at a healthy weight.
One died, the others are fine — fish are individuals
Ask a keeper what actually happened in a bad week and the answer is almost never "my fish lost twelve per cent of their collective mass." It is "I lost one of the neons; the rest are fine." Loss in a real tank is discrete and uneven — one fish goes, the others pull through the very same water. A model that treats a stocking as a single shared pool of biomass can only erode that pool smoothly; it can never tell that story.
So a fish population is not one pool. It is a set of individual fish (for larger schools, small cohorts of near-identical fish), and they are not clones of one another. Two things vary from fish to fish, exactly as they do in a real tank:
-
Robustness. Some individuals simply tolerate bad water better than others — a higher ammonia or nitrite level before they start to suffer, a lower oxygen they can ride out. When a cycling spike or a pollution event hits, every fish sees the same water, but the least-robust fish crosses into danger first. Its health collapses while the hardier ones are merely stressed, so it is the one that dies — and if the water clears in time (the tank finishes cycling, a water change lands), the survivors recover and the loss stops at one or two. That is the "I lost the weakest one" story, and it falls straight out of giving each fish its own tolerance and its own health.
-
Pecking order. When food is short, fish do not share equally — the dominant individuals eat first and the subordinate ones go hungry. In a tank that is overstocked for its ration but otherwise spotless, the bottom of the hierarchy — the runt — is the one that wastes and dies, while the dominant fish stay at full weight. Same water, same food going in, opposite outcomes: a purely social, purely nutritional death that has nothing to do with water quality.
These are the two halves of the same realism: toxic water picks off the least-robust fish; competition for scarce food starves the most-subordinate fish. Because the model resolves the stocking into individuals, both show up the way they really happen — a death here, a death there, staggered in time, with the survivors carrying on — instead of a whole school fading together. (To keep results reproducible, the spread of robustness and rank across a stocking is fixed and deterministic, not random — the same setup always loses the same fish, so a result you see once you can see again.)
Why feed-nitrogen still becomes ammonia
There is a tidy consequence hiding in "a healthy fish holds its weight." A fish at its adult size has nowhere new to put nitrogen — its body is not getting bigger — so every nitrogen atom it digests comes 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 of a full-grown, well-kept fish and it ends in the same place: the ammonia pool.
This is why the model reproduces the 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. When a fish is growing, some of that nitrogen is legitimately held back in new tissue, exactly as the empirical rule already accounts for; the books still close, in the steady-state form feed-nitrogen = new body tissue + excreted ammonia + detritus. Carbon follows the same logic, ending as carbon dioxide, tissue, and detritus; phosphorus as phosphate, tissue, and detritus. In a sealed jar, 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.
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:
- 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.
- 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.
- 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. Because each fish carries its own health (above), the reported figure is the worst-off fish that is still alive — the early-warning reading that catches "one of them is crashing" before the average would, and that drops out of the picture the moment that fish dies rather than dragging the number down forever. 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.
It reports condition the same way — and, like health, the line plotted for each population follows the leanest fish that is still alive, so a single runt wasting away shows up on the chart instead of being hidden in the average of its well-fed tankmates. Alongside it sits the leanest population in the tank, plotted against the wasting floor. The two readouts answer different questions. Health falling with condition steady says the water is poisoning your fish; condition falling with health steady says your fish are not getting enough to eat. A condition that climbs back toward 1 is a fish putting weight back on; a condition sliding toward the death floor is a fish wasting away, and the model will show that slide well before the fish thins enough to see.
Seeing it in the tank
The two clocks are not just lines on a chart — they are painted onto the fish themselves. In the tank view every living fish is drawn as its own sprite, and each one wears its condition and its health: a wasting fish is drawn thin and sunken as its condition falls, and a sick fish pales toward grey as its health drops. A plump grey fish is being poisoned in clean-enough-looking water; a thin but brightly-coloured one is simply hungry. And because each fish is a real individual, deaths are discrete — when the weakest fish dies, its sprite disappears at its moment, while the rest swim on. You watch a five-fish school become a four-fish school, not a single blob that fades a fifth of the way out. That is the "one died, the others are fine" story made literal.
When the trouble is hunger rather than poison, the tank's plain-language verdict says so directly: it names underfeeding as the cause — distinct from the water-quality stressors — whenever fish waste or are lost while the water itself stayed clean, and it tells you to feed more or reduce the stocking rather than to wait for the water to clear (which, for a hungry fish, would never help).
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.
Where a published lethal-concentration study exists for a species, the ammonia band is set straight from it — the US EPA's public toxicity database supplies one for a handful of aquarium fish, and the primary literature a few more. Where none exists, which is most fish, the band is inferred from the acidity of the water the species comes from: a fish evolved in acidic blackwater has never met much free ammonia and has no tolerance for it, while a fish from neutral or alkaline water has. That inference is a real pattern with a real mechanism behind it, and it is also weak — measured against the species we do have studies for, it beats giving every fish the same number by only a little. So the model prefers a measurement wherever one exists, and says which it used on every fish's provenance line. 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, wrong water" — health crashes in an uncycled tank or in hard alkaline water, 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); also the most ammonia-tolerant, which surprises people |
The right fish needs the right water, not just a cycled tank
A cycled filter is necessary but not sufficient. The neon tetra is a soft, acidic blackwater fish, and it reads hard alkaline water as a stressor in its own right — independent of ammonia or nitrite. Put neons in a perfectly cycled tank filled with hard, poorly buffered tap water that drifts alkaline, and the model will still show their health sliding even though every test-kit reading is clean: the pH itself is the problem. The lesson the simulator is making is the one experienced keepers repeat — match a fragile species to its water chemistry, not just to a mature tank. The same neon thrives in the soft, slightly acidic water it evolved in. (The guppy is the mirror image: a hard-water lover that struggles in soft acidic water — "good water" is species-specific.)
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 genuine credit for it. A betta's effective oxygen is the better of two things: the oxygen dissolved in the water, and the oxygen it can draw from the air at the surface. That effective value feeds both halves of the oxygen story — the slow health gauge and the fast survival kernel — so a betta is truly decoupled from a hypoxic water column for as long as it can breathe. Put a betta and a water-breather like a danio in the same poorly-circulated, gas-limited jar where the dissolved oxygen falls to a level that drowns the danio, and the betta carries on, healthy, on surface air.
The model is careful about which air, though. In an open tank the air above is the whole atmosphere — an inexhaustible lifeline, so the betta is effectively immune to dissolved-oxygen hypoxia while it can reach the surface. In a genuinely sealed jar the only air is the trapped headspace, and a heavily fed bioload slowly burns that down too; once the headspace itself runs low the betta has nothing left to breathe and declines like any other fish. So the air-breathing buys a betta a great deal of room — it shrugs off the low-oxygen bowls that are its real-world niche — but it is not a licence to seal one in a fed jar and walk away, and it never rescues the betta from the other danger of a small unfiltered volume: the ammonia that climbs unchecked when there is no biofilter to clear it.
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
- Parameter Reference → Fish — every numeric parameter behind this page, with its rationale.
- Nitrogen Cycle — where the fish-and-feed ammonia source sits in the larger nitrogen story.
- Carbon Cycle — the fate of feed carbon as carbon dioxide and detritus.
- Feeding Mechanics — the general feeding pathway that fish share with every other consumer.
- The fish species pages — per-species tolerances, behaviour, and stocking notes.