Why this is "is it safe" not "how many can I stock"
Most stocking calculators answer the wrong question. "You can fit 20 neon tetras in a 10-gallon" is the prototype mistake — mathematically defensible (20 × 1.5 inches = 30 inches; 30/10 = 3 inches per gallon, well past the safe ceiling), and totally ignoring that neon tetras need 20 gallons of working volume to thrive, not 10. The inches-per-gallon rule is a single constraint out of five.
So this calculator inverts the question. You enter the stocking you're considering, the calculator runs five constraint checks against it, and you get back a verdict (safe / caution / overstocked / incompatible) plus the specific findings — which constraint is tightest, what to change if you want to move from caution to safe.
The five constraints checked
- Parameter compatibility. Species ranges from FishBase + the FishTankMath water-parameters reference. If two species don't share a workable temp / pH / GH window, both stress regardless of how much room they have. Flagged as incompatible.
- Predator-prey pairings. Drawn from the species deep-content guides — only pairings with strong sourced consensus (the canonical example is angelfish + neon tetras: angelfish eat anything that fits in their gape, neons fit). Flagged as incompatible.
- Per-species tank-size minimums. A 5-gallon can hold a betta and not much else. Each species has a realistic minimum from its deep guide; if the working gallons falls below that, the verdict is overstockedon a different axis than bioload — the species can't thrive in the tank.
- Schooling minimums. Obligate schoolers (neon, ember, cherry barb, cory) need 6+ to display normal behavior. Counts of 1–5 produce hiding fish, suppressed color, and higher disease rates. Flagged as cautionrather than overstocked because the fish survives, just doesn't thrive.
- Adjusted bioload. The classic inches-per-gallon rule with body-type and waste-output adjustments. Bottom-dwelling cories count for 0.8× their length (slim profile). Body-massive angelfish count for 1.5×. Snails count for 0.3× (very low invertebrate waste). Sum across the stocking and divide by working gallons.
Bioload thresholds
Three thresholds on the adjusted-inches-per-gallon ratio:
- Below 0.7 — comfortable margin. Water-quality stable, ammonia spikes from missed feedings absorbed easily.
- 0.7 to 1.0 — workable but tight. Strong filtration + weekly water changes required. Less margin for beginner mistakes (overfeeding, missed water changes, adding-too-many-fish-at-once).
- Above 1.0 — past the safe ceiling. Either reduce stocking or upsize the tank.
The 0.7 conservative target is intentionally lower than the standard inches-per-gallon rule. Beginner tanks with undersized filtration, inconsistent maintenance, and unstable biofilms run into problems before the rule says they should. Margin is the buffer that lets the tank tolerate a missed-water-change week without crashing.
Where the inches-per-gallon rule breaks down
The rule is a useful first-order approximation. Cases where it underestimates or overestimates real bioload:
- Body shape. A 6-inch goldfish produces radically more waste than a 6-inch eel. The bioload-factor adjustment captures part of this; the rule alone misses it entirely.
- Activity level. Active mid-water schoolers consume more oxygen and produce more waste than sedentary bottom-dwellers of equivalent body length. Cory bioload factor (0.8) reflects this.
- Filtration capacity. The rule assumes standard 6–10× turnover filtration. A heavily-overspec canister with media-stuffed compartments tolerates higher ratios; a sponge-filter-only nano tank tolerates lower.
- Plant mass.Heavily-planted tanks consume ammonia and nitrate directly, allowing higher safe stocking than the rule suggests. The calculator doesn't model this — assume a non-planted or lightly-planted setup.
- Aggression.Two 4-inch cichlids in 30 gallons isn't about bioload — it's about territory. Inches-per-gallon is silent on aggression. The predator-prey and tank-size-minimum constraints catch some of this; not all.
Where hobbyists disagree
- The 1-inch-per-gallon rule itself. Some keepers consider it useful guidance; others call it misinformation that hides body-shape and activity differences. Both correct in their context — the rule is a floor for beginners, not a recommendation for experienced keepers.
- Whether overstocking with strong filtration is okay. Heavily-filtered "wet-pet" setups (large goldfish, oscars, plecos in tanks an order of magnitude below the rule's ceiling) can work for experienced keepers. The conservative beginner-safe answer this calculator gives won't bless those setups, by design.
- Schooling minimums. Some old-school sources say 4 is enough for tetras; modern consensus has shifted to 6+ as the minimum for behavioral display. Calculator uses 6.
- Angelfish + tetra coexistence. Some keepers report success with angelfish raised among tetras from juvenile stage; mainstream consensus says skip. Calculator flags as incompatible (the conservative answer).
Frequently asked questions
- Why doesn't this calculator just tell me how many fish I can stock?
- Because that question doesn't have a single answer — and most calculators that pretend it does are giving you the wrong one. Saying "your 20-gallon can hold 20 neon tetras" ignores parameter compatibility, schooling needs, predator-prey concerns, body type, filtration capacity, and the experience level of the keeper. The honest version is what we do here: you propose a stocking, we tell you whether it's safe.
- What does the bioload ratio mean?
- It's an adjusted version of the classic 'one inch of fish per gallon' rule. We sum each species' adult length × bioload factor × count, then divide by working gallons. Bottom-dwelling cories count for 0.8 inches per inch of body length (slim profile, less waste). Body-massive species like angelfish count for 1.5×. Snails count for 0.3× (very low waste). Under 0.7 = comfortable margin. 0.7–1.0 = workable but tight. Above 1.0 = past the safe ceiling.
- Why does my favorite stocking come back as 'overstocked' even though I see videos of bigger tanks?
- Two reasons. First: 'working gallons' (after substrate + fill-below-rim) is usually 70–80% of stated tank gallons, so a '20-gallon long' is closer to 17 working gallons. Use the volume calculator to get an honest number before stocking math. Second: the calculator targets beginner-safe water-quality margins. Experienced keepers with strong filtration, weekly water-change discipline, and large biofilm colonies routinely run heavier loads. The calculator stays conservative on purpose.
- Why are some pairings flagged as 'incompatible'?
- Two cases trigger an incompatible verdict: (a) species water parameters that don't overlap (e.g., guppies want pH 7.0–8.5 alkaline, neon tetras want 6.0–7.0 acidic — they can't both be at their target at once), and (b) predator-prey pairings the species deep guides specifically warn against (angelfish + neon tetras is the canonical example). The calculator only flags pairings with strong sourced consensus.
- Can I trust this for advanced setups (planted, low-stocking aesthetic, breeding)?
- It's tuned for beginner community tanks. For specific advanced cases — high-density discus tanks with heavy filtration, intentionally lightly-stocked aquascapes, breeding programs with controlled fry counts — the inches-per-gallon model breaks down. Treat the calculator as a sanity check, not gospel. The species deep-content guides have the per-species nuance the calculator can't capture.
Related
- Aquarium volume calculator — get the working-gallons number this calculator needs.
- Filter flow rate calculator — recommended GPH for the bioload you've planned.
- Water parameters explained — the parameter-compatibility logic behind the "incompatible" verdict.
- Species profiles — per-species tank-size minimums and schooling needs the calculator pulls from.
Sources: FishBase species data, the per-species deep-content guides under /species/*, peer-reviewed aquaculture literature on bioload and filtration capacity, and mainstream beginner-safe hobby consensus on schooling minimums and predator- prey pairings. Math layer in lib/aquarium/stocking.ts + parameter-conflict detection in lib/aquarium/species-water-params.ts. By Jimmy L Wu.