How the calculators are checked
Updated
On this page
This page is the working behind the tools: which documents they stand on, which numbers are typed in and which are derived, how a result is rounded, what is tested before anything ships, and what to do when two published figures for the same job don't match.
Sources
The main documents this page draws on are these:
- CDC's Model Aquatic Health Code, 2024 (5th edition), the Code itself. A public-pool code, drawn on here for its figures: total alkalinity of 60 to 180 ppm, cyanuric acid at 90 ppm or below, calcium hardness up to 2,500 ppm, combined chlorine over 0.4 ppm as a hazard, free chlorine minimums of 1.0 ppm without stabilizer and 2.0 ppm with it, and the 45:1 line between cyanuric acid and free chlorine.
- The Annex to that code. Guidance for public pools rather than the code itself, and the origin of the saturation-index band of −0.3 to +0.3, the TDS factors 12.1 and 12.2, the lookup table of temperature, hardness and alkalinity factors at 5.7.4.6, and the calcium hardness bands preferred for a masonry or a vinyl finish.
- CDC's page on treating and testing home pool water. Its pH band, its chlorine minimum for a pool with and without stabilizer, what it says about hot tubs, and how often it asks for a test.
- CDC's page on the current edition of that public-pool code. Read once a year; see Freshness at the foot of this page.
- EPA-accepted product labels. Each gives its product's available chlorine, and several give a limit for getting back in the water as well. Four are named further down: EPA Reg. Nos. 82357-1, 55852-3, 1258-1094 and 1258-1239.
- EPA's Chemical Safety Alert on storing and handling pool chemicals (EPA 550-F-01-003). One of the documents behind the handling notes printed under each tool that doses a chemical, and under the log.
- PHTA's Pool & Spa Management (2021), Appendix B. Its B-2 adjustment guide, printed per 10,000 gallons, is the main published check on this site's dosing.
- PHTA's Alkalinity fact sheet (2021). The cyanuric acid correction factors by pH, and PHTA's own figures for moving total alkalinity in either direction.
- PHTA's Calcium Hypochlorite fact sheet. Its figure for the calcium that cal hypo leaves behind.
- The salt-generator manuals: Hayward's AquaRite 900, Pentair's IntelliChlor, Jandy's AquaPure and CircuPool's CORE. Each maker's own salt target and range, Pentair's TDS factors above 1,000 ppm, Pentair's salt table as a check, and the volume shortcuts two of them print.
- HASA's safety data sheet for muriatic acid. 31.45% hydrogen chloride at a specific gravity of 1.16 — the strength this page's muriatic acid figures are worked at.
- Indiana's Department of Health, on adjusting a pool's chemical levels. The order the chemical calculator doses in, and its rule about adding acid to water.
- Toledo-Lucas County's health department, on adjusting pool water chemistry. Its published rules of thumb, including the two named further down.
- Michigan State University Extension's Category 5A manual. The second published rule of thumb for pH.
- NIST SP 811, Appendix B.8. Every unit factor.
- PubChem, at the NIH. Every molar mass.
Constants
Two published lists are typed in, and every conversion factor the arithmetic uses is derived from them in code rather than entered by hand, so a factor can never drift from the figures it came out of. Published lookup tables — the saturation-index factors, the correction factors by pH, the TDS factors, each generator's salt target — are transcribed as tables and cited at the point they are read.
NIST SP 811 gives the units: 3.785412 liters in a US gallon, 0.02831685 cubic meters in a cubic foot, 29.57353 milliliters in a fluid ounce, 28.34952 grams in an ounce and 453.5924 grams in a pound. PubChem gives the molar masses in grams per mole, among them chlorine at 70.90, sodium hypochlorite at 74.44, calcium carbonate at 100.09, cyanuric acid at 129.07, sodium bicarbonate at 84.007 and sodium bisulfate at 120.06.
What the code works out from those two lists:
| Figure | Value | Why |
|---|---|---|
| Gallons in a cubic foot | 7.480520 | From the cubic meter and the gallon. |
| Pounds per gallon per million | 8.345404 | The weight of a dissolved chemical that makes 1 ppm, since 1 ppm is 1 mg/L. |
| Available chlorine per unit weight of sodium hypochlorite | 0.95244 | From 70.90 ÷ 74.44. |
| Stabilizer for each ppm of available chlorine | 0.607 ppm for trichlor, 0.910 for dichlor | From the cyanurate ring's share of each molecule. |
| Calcium hardness per ppm of available chlorine | 0.706 ppm | Out of calcium hypochlorite. |
| Grams per equivalent of calcium carbonate | 50.045 | The basis total alkalinity and calcium hardness are both reported on. |
Rounding
Full precision runs the whole way through a calculation. A figure is rounded once, where it is printed, and never
part-way through, because rounding twice can move the last digit that gets printed. Rounding is half away from zero,
which is also why no result here is formatted with JavaScript's toFixed — that would print 1.005 as 1.00.
| Quantity | Printed to |
|---|---|
| Liquids | Fluid ounces to 0.1, with gallons to 0.01 added once the dose reaches 128 fl oz |
| Solids | Ounces to 0.1, with pounds to 0.01 added once the dose reaches 16 oz |
| Salt | Pounds to 0.1, plus whole bags |
| Readings and doses | ppm to 0.1 |
| Pool volume | Whole gallons, with liters beside them |
| The saturation index | 0.01 |
Tests
None of this is published on the strength of the arithmetic alone.
- Against PHTA's B-2 guide. Every product these tools dose — liquid chlorine, calcium hypochlorite, dichlor, trichlor, baking soda, soda ash, muriatic acid, dry acid, calcium chloride and stabilizer — is run against B-2's figures and has to land within 5% of the printed amount, or within one unit of its last printed digit, whichever of the two is the wider.
- Against the labels. 12.5% sodium hypochlorite works out at the 11.9% available chlorine EPA Reg. No. 82357-1 prints. The dosing formula on EPA Reg. No. 1258-1094 agrees with this site's to within a tenth of a percent. EPA Reg. No. 1258-1239's own chart, 16 oz of 73% granules in 10,000 gallons, gives 8.75 ppm here too.
- Against Pentair's salt table. Lifting 10,000 gallons from 0 to 3,600 ppm, the IntelliChlor guide prints 300.43 lb; this site reproduces that figure to the hundredth.
- Against the saved text. Each quotation of 25 characters or more is matched, character for character, against the text saved from the document it names. Where an ellipsis joins two halves, each half of 12 characters or more has to be found on its own, so a sentence can never be assembled out of pieces that were never next to each other.
- Against pinned cases. Each calculator carries a set of worked inputs with their whole output recorded, so a change to any constant shows up as a failed case rather than as a quietly different answer.
The chlorine floor
Every tool that shows a lowest everyday free chlorine takes the higher of two published figures and names which one it took. CDC's minimum for a home pool is 1 ppm in water with no stabilizer in it and 2 ppm once there is; a public-pool code, MAHC 2024, sets that same pair for a public venue, at 5.7.3.1.1.2.1 and at 5.7.3.1.1.2.2. The other figure is the cyanuric acid reading divided by 45, from the ratio that same code treats as a hazard once it is passed.
Under 90 ppm of stabilizer the division lands below 2 ppm and CDC's figure governs; the two meet at 90; past that the division is what lifts the floor. Where it does, it is taken up to the next tenth of a ppm, so that the floor, typed back in as a reading, never lands on the far side of the ratio it came from.
Where sources disagree
Published figures for the same job do not always match. Where they part, both are set out with the arithmetic beside them and the page says which one the tools follow.
Lowering total alkalinity. A dose sits in the MAHC's Annex, guidance for public pools: "Add 1.6 pounds of dry acid (Sodium Bisulfate) per 10,000 gallons of water, or 1.3 quarts of muriatic acid, to decrease the total alkalinity by 10 ppm." PHTA's Alkalinity fact sheet gives another: "Approximately 2.1 pounds of sodium bisulfate (94%) or 1.6 pints of muriatic acid (31%) will reduce the total alkalinity of 10,000 gallons of water by 10 ppm." PHTA's B-2 guide agrees with the fact sheet, listing 2.1 lbs of sodium bisulfate and 26 fl oz of 31.4% muriatic acid for the same 10 ppm. The molar masses put that move at 2.00 lb of pure sodium bisulfate, which is 2.13 lb of the 94% grade PHTA names, and at 25.6 fl oz of muriatic acid at HASA's 31.45% and 1.16. So the chemistry and PHTA land together, and the tools follow them: against 25.6 fl oz, 1.3 quarts is 41.6 fl oz, about 60% more acid; against 2.00 lb of the pure compound, 1.6 pounds is about a fifth less.
Raising total alkalinity. PHTA's B-2 guide lists 1.4 lbs of sodium bicarbonate for 10 ppm in 10,000 gallons. PHTA's own fact sheet and the Toledo-Lucas County sheet both put it at 1.5 lbs. The molar masses give 1.40 lb, so the tools match the guide.
Which percentage a chlorine jug prints. A 12.5% sodium hypochlorite jug holds 11.9% available chlorine by weight, and EPA Reg. No. 55852-3 prints 15% for the same 12.5% product on the trade basis. The two are not interchangeable, and the shock calculator sets out which figure its field wants; entering the trade number where a weight percentage belongs underdoses by about a fifth.
Taking stabilizer back out of an alkalinity reading. PHTA's fact sheet notes the common shortcut of lopping a third off the stabilizer reading. The MAHC's Annex, guidance for public pools, puts the deduction at 30% instead. PHTA's own Table 1 does neither: it carries a factor for every pH step, 0.36 at pH 8.0 down to 0.23 at pH 7.0, and that table is what the tools read, so the correction moves with your pH rather than sitting still.
Two formulas for an oval. PHTA works an oval as an ellipse; CircuPool's manual multiplies width by length by depth by 6.7. For a pool 30 by 15 feet at 4.5 feet deep, the volume calculator returns 11,897 gallons on the first and 13,532 on the second. It offers both, and says what each one assumes about the shape of the ends.
Calcium out of cal hypo. PHTA's fact sheet puts it at 0.8 ppm of hardness per ppm of available chlorine; the molar masses give 0.706. The tools carry the smaller figure into a hardness step, mark that row as a minimum, and print PHTA's figure alongside.
Rounded unit factors. The manuals and PHTA work with 7.5 gallons per cubic foot and 8.34 pounds per gallon per million; this site uses 7.480520 and 8.345404. The first pair differ by 0.26% — the 39 gallons between the two answers for a pool 30 by 15 feet at 4.5 feet deep — and the second pair by less than a tenth of a percent.
Not modelled
Some things are left out on purpose, and a tool that will not answer says so where the answer would have gone.
- A pH dose. How far a dose moves pH depends on the alkalinity resisting it. The two published rules of thumb this site holds — Toledo-Lucas County's soda ash figure and Michigan State University Extension's — are 1.8 times apart for the identical move, and neither accounts for alkalinity or stabilizer.
- Shock scaled to the stabilizer reading. No primary source for that method turned up in this site's research, so no tool uses it.
- Spas, hot tubs and bromine. Ranges published for them are quoted where they bear on a reading; none of the three is dosed here.
- Chlorine neutralizers. PHTA's B-2 guide lists 2.6 oz of sodium thiosulfate to take 1 ppm off 10,000 gallons; the Toledo-Lucas County sheet gives 1 oz for that same job, with a warning about overshooting. A published gap of that size is not something to settle by picking one.
- Lithium hypochlorite and chlorine gas. Both have a row in PHTA's B-2 guide; neither is dosed by any tool here.
- Metric inputs. Every field takes US units. Volume results print liters beside the gallons.
Freshness
Once a year, CDC's page naming the current edition of the Model Aquatic Health Code — which is a public-pool code — is read again. Today it says: "The most recent version of the Model Aquatic Health Code (MAHC), the 5th edition, was posted in 2024." Should a later edition appear, every range, every hazard, the saturation-index table and every quotation taken from that code are checked against it.
Labels, safety data sheets and manuals are cited as they were saved, on September 19, 2026, and they are read again in the same yearly pass — or sooner, if someone reports that a container now says something else. Next review: September 2027.
Sources (22)
- CDC, Model Aquatic Health Code, 2024 (5th edition): Code, a public-pool code cdc.gov
- CDC, Model Aquatic Health Code, 2024 (5th edition): Annex, guidance for public pools cdc.gov
- CDC, Home Pool and Hot Tub Water Treatment and Testing cdc.gov
- CDC, About the MAHC Current Edition (the MAHC is a public-pool code) cdc.gov
- EPA, Chemical Safety Alert: Safe Storage and Handling of Swimming Pool Chemicals (EPA 550-F-01-003) epa.gov
- EPA Reg. No. 82357-1, 12.5% sodium hypochlorite label (2020) www3.epa.gov
- EPA Reg. No. 55852-3, 12.5% sodium hypochlorite label (2017) www3.epa.gov
- EPA Reg. No. 1258-1094, 10% sodium hypochlorite label (2019) www3.epa.gov
- EPA Reg. No. 1258-1239, HTH Granular 73 calcium hypochlorite label (2025) www3.epa.gov
- PHTA, Pool & Spa Management (2021), Appendix B: Water Chemistry Guidelines & Worksheets phta.org
- PHTA, Alkalinity fact sheet (2021) phta.org
- PHTA, Calcium Hypochlorite fact sheet phta.org
- Hayward, AquaRite 900 manual hayward.com
- Pentair, IntelliChlor IC15–IC60 installation and user's guide pentair.com
- Jandy, AquaPure PureLink manual (H0325600) jandy.com
- CircuPool, CORE series manual circupool.com
- HASA, Muriatic Acid SDS (2026) hasa.com
- Indiana Department of Health, Adjusting Chemical Levels in a Swimming Pool in.gov
- Toledo-Lucas County Health Department, Adjusting Pool Water Chemistry lucascountyhealth.com
- Michigan State University Extension, Swimming Pool Pest Management, Category 5A manual canr.msu.edu
- NIST SP 811, Appendix B.8: Factors for units listed alphabetically nist.gov
- PubChem (NIH), compound molecular weights pubchem.ncbi.nlm.nih.gov