Skip to content
Glass & Gravel
Methodology

How we pick, and what we refuse to claim

Units we claim to have tested: zero. Here is what we do instead, in enough detail that you can check every number on this site.

By Scooter M., Enthusiast. Published September 1, 2026.

The claim we will not make

Almost every site in this category tells you they tested twenty tanks. We have not tested any. There is no test bench, no drawer of samples, no lab. We do not own most of the products on this site.

That is not an apology. It is the thing that makes everything else here checkable. A testing claim is the easiest thing on a review site to fabricate and the hardest thing for a reader to verify, so we have removed it from our vocabulary entirely and built the site on something you can verify.

Specifically, four claims are banned across every page:

  • That we tested something. No “in our testing”, no “hands-on”, no “our test tank”, no “field-tested”.
  • A credential we do not hold. No veterinary qualification, no “expert panel”, no “reviewed by a specialist”.
  • Tenure. No “twenty years in the hobby”, no “veteran keeper”. One person cannot credibly be a long-time expert in everything, and we are not going to pretend otherwise.
  • A number we cannot source or compute. If a manufacturer does not publish a figure, the specification table on that product says so. There are a lot of those, and the pattern is itself a finding.

What we do instead

Three things, in order.

1. Read what the manufacturer publishes, and cite it. Every specification on this site carries a link to the page it was read from. Of the 20 products in our registry, 20 carry at least one figure traced to a manufacturer document.

2. Record what they do not publish. Not one nano filter in this category publishes a flow rate. No nano light publishes PAR. The Fluval Flex 9 publishes no pump output. Every one of those absences is printed in the product’s specification table rather than filled in with a plausible-looking number.

3. Do the arithmetic, and show it. This is the part nobody else does, and it is the whole reason this site exists.

The arithmetic, in full

Water volume

A tank sold as five gallons is five gallons of glass. Once there is substrate in it and you have stopped filling below the rim, it holds less.

Our assumption: substrate, hardscape and the fill line take 15% of rated volume. That is a judgment, not a manufacturer figure, and it is labeled as one everywhere it appears. A rated 5-gallon therefore holds 4.3 gallons of water in every calculation on this site.

If your scape is heavier, redo the sums with your own figure. Publishing the assumption is what makes that possible.

Heater wattage

Watts = actual water gallons × 0.35 × (target − coldest room temperature)

The constant is derived from Fluval’s published P Series ratings. Fluval rates each heater to a tank capacity, and separately publishes that a lift of more than 12°F over ambient room temperature needs additional heating capacity. That makes each rating a triple:

HeaterWattsRated toImplied W/gal/°F
P1010W3 US gal0.278
P2525W6 US gal0.347
P5050W15 US gal0.278

We use 0.35, the largest of the three, rather than the average. Undersizing a heater is the failure that kills fish; oversizing one makes it cycle more often. When two defensible numbers disagree, we take the one whose failure mode is survivable, and we tell you we did.

We size to 78°F rather than the 80 Aquarium Co-Op publishes as the preference, so the heater has margin rather than running at its limit. And we size against the coldest the room gets, not its average.

Worked: 5 US gal rated, less 15% for substrate and fill line, is 4.3 gal of water. A 78F target minus a coldest-room 68F is a 10F lift. 4.3 x 0.35 x 10 = 15.1W required. Nothing is sold at 15.1W, so the answer is the 25W.

Filter turnover

Target GPH = actual water gallons × 4, with a ceiling at 6 turnovers an hour.

The general aquarium convention for a hang-on-back is four to six turnovers. For a betta we take the bottom of that range, because a long-finned fish in a small water column cannot swim out of the current - it lives in whatever you install.

Worked: 4.3 gal of actual water x 4 turnovers an hour is about 17.2 GPH. Past roughly 25.8 GPH you are baffling the outflow or buying a different filter.

Dosing

Taken from published directions and converted. Seachem publishes Prime at 5 mL per 50 US gallons of new water and Stability at 5 mL per 10 US gallons on day one. Every dose on this site is that figure applied to actual water volume, which is why they come out in fractions of a milliliter and why we keep telling you to buy a syringe.

Substrate quantity

Fluval publishes the formula: kilograms = length × width × depth in centimeters, divided by 1000. We apply it in inches because that is how US tanks are sold, and we show the result per tank rather than making you do it.

Where the arithmetic lives

In one file. Every wattage, turnover and dose on this site is computed by the same functions, which means the 3-gallon page and the 5-gallon page cannot silently disagree, and changing an assumption changes every page at once. That is an engineering decision with an editorial purpose: a methodology that can drift between pages is not a methodology.

How the scores work

Every product carries an editorial score out of 10 and a set of per-criterion scores. Those are ours, and they are judgments - weighted heavily toward what a manufacturer is willing to publish, because that is what we can verify, and toward whether the product suits a betta specifically.

Two consequences worth stating plainly. First, a product can score well on disclosure and still be a poor buy for you - read the “skip this if” line on every entry, which exists for exactly that reason. Second, those scores never appear in this site’s structured data. Publishing our editorial score as a machine-readable product rating would tell Google we had reviewed a product we have not tested, which contradicts this entire page. The visible score stays; the markup carries Product and Offer nodes only.

Prices

Where a live price exists it is inside the buy button, with the date it was retrieved. Prices come from a data layer refreshed against Amazon’s API, and if that data is more than 48 hours old every price on the site disappears automatically and the buttons revert to “check price”.

That is deliberate: a stale price is worse than no price, because it looks like information. At the time of writing this instance holds no live price data, so every button on the site says “check price” - which is the system behaving correctly rather than a failure.

What this method cannot tell you

We would rather set out the limits than let you discover them.

  • Whether a heater holds calibration after a year. That is the question that decides whether a heater is any good, and it needs a lot of heaters and a lot of time.
  • How loud a pump is in your room, or how a filter feels after two years of calcium.
  • Whether a plant will grow in your water. Published care requirements are a starting point, not a promise.
  • Whether your individual betta will accept a tank mate. Temperament varies enormously, and no amount of research substitutes for having somewhere to move the animal if it fails.
  • How to treat a sick fish. Diagnosis from a description is unreliable and most medications carry no dosing data for a four-gallon volume. Where a symptom has an environmental cause we say so; where it needs a diagnosis we say that instead of selling you a bottle.

Corrections

If a figure on this site is wrong, tell us and we will check the source and fix it. Corrections get a dated note on the page rather than a silent edit - our editorial policy sets out how.

This is a young site, currently 41 pages, written by one enthusiast. The method above is the reason to trust any of it, and it is the only reason we are offering.

Sources we rely on most