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.

40

Nutrition Fit

How well protein, fat, and fibre sit within the target range for the diet group (and life stage on species pages).

40

Ingredient Quality

Protein source quality, filler position, and transparency; plus a penalty when plant protein concentrates are used without algae/spirulina.

20

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.

Final score caps are applied after subscores are combined: size cap, then bottom-access sink cap (when relevant), then the first-ingredient quality cap. This preserves realistic top-tier rankings.

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.
Base ingredient quality gate: If ingredient #1 is a cereal or plant-filler base (for example wheat, corn/maize, rice, cereals, grain derivatives, soy, alfalfa/lucerne, non-specified plant protein concentrate), final score is capped at 88. If ingredient #2 is also not a named animal protein source, the stricter cap 82 applies.

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.

Size compatibility caps the final score: ideal 100, acceptable 90, suboptimal 80, incompatible 70. If size is unknown, no cap is applied.
Bottom-access sink caps apply for bottom-oriented contexts (bottom feeder diet group or species with sinking preference): sinking 100, slow-sinking 80 (strict cap), floating or mixed 70. If sink type is unknown, no sink cap is applied.
Size compatibility caps
Ideal100
Acceptable90
Suboptimal80
Incompatible70
Bottom-access sink caps (strict)
Sinking100
Slow-sinking80
Floating or mixed70
Unknown sink typeNo cap
First-ingredient quality caps
Ingredient #1 is cereal/plant-filler base88
Ingredient #1 is cereal/plant-filler and #2 is not named animal protein82
No triggerNo 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

Protein: 34% – 46%
Fat: 5% – 10%
Fibre: 3% – 10%

Large community fish

Protein: 34% – 44%
Fat: 6% – 11%
Fibre: 2% – 8%

Medium community fish

Protein: 36% – 46%
Fat: 6% – 10%
Fibre: 2% – 7%

Nano community fish

Protein: 40% – 52%
Fat: 5% – 9%
Fibre: 2% – 6%

Small community fish

Protein: 38% – 48%
Fat: 6% – 10%
Fibre: 2% – 7%

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.