Pool Chemical Surcharge Calculator
Size the chemical surcharge to add per pool when chlorine or chemical cost rises above your baseline: set a trigger, step and cap, and see what the surcharge recovers across your route. No signup.
How this is calculated
A chemical surcharge is a pass-through, so the arithmetic starts with the move in the price you pay for product, not with a percentage someone picked. The move converts to dollars per pool through the gallons of product that pool uses each visit, then becomes a percentage of the invoice.
move = max(0, current $/gal - baseline $/gal)
billable = max(0, move - deadband you absorb)
stepped = step > 0 ? floor(billable / step) x step : billable
per pool = stepped x gallons per pool
surcharge % = per pool / average job price (capped if you set a cap)
recovered = per pool / (move x gallons per pool)
Worked example, using the tool's opening state: chemical cost moved from
$3.50 to $5.25 a gallon, a move of $1.75. At 0.5 gallons per
pool that is 1.75 x 0.5 = $0.875 a pool; against a $150 job,
0.58%. With no deadband and no cap it recovers 100% of the
increase.
The step rounds down, never up, so a published surcharge never runs ahead of the price it claims to track. The deadband is subtracted before the step: it is the slice of the move you have decided to absorb. A cap is applied last, to the percentage, which is why a capped surcharge shows a recovery share below 100%.
Constants: 1 US gallon = 3.785411784 liters (exact by definition), used for the metric toggle. The annual run-rate multiplies weekly recovery by 52 weeks.
What this deliberately does not do: it never claims a chemical price, never stores a customer or an agreement, and never applies a charge anywhere. It also does not size a permanent price increase or model your margin on chemicals; those are separate tools.
Chemical cost is the variable that can spike between billing cycles while every per-visit price you quoted sits exactly where you left it. Unlike fuel, there is no published national index for liquid chlorine or pool chemicals: the baseline is the price on your own supplier invoice when you last set your route rates, and the surcharge tracks the gap between that baseline and what you are paying today. The calculator above sizes one from your numbers.
Why a chemical surcharge needs a written-down baseline
A workable chemical surcharge rests on three parts you can both point to: the product cost it tracks, the baseline it is measured from, and the formula that turns the gap into a dollar amount per pool. If any of those three is missing, the surcharge has no anchor. Customers accept a formula they can verify; they push back on an unexplained line.
Most operators who try a chemical surcharge skip the baseline entirely. The right number is not a round figure and not today’s invoice price: it is the chemical cost per gallon (or per pound, for tabs) that your current per-visit rates were built on. If you do not know it, pull last season’s purchase invoices and divide total chemical spend by gallons (or pounds) purchased. That average is your peg, and the surcharge exists only to cover the distance between the peg and today’s price.
Because pool chemicals have no equivalent of the EIA weekly fuel average, the baseline comes from your books, not from a published series. That means both sides must agree on which product and which invoice date define it. Write those into the clause.
You enter the prices
This calculator does not quote a chemical price. Chlorine, tabs, and other pool chemicals vary by supplier, region, purchase volume, and product form. The only honest numbers are the ones on your invoices: the price per gallon of liquid product (or per pound of tabs or granular) when you last set your route rates, and what your supplier is charging today. For tabs or granular, stay in US units and enter price per pound and pounds per pool; the arithmetic is the same. If you do not know your baseline, pull last year’s purchase invoices and divide total chemical spend by gallons (or pounds) purchased.
From price per gallon to dollars per pool
- The move: subtract your baseline chemical price from today’s purchase price. The result is the raw cost gap per gallon (or per pound for dry product). If chemical cost has dropped below the baseline, the gap is zero and no surcharge applies.
- The deadband: your absorb threshold, if you set one. It strips the first portion of the gap before any billing, so minor supplier price fluctuations between deliveries never reach the invoice.
- The step: the billable gap rounded down to whole increments. Rounding down guarantees the published figure trails the real cost rather than leading it.
- Dollars per pool: the stepped move multiplied by the gallons (or pounds) of product that pool uses each visit.
- The percentage: dollars per pool divided by the per-visit invoice, capped if your agreement caps it.
What a chemical move is actually worth per pool
Run the arithmetic at a $150 per-visit price and change only chemical move and gallons per pool:
| Move above baseline | 0.25 gal/pool | 0.5 gal/pool | 1.0 gal/pool |
|---|---|---|---|
| +$0.50/gal | 0.08% | 0.17% | 0.33% |
| +$1.00/gal | 0.17% | 0.33% | 0.67% |
| +$1.75/gal | 0.29% | 0.58% | 1.17% |
| +$3.00/gal | 0.50% | 1.00% | 2.00% |
Every figure there is the same multiplication: move x gallons per pool / $150. At these example inputs, a residential pool using half a gallon per visit at a moderate price move sits well under one percent because the chemical burned on a single pool is a small share of a $150 per-visit invoice. Usage is the lever: the 1.0-gallon column is exactly four times the 0.25-gallon column at every price before rounding, because the only variable that changed is gallons per pool.
Three contract terms that keep the surcharge signable
These three optional terms turn a calculation into a clause customers will accept.
- A trigger (the deadband) filters out the week-to-week fluctuation that is normal in chemical purchasing. Chlorine prices shift with each delivery; absorbing a set per-gallon band keeps the surcharge from appearing and disappearing with every purchase order.
- A step keeps the number from changing with every chemical delivery. Pools go through chlorine on a weekly cycle; recalculating in 25-cent bands means the surcharge holds steady between billing cycles rather than drifting with each purchase.
- A cap sets a ceiling on the customer’s exposure, expressed as a percentage of the per-visit invoice. The tradeoff is explicit: every point you cap below the real recovery leaves chemical cost on your side of the ledger.
The calculator reports that gap as the recovery share. If the share stays low through peak season, the cap is subsidizing your chemical line out of margin that was meant for labor and equipment.
When the honest move is a permanent rate increase
A surcharge is temporary by design: it tracks a cost that moved above a baseline and it recedes when the cost comes back down. If your chemical supplier has repriced and the new level holds through a full buying season, continuing to call it a surcharge misleads the customer. The cleaner step is a permanent rate adjustment. Size the revenue impact and the customer loss you can tolerate with the price increase impact calculator, then send it with the price increase letter template.
Chemical margin and the fuel parallel
This tool sizes one number: the surcharge to apply per pool while chemical cost is above your baseline. It does not tell you whether your chemical line is profitable in the first place. That question belongs to the chemical cost margin calculator, which maps chemical cost per visit against what you charge and shows the margin. When the acid line is the one that moved, the pool acid cost comparator can help you decide whether switching from muriatic acid to dry acid (sodium bisulfate), or the reverse, changes the cost per acid equivalent enough to absorb the swing without a surcharge at all. For the parallel mechanism indexed to fuel instead of chemicals, the fuel surcharge calculator uses the same baseline-trigger-step-cap structure against a published EIA fuel index rather than a chemical purchase price.
Nothing here is stored, uploaded, or sent anywhere. The arithmetic runs in your browser and the export is a file you keep.