Where does the species data come from?
Every species number on AquaCompat comes from a fact file, and each value in it cites the published sources it was taken from. A fact file is a structured record for one species: its temperature, pH and hardness ranges, adult size, minimum tank, group size, temperament, swim level, diet, lifespan and behaviour notes. Nothing in a fact file is filled in from memory or inference. When no source gives a value, the field stays empty and is listed as unverified.
Which sources rank highest?
Sources are used in a fixed order of preference. The order runs as follows:
- FishBase, the scientific species database.
- Seriously Fish, a species-by-species aquarium reference.
- PlanetCatfish for catfish, and shrimp- or Loricariidae-specific references for those groups.
- University extension papers, such as UF/IFAS EDIS and the Southern Regional Aquaculture Center (SRAC).
- The Merck Veterinary Manual and peer-reviewed papers.
- Established hobby references, such as Aquarium Co-Op care guides and Practical Fishkeeping.
Retail product pages are never used as species sources. Each source is stored with its publisher, title, address and the date it was read, so the source list under every page builds itself from the tokens on that page.
What is the two-source rule?
The two-source rule means that temperature, pH and general hardness (GH) each need two independent sources before a range counts as verified. These three water parameters drive half of the compatibility score, so they get the strictest check. When only one source publishes a figure, the range is still shown, but the field is marked single-source and added to the species' list of unverified fields. The betta fish profile is one example: its GH range of 1–15 dGH rests on Seriously Fish alone, because no second aquarium-care source with a number was found.
How are conflicting sources handled?
Conflicting sources are recorded, not hidden. When two references disagree, the fact file stores a consensus range for display and keeps each source's own figure in a conflicts list. For bettas, Seriously Fish gives a wider aquarium temperature range than FishBase, whose figure describes wild habitat; both are kept, and the displayed range is 72–86 °F (22–30 °C). Wild-habitat figures and captive-bred figures often differ, so where a source separates them, the displayed range targets captive-bred aquarium stock.
What do single-source and unverified mean on a page?
Single-source means one published reference supports the value; treat it as likely but not confirmed. Unverified means no qualifying source was found, so the value is blank or shown as unknown, and any score factor that depends on it is skipped rather than guessed. Every species file also carries a verified date, the day its sources were read. The current species files were verified on 21 October 2026.

How is a compatibility score calculated?
A compatibility score is the weighted average of six factor scores, each between 0 and 1, multiplied by 10 and rounded to a whole number between 1 and 10. The factors and their weights are fixed for every pair, and they are the same ones the fish compatibility checker shows when you pick two species. The weights are listed below.
| Factor | Weight | What it compares | Data used |
|---|---|---|---|
| Temperature | 25% | How much the two temperature ranges overlap | temp_f range, in °F |
| Temperament | 25% | How the two temperament labels combine, adjusted for sourced fin-nipping and targeted aggression | peaceful, semi-aggressive or aggressive, plus the aggression record |
| Size and predation | 20% | Ratio of adult lengths, plus the published predation record of each species | max_size_in and the sourced predation fields (eats small fish, eats dwarf shrimp, eats snails) |
| pH | 15% | How much the two pH ranges overlap | ph range |
| Hardness | 10% | How much the two GH ranges overlap | gh_dgh range, in dGH |
| Swim level | 5% | Whether both species crowd the same layer of the tank | top, middle, bottom or all |
How is each factor scored?
Each factor turns a comparison of two fact files into a number from 0 to 1, where 1 means no conflict on that factor. The three water factors share one overlap rule, and the other three use fixed tables.
Temperature, pH and hardness overlap
The overlap score divides the width of the shared range by the width of the narrower of the two species' ranges, capped at 1. If one species' whole range fits inside the other's, the pair scores 1. To stop very narrow ranges from swinging the result, the divisor is never smaller than a minimum tolerance: 2 °F for temperature, 0.3 pH units for pH and 2 dGH for hardness. Ranges that only touch at a single value score 0.25. Ranges that do not meet at all score 0, and the size of the gap is recorded. The water parameter reference explains what each of these measurements means for fish.
Temperament
Temperament starts from a fixed table of label combinations, reproduced below.
- Peaceful with peaceful: 1.0
- Peaceful with semi-aggressive: 0.55
- Semi-aggressive with semi-aggressive: 0.5
- Aggressive with semi-aggressive: 0.3
- Aggressive with aggressive: 0.3
- Aggressive with peaceful: 0.1
Each species file also carries a sourced aggression record: how aggressive it is, which fish it targets and whether it nips fins. Three of those records lower the temperament score. A documented fin-nipper paired with a long-finned species (betta, guppy, Endler’s livebearer or angelfish) scores at most 0.35. A species documented as attacking long-finned fish scores at most 0.35 with any of them. A species documented as aggressive toward other labyrinth fish scores at most 0.3 with another labyrinth fish. A species whose aggression record names the other species, as the kenyi cichlid’s record names peacock cichlids, scores at most 0.2.
Size and predation
The size factor compares adult lengths and then checks each species’ sourced predation record, which states whether it eats small fish, dwarf shrimp or snails. These rules apply in order, and the first match sets the score:
- A fish recorded as eating small fish, paired with a fish at least 2.5 times shorter: 0.15 if the size gap is five-fold or more, or if the predator’s aggression is moderate or high; otherwise 0.45.
- A fish recorded as eating both small fish and dwarf shrimp, paired with a shrimp it outsizes three times or more: 0.15, a deal-breaker, because a predator that size takes adult shrimp too.
- Any other fish recorded as eating dwarf shrimp, paired with a shrimp: 0.35 if that fish also eats small fish, otherwise 0.65, because most such fish only take baby shrimp.
- A fish with no published record either way on eating dwarf shrimp, paired with a shrimp: 0.6, because missing evidence is not evidence of safety.
- Any animal recorded as eating snails, including the assassin snail, paired with a snail: 0.4.
- Otherwise the score depends on the size ratio alone: 1.0 under 2 times, 0.85 from 2 to 3 times, and 0.7 at 3 times or more.
Swim level
Two species that use the same level of the tank, other than “all levels”, score 0.8; different levels score 1.0.
What happens when data is missing?
A factor whose data is missing for either species counts as 0.6, a cautious middle value, instead of being dropped. Dropping it would let a pair with gaps in its data score higher than a fully documented one. Missing factors are named on the checker so you can see which part of a score rests on incomplete data.
What turns a score into a verdict?
A score turns into one of three verdicts: compatible at 8 to 10, caution at 5 to 7 and incompatible at 1 to 4. The weighted average is multiplied by 10 and rounded, with an exact half rounding up, then held between 1 and 10. One more rule applies before a pair can be called compatible: if the pair carries any sourced aggression or predation note, or if its temperament score is 0.3 or lower (any pairing that includes an aggressive species), its verdict is capped at caution and its score at 7. A strong water match cannot hide a documented behaviour risk.
Which deal-breakers override the score?
Six deal-breakers override the weighted score. Any one of them makes the pair incompatible and caps its score at 3, however well the other factors did.
- No shared temperature range.
- A shared temperature range under 3 °F wide, too narrow for a heater to hold reliably.
- No shared pH range.
- A size and predation score of 0.15 or lower, meaning a documented fish-eater with a large enough size gap.
- A temperament score of 0.1 or lower: an aggressive species paired with a peaceful one.
- Two labyrinth fish each documented as aggressive toward other labyrinth fish, such as a betta and a dwarf gourami.
No shared hardness range is not a deal-breaker. It scores 0 on a factor worth 10%, which lowers the result but does not decide it, because a tank’s hardness depends largely on the source water you fill it with. The GH and KH guide explains what general hardness measures.
A pair such as the betta and guppy, currently scored 7 out of 10, shows how the pieces combine: neither hard fail on water applies, so the result depends on the weighted factors, where the peaceful-with-semi-aggressive temperament score of 0.55 pulls hardest. The betta and neon tetra pairing walks through a similar case factor by factor.
How is the smallest tank for two species worked out?
The smallest tank for two species is the larger of the two species' own minimum tank sizes, raised by half if either species is semi-aggressive, then rounded up to the next standard tank. The standard sizes used are 5, 10, 20, 29, 40, 55, 75, 90, 125 and 180 US gallons. The extra 50% for a semi-aggressive species gives the calmer fish room to keep its distance. If the result is larger than 180 gallons, 180 is shown as the ceiling.
This rule sizes the tank for one pair only. It does not add up the bioload of a whole community, so a tank holding several species should be checked with the stocking guidance on each species page. As an example, the betta and neon tetra pairing works out to 29 US gal (110 L), because the betta's semi-aggressive label raises the neon tetra's 15 US gal (57 L) minimum.
Can an editor change a computed verdict?
Yes, but only through a written override that names its reason and cites at least one published source. An override is a small file for one pair that can replace the verdict, the score or the smallest-tank figure. The formula's original verdict and score are kept beside the override, and the checker shows the editorial note, so you can always see when a result was changed and why. Overrides exist for cases the formula cannot see, such as a source documenting that two otherwise matched species hybridise. At the time of writing, one pair carries an override: the kenyi cichlid and peacock cichlid, marked incompatible because Seriously Fish’s profiles of both species advise against keeping them together. Every pair currently runs on method version 1.6. The version rose from 1.0 as predation and aggression records replaced free-text behaviour notes, missing data stopped inflating scores, the narrow-overlap, labyrinth and caution-cap rules were added, unknown shrimp predation began to count as a risk, large fish-eaters became a deal-breaker for shrimp, and named aggression targets, snail predators and aggressive pairings were added to the rules. Any future change to weights or rules will raise the number again.
How are aquarium products chosen?
Products are chosen by comparing manufacturers' published specifications against the needs of a tank size or species group. AquaCompat does not test equipment. Each buyer guide states its criteria, and each product note says who a product suits and who should skip it, based on the published specs; the aquarium heater guide is one example of that format.
When a product links to Amazon, the listing is matched to the exact model and size named on the manufacturer's page. Bundles, kits, renewed items, accessories and listings from third-party sellers whose brand name does not lead the title are rejected. Prices are not shown on AquaCompat pages. Amazon requires any displayed price to carry the time it was checked and to be removed once it is more than 24 hours old, which a static site cannot guarantee, so product boxes say to check the price on Amazon instead.
Does AquaCompat earn money from these links?
Yes. As an Amazon Associate I earn from qualifying purchases. A purchase through a product link can pay AquaCompat a commission at no extra cost to you. Commissions never affect compatibility scores, which come only from the formula above, and the full affiliate disclosure explains the arrangement.
Who writes and reviews AquaCompat pages?
AquaCompat pages are written by the AquaCompat Editorial Team, an organisation author rather than a named individual. The team does not claim veterinary, biology or other professional credentials. Its work is collecting published data, applying the method on this page consistently and showing its sources, so any reader can check a figure against the reference it came from. Every page lists those references and its last updated date.
For background on who runs the site and how it is funded, see about AquaCompat; the editorial team page lists the guides the team maintains.
How do you report an error?
Use the contact page and name the page, the figure you think is wrong and, if you can, the source that disagrees. Corrections go into the species fact file first, so a fixed value updates every page and every pair score that uses it at the next build. The updated date on a page changes only when its content actually changes.
What can the method not tell you?
The method compares published ranges and labels; it cannot predict how two individual fish will behave. These are its main limits.
- Individual temperament varies. A peaceful-labelled fish can still bully a tank mate, and a single semi-aggressive fish can turn out calm. The temperament label describes the species, not your fish.
- Ranges assume captive-bred fish. Wild-caught fish often need water closer to their native habitat, which can sit outside the displayed range.
- Each verdict covers two species. A community of five species involves ten pairs plus a shared bioload, and the pair score does not add those up.
- Labels compress behaviour. Predation, fin-nipping and targeted aggression feed the score through the rules above, but males fighting their own kind, territorial breeding and stress from crowding are recorded only as notes on species pages.
- It is not veterinary advice. For a sick fish, a disease outbreak or medication questions, an aquatic veterinarian is the right source.
Treat a compatible verdict as a strong starting point, a caution verdict as a reason to read the full pair page, and an incompatible verdict as a pairing to avoid unless you have a specific, sourced reason to try it.
Questions people ask
Why do temperature and temperament carry the most weight?
Temperature and temperament each carry 25% because a mismatch in either is the most common reason pairings fail. A fish kept outside its temperature range is stressed all the time, and an aggressive tank mate harms fish directly. pH and hardness matter too, but many captive-bred fish tolerate a wider band than their wild relatives, so they carry 15% and 10%.
Why can a pair score well and still be marked incompatible?
A hard fail overrides the weighted score. If two species share no temperature or pH range, if the larger one is at least three times longer and documented as a predator, or if an aggressive species meets a peaceful one, the pair is incompatible and its score is capped at 3, even if the other factors scored well.
Does AquaCompat keep or test the fish it scores?
No. AquaCompat does not keep, breed or observe fish for its verdicts. Every score is calculated from published sources such as FishBase, Seriously Fish and Aquarium Co-Op, and each page lists the references behind its numbers so you can check them yourself.
Will a pair's verdict ever change?
Yes, a verdict can change when a species fact file is corrected, when a new source verifies a single-source range, or when the method version changes. Scores are recalculated from the fact files at each build, so one correction updates every pair that species belongs to. The page's updated date shows when that happened.
Sources 11 documents from 5 publishers
- Aquarium Co-Op (aquariumcoop.com): “Betta Fish Care Guide”; “Guppy Care Guide”
- FishBase (fishbase.se): “Betta splendens, Siamese fighting fish: species summary”; “Poecilia reticulata, Guppy: species summary”; “Paracheirodon innesi summary page”
- Maidenhead Aquatics (fishkeeper.co.uk species data sheet) (fishkeeper.co.uk): “Guppy data sheet”; “Neon Tetra data sheet”
- Seriously Fish (seriouslyfish.com): “Betta splendens”; “Poecilia reticulata”; “Paracheirodon innesi (Neon Tetra)”
- UF/IFAS EDIS (ask.ifas.ufl.edu): “Evolution, Culture, and Care for Betta splendens (FA212)”
All sources accessed . Every number on this page comes from these documents.
