How We Score Foods
Transparent, data-driven methodology for aquarium food scores
The AquaIndex Score (0–100)
Each food is scored across three components that add up to 100 points. Rules are transparent and based on declared nutrition data and ingredient lists—no paid placements or hidden biases.
Nutrition Fit
How well protein, fat, and fibre sit within the target range for the diet group (and life stage on species pages).
Ingredient Quality
Protein source quality, filler position, and transparency; plus a penalty when plant protein concentrates are used without algae/spirulina.
Suitability
Penalties for problematic macro combinations (e.g. very high protein with very low fat) and for extreme fat or fibre. Physical size, bottom-access sink behaviour, and first-ingredient quality gates can cap the final score.
Nutrition Fit (0–40 points)
Each diet group has target ranges for protein, fat, and fibre (see table below). We combine how well the food fits each range into a single nutrition score:
- In range: That macro contributes fully to the combined fit.
- Outside range: Fit tapers using a tolerance band (protein 4%, fat 2%, fibre 3%) so small misses do not collapse the score.
- Weights: Protein 45%, fat 35%, fibre 20% of the combined fit. Nutrition score = 40 × that combined fit.
On species pages, you can switch life stage (Fry, Juvenile, Adult, Conditioning). Life stage shifts the effective ranges—e.g. fry and juveniles get higher protein/fat targets, conditioning gets a higher fat range—so the same food can score differently by stage. Browse and compare use the adult ranges.
Foods missing protein, fat, or fibre data are excluded from ranked lists.
Ingredient Quality (0–40 points)
Based on the first 5 ingredients and full list where needed:
- Protein source (0–20): Bonus for named animal/insect proteins in top positions; penalty for wheat/corn/soy in top 3 or by-products in top 5.
- Filler (0–15): Deductions when fillers (wheat, corn, soy, rice, etc.) appear early in the list.
- Transparency (0–5): Penalties for vague terms like "derivatives" or "by-products"; bonus for multiple named proteins.
- Plant protein heavy: If ingredients include soy/pea/wheat gluten/corn gluten–type concentrates and do not include spirulina, kelp, algae, or seaweed, we apply a −4 penalty and tag the food accordingly.
Foods without ingredient lists are excluded from ranked lists.
Suitability (0–20 points)
We start at 20 and subtract points for macro combinations and extremes that are often problematic:
- Protein-heavy / low-energy (−10): Protein >50% and fat <4%. Often flagged as best paired with a higher-fat staple.
- Very low fat (−6): Fat <4%.
- Rich food (−3): Fat >12%. Good for conditioning; may be too rich as an everyday-only staple.
- Very high fibre (−4): Fibre >12%.
- Very low fibre (−2): Fibre <1.5%.
Sink type and physical size are still used for the breakdown and for applying final score caps. They do not add points to suitability.
| Ideal | 100 |
| Acceptable | 90 |
| Suboptimal | 80 |
| Incompatible | 70 |
| Sinking | 100 |
| Slow-sinking | 80 |
| Floating or mixed | 70 |
| Unknown sink type | No cap |
| Ingredient #1 is cereal/plant-filler base | 88 |
| Ingredient #1 is cereal/plant-filler and #2 is not named animal protein | 82 |
| No trigger | No cap |
Diet Group Target Ranges (Adult Baseline)
These are the baseline protein, fat, and fibre ranges per diet group. On species pages, life stage (Fry, Juvenile, Adult, Conditioning) shifts these ranges—e.g. fry and juvenile get higher protein/fat targets; conditioning gets a higher fat range.
Bottom feeders
Large community fish
Medium community fish
Nano community fish
Small community fish
Life Stages
On species pages (e.g. best foods for Neon Tetra), you can choose a life stage. The target ranges for protein, fat, and fibre are then adjusted so scores reflect whether a food is a good fit for fry, growing juveniles, adult maintenance, or conditioning. Browse and compare pages use the adult ranges only.
Adult
Balanced staple ranges for everyday maintenance. No adjustment to the diet group baseline.
Fry
Higher protein and energy needs, lower tolerance for high fibre. We shift the baseline ranges: protein and fat targets go up, fibre max goes down, so nutrient-dense fry foods score better.
Juvenile
Still growing—slightly higher protein and fat than adult, and a slightly tighter fibre ceiling. Good for the "teenage" stage after fry.
Conditioning
For breeding prep, recovery, or building condition. The fat range is shifted up so higher-fat foods score well; protein max is slightly more forgiving. These foods are often too rich as an everyday-only staple.
Each species page has its own URL per life stage (e.g. /species/neon-tetra/fry or /species/neon-tetra for adult), so you can bookmark or share the view that matters to you.
No Paid Placements
All rankings are computed using transparent rules. We do not accept payment to influence scores or rankings. Affiliate links are clearly disclosed and do not affect scoring.
The methodology is versioned so we can improve it over time while keeping changes documented and transparent.