Water window
Temperature, pH, GH, KH, TDS and salinity, each stored per species as an ideal band inside a tolerated one.
Tank mates must share a window, not just a number.
Water, bioload, space and every tank mate, scored 0–100 and swimming in 3D, so you find the problem before your fish do.
Most stocking calculators squeeze a tank into one number, and a tank that fails on space or on a single bad pairing still comes out green. HappyFishTank checks each axis on its own. Every problem is a blocker, a warning or a note, and a blocker is never averaged away.
Temperature, pH, GH, KH, TDS and salinity, each stored per species as an ideal band inside a tolerated one.
Tank mates must share a window, not just a number.
Waste grows with body mass to the power 0.8 and with warmth (Q10), not with fish length.
Weighed against what your filter and water changes clear.
Filter turnover per hour and the current it makes, against what each species likes to swim in.
Bettas hate a river; hillstream fish need one.
Swimming length, floor area for bottom dwellers, height for tall fish and cover for the shy.
Real tank dimensions in centimetres, not just gallons.
Directed pair rules: mouth size against body depth, fin nipping, look-alike rivals and territory.
An angelfish can eat a neon; a neon cannot eat an angel.
A lid for jumpers, a heater for tropicals, a cycled filter before the first fish goes in.
The small things that end tanks overnight.
Each species has an ideal band inside a tolerated range. Two fish can share a tank only where their bands overlap.
Most problems come with a one-tap fix: a bigger filter, a larger school, warmer water, or a tank mate swapped out.
This is the real model, running in your browser. Turn up the heat, add a betta to the barbs or switch off the cycled filter, and the health score, bioload and living world answer at once.
The 3D tank is not a screensaver. Every fish takes its health from the model: stressed fish lose colour and slow down, gasp at the surface when oxygen runs low, hide when the school is too small or a predator moves in, chase their victims, and float when the water has killed them.
Every species sits inside its water window. Schools stay tight, corys work the sand, colours are full.
Compatibility runs in both directions. A predator's mouth is measured against the prey's body depth, fin nippers against long fins, look-alike males against each other. Keeper reports add what the rules miss.
Tap a cell to see why.
Your tank follows you around the site. Every species page and guide checks against it, and the pill in the header keeps its bioload in sight.
Set up my tankPick the size (real dimensions in cm), substrate, plants, light, filter, water changes and your tap water: temperature, pH, GH, KH, nitrate.
Each species page now answers "can I add this to my tank?" with a fit badge, the room left in the bioload and the exact clash, if there is one.
Open the tank in 3D. Fish school, graze and hide by their real habits, and the water shows what the numbers mean, long before the fish do.
One number hides the problem that kills the fish. Seven adult cichlids can fit the volume and still fail on floor space and territory. The model keeps six axes apart, and a blocker on any of them sets the score to zero instead of being averaged away.
From published care data and fisheries research: water ranges per species, metabolic scaling of waste with body mass, mouth gape against prey depth, and keeper-reported clashes. Constants still being calibrated are marked as such in the model.
No. Your tanks are saved in this browser, and you can keep several: the living room tank, the shrimp nano, the one you are still planning.
No, it is the model made visible. Overheat it and the fish pale and gasp; skip the cycle and the water clouds; add a predator and the small fish hide.
Free, no sign-up. Your tanks stay in your browser.