A stocking list is a compatibility problem before it is an aesthetic one. Four constraints decide almost everything: whether the fish can live in your water, how large it grows, what its temperament is, and how much space it claims. Applying them in that order removes most candidates quickly.
Filter one: water
Fish do not adapt to water chemistry; they tolerate it for a while and then sicken. A species evolved in soft, acidic, tannin-stained water will not thrive in hard, alkaline tap water, no matter how well it eats.
| Group | pH | GH | Notes |
|---|---|---|---|
| Blackwater characins | 6.0–7.0 | 2–8 dGH | Neon tetra, cardinal tetra, rasbora |
| Livebearers | 7.0–8.4 | 10–20 dGH | Guppy, platy — need hard water |
| Rift Lake cichlids | 7.8–8.6 | 12–20 dGH | Hard, alkaline, aggressive |
| Dwarf cichlids | 6.0–7.2 | 3–8 dGH | Apistogramma — soft, acidic |
| Corydoras | 6.0–7.6 | 4–12 dGH | Wide tolerance, soft substrate needed |
Start with the water you actually have. Chasing a species that needs water you do not have means either an RO unit and constant remineralising, or a fish that slowly declines. It is much easier to choose from the list that suits your tap water.
Filter two: adult size
Fish are sold as juveniles. The 4 cm specimen in the shop is frequently a 15 cm adult, and occasionally a 30 cm one. The relevant question is not what fits in the tank now but what fits when it is fully grown.
The rough guide is one centimetre of adult fish length per litre of water for a well-filtered tank, halved for a heavily stocked or lightly filtered one. It is crude — a 10 cm sedentary fish and a 10 cm active swimmer are not equivalent — but it prevents the commonest stocking error, which is buying for the size the fish is.
Filter three: temperament
Temperament is not a single axis. The useful distinction is between shoaling species that need company, territorial species that defend a space, and predators that eat whatever fits in their mouth.
- Shoaling species — tetras, rasboras, corydoras. Need a group; six is the minimum, ten or more is where natural behaviour appears. A solitary tetra hides and fades.
- Territorial species — bettas, dwarf cichlids, gouramis. Claim a space and defend it. Usually fine with mid-water shoalers, not with another territorial fish of similar size and colour.
- Predators — anything with a mouth larger than another fish's body. Shrimp and small fish become food. This is not aggression; it is feeding.
Filter four: territory and swim level
Tanks have three usable zones — bottom, mid-water and surface — and a stocking list works better when it uses all three. A tank with only mid-water fish looks empty at the bottom; a tank with three bottom-dwelling species has three times the competition for the same floor.
Bioload is a rate, not a count
Every fish produces ammonia continuously, and the filter's bacterial colony grows to match the rate it receives. Adding ten fish at once multiplies the ammonia production immediately, while the colony takes days to catch up. That gap is an ammonia spike.
A worked example
A 60 cm tank, 60 litres, tap water at pH 7.2 and GH 8 — medium-hard, slightly alkaline.
- Water match rules out blackwater characins and dwarf cichlids, and rules in livebearers, most rasboras, corydoras and a betta.
- Size rules out anything reaching more than about 8 cm.
- Temperament suggests one centrepiece plus shoalers, rather than two territorial species.
- Territory suggests one bottom-dwelling group, one mid-water shoal, and a grazer for the glass.
That yields something like: ten neon tetra or harlequin rasbora for mid-water, six corydoras for the bottom, and a group of cherry shrimp or two nerite snails as grazers. Roughly 55 cm of adult fish in 60 litres, well within capacity, using all three zones, with no territorial conflict.