Skip to content
Pool Chemical Log

Pool Chemical Log: Track Readings and Doses in Your Browser

Updated

Ranges and labels checked on ; next check .

Start your log

Nothing is saved yet. Below is an example week for a 15,000-gallon salt pool, flagged the way your own readings will be. Add a pool to start your log; it stays in this browser.

Day 5 shows 24.2 fl oz of liquid chlorine, worked out by the shock calculator for +1.8 ppm.

An example week, not saved
Reading
3 In range2.6 In range2.1 In range1.7 Low1.2 Low3 In range2.5 In range
0.2 In range0.3 In range0.2 In range
7.4 In range7.5 In range7.5 In range7.6 In range7.6 In range7.5 In range7.5 In range
90 In range90 In range
250 In range
50 In range50 In range, carried from Jun 150 In range, carried from Jun 150 In range, carried from Jun 150 In range, carried from Jun 150 In range, carried from Jun 150 In range, carried from Jun 1
3,200 In range
  • 2026-06-04: Low against at least 2 ppm with CYA (CDC, for home pools)
  • 2026-06-05: Low against at least 2 ppm with CYA (CDC, for home pools)
FC for Example pool, 2026-06-01 to 2026-06-07; the shaded band is the primary rangeJun 1: 3Jun 2: 2.6Jun 3: 2.1Jun 4: 1.7Jun 5: 1.2Jun 6: 3Jun 7: 2.52.53.21.0Jun 1
FC (ppm) by date. Drops on the date line mark days chemicals went in.
All readings as a table

Example pool: 15,000 gal, masonry, Hayward AquaRite

Example week (not saved)
DateTimeFC at least 2 (CDC)CC 0.4 or less (MAHC)pH 7.0–7.8 (CDC)TA 60–180 (MAHC)CH 200–400 (MAHC Annex)CYA 90 or less (MAHC)Salt 2,700–3,400 (Hayward)TempChemicals addedNote
2026-06-0108:0030.27.49025050320080
2026-06-0208:002.67.581
2026-06-0308:002.17.581
2026-06-0408:001.7 Low0.37.682
2026-06-0508:001.2 Low7.68324.2 fl oz liquid chlorine 11.9%Liquid chlorine added after the morning test
2026-06-0608:0037.582
2026-06-0708:002.50.27.59082
Add your first pool

In short: Write down each test's free chlorine, pH, alkalinity, hardness, CYA and salt, with whatever you poured in that day. Every one of those is marked against the range that applies to it: in the example week, days 4 and 5 sit under CDC's 2 ppm. The log stays in your browser.

Handling pool chemicals safely

In the words of the public-health agencies:

Season opening reminder

One email in spring when it's time to open the pool, with the opening order from our checklist guide.

Add a pool once — its name, volume, surface and salt generator, if it has one — and then add a reading after each test. Every value but the water temperature is held up against a range, and anything outside that range is marked in words as well as in colour, with the range and who sets it named alongside; the temperature is recorded and charted, never judged. Pick a reading from the Chart menu to see it drawn over time.

Worked example: a week in a salt pool

The week below is what the page shows before you have entered anything of your own. It is an example, not advice for any particular pool: 15,000 gallons, a masonry finish, a Hayward AquaRite generator, tested at eight each morning.

Day 1 records free chlorine 3.0, pH 7.4, alkalinity 90 ppm, calcium hardness 250 ppm, cyanuric acid 50 ppm and salt 3,200 ppm. Cyanuric acid is measured only that once, and the log carries the last figure it has forward, so the rest of the week is judged as water that holds stabilizer. Free chlorine then slides — 2.6, then 2.1, then 1.7 on day 4 and 1.2 on day 5 — and those last two days are the ones marked Low.

Day 5 also records what went in: 24.2 fl oz of liquid chlorine at 11.9% available chlorine, the strength EPA Reg. No. 82357-1 prints on a 12.5% sodium hypochlorite label, and the figure the shock calculator returns for a rise of 1.8 ppm in 15,000 gallons. Day 6 comes back at 3.0 and day 7 at 2.5, both unmarked. Nothing else in the week is marked either: the day-1 salt reading sits within the 2,700 to 3,400 ppm the AquaRite manual gives, and the hardness, alkalinity and pH readings are all inside the bands set out below.

What each flag means

Low and High mean a reading fell outside the primary range for that parameter, and the line under the table gives the range and its source in full. Free chlorine and pH come from CDC, for home pools, which is why days 4 and 5 above read Low against at least 2 ppm with CYA (CDC, for home pools) — CDC puts the floor at 1 ppm, and lifts it to 2 ppm for water holding stabilizer, which is what day 1 established.

Total alkalinity, cyanuric acid, combined chlorine and the ceiling on calcium hardness are MAHC 2024's, a public-pool code. Those numbers were written for pools an inspector visits. They are used here because they are published with a figure attached, not because anybody inspects a backyard pool against them.

Calcium hardness gets a second comparison as well: a band that depends on what the pool is made of, set out in the MAHC Annex, which is guidance for public pools. Whichever Surface you picked when you added the pool decides which of those two bands your reading meets.

Hazard is kept for the readings MAHC 2024, a public-pool code, treats as grounds to close a pool, and they come from two different parts of it. Free chlorine over 10 ppm, pH under 6.5 or over 8.0, and cyanuric acid more than 45 times the free chlorine are on its list of imminent health hazards, at 6.6.3.1. Cyanuric acid at 300 ppm or more is not: that one is a remediation rule, at 5.7.3.1.3.3, which keeps a venue shut until the reading has been brought down. The log prints the section beside each flag, so the two are never run together.

Salt is not judged against a public-health body at all. It goes against the range printed in the manual of the generator you picked, and the salt calculator sets those manuals out side by side. Water temperature has no range behind it of any kind: the log keeps it and draws it so you can read the rest against it. Every other range the log uses, who sets it and the words it rests on are in the table further down this page.

How often to test

CDC puts a number on it: "Test chlorine concentration and pH at least twice per day, and more often when the pool or hot tub is being used by a number of people." The same page is direct about whose job that is: "As a residential pool or hot tub owner, it is your responsibility to regularly check the chlorine concentration and pH of the water to help protect users from swimming-related illnesses." Written down, the second test of the day starts to earn its keep, because a column of entries shows which way a reading is travelling rather than only where it stands today.

Where your log lives

Everything you type is written to this browser's local storage, on this device. It never leaves the browser: no reading, dose or note is sent to a server, and none of it is put in the page address either, so a link to this page carries no part of your log. What the site's host does record is what it records for every page here — the request, your IP address and your browser — and the privacy policy says so.

That also sets the limits. Clearing this site's data deletes the log, a second device or a second browser will not have it, and nobody can recover it for you, so Export backup (JSON) is the only complete copy that outlives this browser. Export CSV outlives it too, but it writes one pool's readings and not the pool itself, so bringing that file back needs a pool to put it in. Where a browser refuses to store anything at all, as some private windows do, the log still works for the visit and says above the buttons that it is not saving.

Export and import

Export backup (JSON) writes every pool and every reading to one file. Import backup (JSON) reads that file back, and asks first when there is already something in this browser it would replace.

Export CSV writes a single pool's readings, oldest first, under a fixed header:

date,time,fc,cc,ph,ta,ch,cya,salt,temp_f,chemicals,notes

Everything poured on one day shares the chemicals cell, each entry written as amount, unit and product and separated from the next by a semicolon. Import CSV adds rows to the pool you are looking at; it says how many rows it will add and how many it will skip, then waits for an answer. A row matching one already logged is skipped, so importing a file straight back after exporting it changes nothing. A row with the wrong number of columns stops the import and is named by its line number, and a file that would carry one pool past 5,000 readings is turned away before anything is changed.

The chart

The Chart menu draws one reading at a time, oldest on the left. The shaded band behind the line is that reading's primary range, so a point sitting outside the band is a value outside the range; where the range is open at one end, the band simply runs to the edge of the picture. The chart shows nothing the table above it does not — every point on it is a row you can read, which is how it reaches anyone using a screen reader.

Reference table
Primary ranges this site checks readings against
ReadingRangeSet byTheir words
Free chlorineat least 1 ppmCDC, for home pools"CDC recommends pH 7.0–7.8 and a chlorine concentration of at least 1 ppm in pools"
Free chlorineat least 2 ppm with CYACDC, for home pools"CDC recommends pH 7.0–7.8 and a chlorine concentration of at least 2 ppm in pools."
pH7.0–7.8CDC, for home pools"Keeping the pH in the 7.0–7.8 range best balances killing germs to prevent swimming-related illness, the lifespan of the pipes, and swimmers' comfort."
Combined chlorine0.4 ppm or lessMAHC 2024, a public-pool code, 5.7.4.4.2"when the concentration exceeds 0.4 ppm (mg/L)"
Total alkalinity60–180 ppmMAHC 2024, a public-pool code, 5.7.4.4.1"Total alkalinity shall be maintained in the range of 60 to 180 ppm (mg/L)"
Calcium hardness2,500 ppm or lessMAHC 2024, a public-pool code, 5.7.4.4.3"Calcium hardness shall not exceed 2500 ppm (mg/L)."
Calcium hardness200–400 ppm for masonryMAHC 2024 Annex, guidance for public pools, 5.7.4.6"200–400 ppm (mg/L) for a masonry POOL or SPA"
Calcium hardness80–200 ppm for vinyl or fiberglassMAHC 2024 Annex, guidance for public pools, 5.7.4.6"80–200 ppm (mg/L) for a vinyl or fiberglass unit"
Cyanuric acid90 ppm or lessMAHC 2024, a public-pool code, 5.7.3.1.3.2"The CYA concentration at all AQUATIC VENUES shall remain at or below 90 ppm (mg/L)."
Sources (5)