Methodology
Methodology
Every calculator on this site is a pure function with unit tests. Every constant comes from a citable source. Here's where each number originates, which assumptions we made, and what we explicitly chose to leave out when the primary source wasn't solid enough to publish.
The citation rule
If a number appears in a calculator, it must trace to a primary source we can link to. The hierarchy:
- Peer-reviewed marine chemistry literature where it exists.
- Randy Holmes-Farley's Reefkeeping, Advanced Aquarist, and Reefs.com articles — the most rigorous and consistently primary-sourced hobby chemistry writing in the field.
- Manufacturer technical documentation for proprietary products (Tropic Marin, Red Sea, Triton).
- BRS technical posts when they cite the underlying chemistry rather than asserting it.
- Established hobby references like WetWebMedia for stocking rules of thumb that don't have a peer-reviewed source.
Numbers that only appear on forums or in unsourced product marketing don't make it into a calculator. If you find one, email us with a link and we'll cite it or remove it.
The flagship constants
Two-part dosing (Recipe 1)
594 g baked sodium carbonate per gallon = 1900 meq/L stock. 500 g calcium chloride dihydrate per gallon = 37,000 ppm Ca stock. Both numbers come directly from Randy Holmes-Farley's Recipe 1. The dosing yield — 1 mL per gallon raises alkalinity by 0.135 dKH and calcium by 9.8 ppm — derives by stoichiometry from those stock concentrations.
Kalkwasser
Saturated kalkwasser at 25 °C is 1.5 g Ca(OH)₂ per liter, delivering 800 ppm Ca and 23 dKH equivalent alkalinity. Replacing 1% of tank volume with saturated kalk raises tank Ca by 8 ppm and alkalinity by 1.1 dKH. Sources: BRS kalkwasser guide and Randy's parallel calculations on Reefs.com.
Magnesium
720 g MgCl₂·6H₂O + 180 g MgSO₄·7H₂O per gallon, a 4:1 weight ratio matching natural seawater Cl/SO₄. 1 mL per tank-gallon raises Mg by ~26.6 ppm. From Randy's magnesium recipe.
CO₂ ↔ pH ↔ alkalinity
CO₂ (ppm) = 15.7 × dKH × 10^(6.35 − pH), using the first carbonate dissociation constant pK₁ ≈ 6.35 at 25 °C in seawater. Cross-validated against the UKAPS pH-dKH-CO₂ table. The calculator reports ranges, because real-tank pH measurement carries roughly ±0.05 systematic error from probe drift.
Volume and weight
1 US gal = 3.785411784 L = 231 cu in (NIST definition). Freshwater: 8.345 lb/gal. Saltwater at SG 1.025: 8.554 lb/gal. Rectangular and cube volume are exact. Cylindrical uses πr²h. Hexagonal uses (3√3/2)·s²·h. Bowfront is approximated (see Known Approximations below).
Salinity and specific gravity
Natural seawater is 35 ppt salinity, 1.0264 specific gravity at 25 °C. The PSS-78 (Practical Salinity Scale 1978) is the formal definition, summarized at Salinometry. Refractometer-to-density conversions follow Randy's specific gravity article.
Heater wattage
Approximation: heating requirement (watts) ≈ 4 × (target °F − room °F) × √(gallons). This is the BRS heuristic from their heater guide, valid for typical glass aquariums in normally insulated rooms. It deliberately undershoots — over-heating capacity creates failure-mode risk.
Substrate
Aragonite sand densities from CaribSea product specs: ~95 lb per cubic foot bulk density for Arag-Alive special grade. The calculator converts your target sand depth in inches and footprint in inches² to bag count.
Known approximations
Bowfront volume
We treat a bowfront tank as a rectangular prism plus a half-cylinder bulge, with the bulge contributing ~6% of the rectangular volume. The exact figure depends on the bow geometry of your specific tank brand — we've seen 5–8% in published specs. The 6% midpoint is disclosed in the calculator UI and here. For an exact answer, check your manufacturer's published gallon spec.
Saltwater stocking density
The stocking calculator uses a 0.25-points-per-gallon heuristic for saltwater, where points scale by fish adult size and aggression. This is a hobbyist rule of thumb without a single citable primary source — it derives from WetWebMedia's stocking essay calibrated to modern reef filtration. The calculator labels its output as a guideline, not a hard limit.
Live rock
We accept live-rock input as pounds directly rather than computing volumetric displacement from rock dimensions. Live rock density varies enormously with porosity — there's no useful single number. Most reef tanks plan on 1.0–1.5 lb of rock per display gallon.
Hydrometer temperature correction
The salinity calculator uses pure-water density ratios from the CRC Handbook as the temperature anchor, then applies the seawater salinity adjustment. Refractometer measurements are temperature-stable if your unit has automatic temperature compensation (ATC); manual refractometers should be calibrated at the same temperature you measure tank water.
Freshwater fish stocking surface area
The freshwater stocking heuristic uses a 36 × 12 in = 432 in² surface-area baseline. Wider/shorter tanks gas-exchange better and tolerate slightly heavier stocking. The calculator reports a points-with-surface-area-adjusted band.
What we explicitly chose not to include
- Pea gravel substrate. No reputable published density for pea gravel in aquarium use. The numbers floating around online (90–110 lb/ft³) don't cite a source. Skipped.
- UV sterilizer sizing. Manufacturers publish wildly different formulas; the consumer marketing claims don't survive scrutiny. We'd rather omit than make up a calculator.
- "Trace element" dosing calculators. Unless your specific tank has an ICP result showing a measurable deficiency, dosing trace elements blind is hobbyist folklore. We don't enable it.
- Wave/flow calculations. Modern wavemakers have variable output, and the "X× turnover per hour" folklore doesn't map cleanly to gyre-flow setups. Use the qualitative guidance in our starting a reef tank guide instead.
Code, tests, and transparency
Every calculator on this site is a pure function in TypeScript with a Vitest unit-test file containing at least five test cases — known inputs producing known outputs from the cited sources. The build runs the test suite on every deploy. If any test fails, the deploy fails. There's no "close enough" in chemistry.
Last reviewed by hand, end to end, on 2026-05-25.
Last reviewed