Pool Shock Calculator
Shock keyed to your CYA, not a fixed number. The SLAM target every clone calculator skips, the breakpoint dose that destroys chloramines, and the one situation where the honest answer is “drain — don't shock.” Shares the chlorine engine; cannot disagree with the chlorine page's side-effects by construction.
Hook
Every shock calculator tells you to “shock to 10 ppm.” It's the same answer whether your stabilizer is 20 or 100 — and that's exactly the problem.
At high cyanuric acid, 10 ppm of chlorine is barely awake, let alone strong enough to kill algae; at low CYA it's overkill. Shock isn't a fixed number. It's a number keyed to your stabilizer.
Promise
This calculator computes your real shock dose from your cyanuric acid level — the sustained “SLAM” level that actually clears algae, or the breakpoint dose that burns out chloramines and kills the chlorine smell. It works across liquid chlorine, cal-hypo, and dichlor, shows the side effects each one leaves behind, and tells you the one situation where the honest answer is don't shock — drain. Every number derived on the page.
Here's the deal: shocking is just raising your free chlorine to a high target and holding it there until the water clears. The catch is the target. Cyanuric acid binds chlorine, so the more stabilizer you run, the higher you have to push FC to get the same killing power. We'll compute your actual target, your dose in whatever product you've got, and what it does to the rest of your water.
The calculator
Pick a mode (SLAM for algae or BREAKPOINT for chloramines), enter your numbers, hit calculate. The never-mix safety banner pins above the inputs — same component the chlorine calculator uses, identical wording. Trichlor is greyed out (not a shock product); the high-CYA trap callout fires when it should.
Never mix chlorine products.
Trichlor contacting cal-hypo — in a feeder, in storage, or as wet residues — can react violently (fire and toxic-gas risk). Never use one product in another's feeder, and never combine.
The hazard is well-documented in U.S. chemical-safety advisories (CSB/CPSC); the specific PDF citation lands when verified. The warning is unconditional regardless.
Don't know your gallons? Pool volume calculator — two minutes, any shape, deep-links straight back here with ?gal= prefilled.
Shock is a number keyed to your CYA — the signature wedge
The chlorine page's CyaShield, pointed at shock. Cyanuric acid is sunscreen for your chlorine — it protects FC from the sun, but holds most of it in reserve, inactive.
The more CYA you run, the higher you have to push free chlorine to have the same amount actually working. That's why a fixed “shock to 10 ppm” is meaningless: at CYA 80, 10 ppm of FC is below the level you'd keep the pool at normally, never mind shocking it. The real shock target scales with your stabilizer.
The SLAM table — 40% of CYA — at the standard reference rows:
- CYA 20 → SLAM target 10 ppm
- CYA 30 → SLAM target 12 ppm
- CYA 50 → SLAM target 20 ppm
- CYA 80 → SLAM target 32 ppm
- CYA 100 → SLAM target 40 ppm
The same word “shock” means two gallons of liquid chlorine for one pool and six for another, and the only thing that changed is the CYA. This is why the calculator asks for your CYA first — and why the chlorine calculator already keys your daily FC target to CYA. Shock is the same math, just at a higher target.
The high-CYA trap — when the honest answer is “don't shock”
The moment the clones dodge and we don't. The integrity wedge.
Here's where most calculators quietly fail you. Enter CYA 100 and they'll cheerfully tell you to add 6.1 gallons of liquid chlorine — and then 6.1 more tomorrow, because at that stabilizer level you have to hold40 ppm FC for days to clear the algae. The honest answer isn't a heroic dose. It's that your CYA is too high to shock economically, and you should drain and replace some water first, then shock at a sane level.
The math: at CYA 100 in a 20k pool, SLAM = 40 ppm → ~6.1 gal of 12.5% liquid per dose held until clear. Versus: drain to bring CYA down to 40 first (the cyanuric acid calculator gives the exact swap), then shock at the sane 16 ppm — about 2.2 gal total, less than a third of the chlorine, and it actually clears the pool because at CYA 40 the chlorine is meaningfully active.
Routing you to the drain is the help; quoting six gallons of chlorine and stopping is the trap. The calculator above triggers a callout when this case arises — it leads with the drain recommendation, then shows the heroic dose for completeness. Order matters: the integrity moment is which answer is on top.
SLAM vs breakpoint — two reasons to shock
Same chemical, two different playbooks. Conflating them is one of the most common clone mistakes.
There are two different reasons to shock, and they aim at different targets. Algae (green, cloudy, slimy) needs the SLAM level — FC at 40% of CYA — held until the water's clear and stays clear overnight. It's a campaign, not a one-shot. Chloramines(that sharp “chlorine” smell, stinging eyes) need breakpoint — a single big push to about 10× the combined chlorine — to burn the combined chlorine out in one go.
The counterintuitive payoff: the chlorine smell is under-chlorination — combined chlorine that a breakpoint shock destroys. Most people smell it and back off chlorine, which is exactly backwards. The smell is the signal that you need more, not less.
The calculator's mode toggle separates the two. SLAM mode keys to your CYA (the §4.1 wedge); breakpoint mode keys to your CC (current FC + 10 × CC). If you're green you're in SLAM; if you're smelly you're in breakpoint; if you're both, breakpoint first, then SLAM.
Which product to shock with — the side-effect ledger at shock scale
At a normal daily dose the side effects of your chlorine product barely register. At a shock dose — five to ten times bigger — they add up fast.
Liquid chlorine is the clean shock: no CYA, no calcium, just +49.5 ppm salt per 30 ppm shock. Negligible for a salt pool; on a non-salt pool repeated heavy shocking does add real salt over a season, but the dose-by-dose figure is small. Default for a reason.
Cal-hypo works, but dumps calcium: a 30-ppm shock adds +21.3 ppm CH. One shock is fine; a multi-day SLAM with cal-hypo piles up against the calcium hardness band — watch your CH if you SLAM with cal-hypo repeatedly. (The 0.71 ppm CH per ppm FC constant is the same one the chlorine calculator uses; the figures here cannot disagree with the calcium-page ratchet.)
Dichlor dumps CYA: a 30-ppm shock adds +27.3 ppm CYA. Fine on a fresh-fill low-CYA pool; a trap-deepener if your CYA is already high. The calculator warns when you select dichlor with CYA ≥ 50 because every shock makes the next one harder.
Trichlorisn't a shock product at all — slow-dissolving tablets that can't deliver a fast high dose, and they dump CYA hard (~0.61 ppm per ppm FC). Recommending trichlor for shock is the clone error this page exists to correct. The product chip is greyed out for that reason.
Where the numbers come from
Five short steps. The dose math is the chlorine engine; the only genuinely new piece is the shock-target rule.
Step 1 · pick your regime
SLAM (algae): sustained FC at 40% of CYA, held until clear. Breakpoint (chloramines): single dose pushing FC to about 10× the combined chlorine above current. Different jobs, different playbooks (§4.3).
Step 2 · compute the target
SLAM target = max(40% × CYA, 10 ppm). The floor handles the CYA-0 boundary case: with no stabilizer, the conventional ~10 ppm is the right shock level — that's the CYA-keyed target evaluated at zero CYA, not an exception to the rule. Breakpoint target = current FC + 10 × CC (minimum 5-ppm push).
Step 3 · ΔFC = target − current
Same subtraction the chlorine calculator does for daily dosing — shock just plugs a higher target into the same arithmetic.
Step 4 · dose math (shared engine)
Liquid: gallons = ΔFC × (gallons ÷ 10,000) ÷ trade-%. Dry (cal-hypo, dichlor): lb = ΔFC × gal × 8.345 × 10⁻⁶ ÷ available-Cl fraction. Identical to the chlorine page — same functions, same constants, same products. The side-effect figures come from the same shared 1.65 / 0.71 / 0.91 / 0.61 constants; the cross-page identity assertion locks them.
Step 5 · sanity check (E1)
20k gal, CYA 40, FC 2 → SLAM target 16 ppm, ΔFC 14, 12.5% liquid → ~2.24 gallonsper dose. Hold 16 ppm — re-test at sundown, re-dose if it's fallen, until the water clears and holds overnight without backsliding. That's the worked example E1, locked in the build pipeline.
Worked examples — eight common scenarios
Every dose below comes from the shared chlorine engine — same liquidDose / dryDose as the chlorine calculator, just at the CYA-keyed shock target. The cross-page identity assertion locks the side-effects.
Example 1
How much shock for a standard pool (the core SLAM case)
20,000 gal · CYA 40 · current FC 2 · 12.5% liquid
2.24 gal (≈287 fl oz)
SLAM target 16 ppm = 40% × CYA 40. ΔFC 14.
Hold 16 ppm — retest, re-dose as it drops, until the water's clear and holds overnight. A campaign, not a single pour.
Example 2
Same shock, cal-hypo (the calcium cost)
Same pool / target · 65% cal-hypo
3.59 lb (≈57.5 oz)
Adds ~9.9 ppm calcium hardness per dose. Over a multi-day SLAM with cal-hypo, that piles up.
Cal-hypo works, but watch CH if you SLAM with it repeatedly — links to the calcium calculator.
Example 3
The high-CYA trap (the integrity example)
20,000 gal · CYA 100 · FC 2 · 12.5% liquid
6.08 gal per dose, held for days
SLAM target 40 ppm; ΔFC 38. The honest move: drain to bring CYA down to ~40 first, then SLAM at 16 ppm — about a third of the chlorine, and it actually clears.
If your CYA is 100 and your pool is green, more chlorine isn't the answer — less stabilizer is. Drain first.
Example 4
Breakpoint — killing the chlorine smell
20,000 gal · current FC 3 · CC 0.5 · 12.5% liquid
0.80 gal · single push to 8 ppm
Breakpoint target = current FC + 10 × CC = 3 + 5 = 8 ppm. One dose, not a campaign.
That sharp chlorine smell is UNDER-chlorination — combined chlorine. The fix is one big breakpoint push, not less chlorine.
Example 5
Hot tub / spa shock (small, fresh, low-CYA)
400-gal spa · CYA 0 · FC 0 · dichlor 55.5%
0.06 lb (≈1.0 oz)
SLAM target hits the 10-ppm floor at CYA 0 (no stabilizer to key off). Dichlor is fine here because the spa is drained often, so the CYA it adds doesn't accumulate.
At CYA 0 the conventional ~10 ppm IS the right shock — this is the CYA-keying thesis holding at the boundary, not an exception to it.
Example 6
Pool shock calculator in litres (metric)
50 m³ = 50,000 L (≈13,209 gal) · CYA 50 · FC 3 · 12.5% liquid
1.80 gal (≈6.8 L)
SLAM target 20 ppm; ΔFC 17. If you'd chosen dichlor at this scale, you'd add 15.5 ppm CYA per dose (from the imported 0.91 constant — every dichlor-CYA figure on this page is engine-derived).
Metric is cleaner, the SLAM logic is identical — target is still 40% of CYA.
Example 7
Why “shock to 10 ppm” fails at high CYA (the wedge, worked)
CYA 80 pool
Real SLAM = 32 ppm; the clone's 10 ppm is 22 ppm BELOW
At CYA 80 the normal MIN FC is ~6 and the normal target is ~9; "shock to 10 ppm" is barely above maintenance — it does nothing to the algae.
A fixed shock number isn't just imprecise at high CYA — it's INEFFECTIVE. This is why every dose on this page starts with your CYA.
Example 8
Opening a pool (cold, unknown, post-winter)
Spring open · 20k gal · CYA tested at 30 · FC 0 · cloudy
1.92 gal at SLAM 12 ppm
SLAM target 12 ppm = 40% × CYA 30. Start the campaign at the CYA-keyed level; if CYA tests higher after the cover comes off, the target rises with it.
Open with a CYA test, not a guess — the shock target follows the stabilizer, and a winter under a cover can leave it anywhere.
Reference tables
Three crawlable tables, CC BY 4.0. Every cell renders from the shared chlorine engine — no static numbers, no disagreement with the chlorine page possible.
T1 · SLAM shock target by CYA
The wedge as data. SLAM = 40% × CYA. The clone's “10 ppm” column shows where the fixed advice falls; flagged rows are where it's BELOW the real shock zone.
| CYA (ppm) | Normal target | SLAM target | Clone's “10 ppm” |
|---|---|---|---|
| 20 | 2.5 | 10 | 10 |
| 30 | 3.5 | 12 | 10 below SLAM ✗ |
| 50 | 6 | 20 | 10 below SLAM ✗ |
| 80 | 9 | 32 | 10 below SLAM ✗ |
| 100 | 11.5 | 40 | 10 below SLAM ✗ |
| 120 | 14 | 48 | 10 below SLAM ✗ |
T2 · Liquid chlorine shock dose (fl oz of 12.5% liquid)
Identical to the chlorine calculator's dose table by construction — both call the same liquidDose() function. Shock just uses a higher ΔFC.
| Pool size (gal) | ΔFC 10 | ΔFC 15 | ΔFC 20 | ΔFC 25 | ΔFC 30 |
|---|---|---|---|---|---|
| 5,000 | 51 | 77 | 102 | 128 | 154 |
| 10,000 | 102 | 154 | 205 | 256 | 307 |
| 15,000 | 154 | 230 | 307 | 384 | 461 |
| 20,000 | 205 | 307 | 410 | 512 | 614 |
| 25,000 | 256 | 384 | 512 | 640 | 768 |
T3 · Side-effects at a 30-ppm shock
From the shared constants — these figures are identical to the chlorine and calcium pages' for the same ΔFC, and the build pipeline asserts the identity.
| Product | Side effect | Per ppm FC | Per 30 ppm shock |
|---|---|---|---|
| Liquid (sodium hypochlorite) | salt | +1.65 ppm | +49.5 ppm |
| Cal-hypo | calcium hardness | +0.71 ppm | +21.3 ppm |
| Dichlor | cyanuric acid | +0.91 ppm | +27.3 ppm |
| Trichlor | N/A — not a shock product | — | slow-dissolving tablets cannot deliver a fast shock |
All three tables released under CC BY 4.0. Attribute PoolSolver and link back.
Sources & methodology
The shortest methodology on the site — by design. Shock IS chlorine dosing at a high CYA-keyed target; almost everything inherits from the chlorine page.
Dose math. The same chlorine engine the chlorine calculator uses, called with a higher ΔFC. Liquid dose math: gallons = ΔFC × (gallons ÷ 10,000) ÷ trade-percent. Dry (cal-hypo, dichlor) dose math: pounds = ΔFC × gal × 8.345 × 10⁻⁶ ÷ available-Cl fraction. Identical functions, identical constants. The build pipeline asserts that the shock page's side-effect figures equal the chlorine engine's output for the same ΔFC — the cross-page identity is locked at 0.0001 tolerance.
SLAM target. The 40%-of-CYA rule is the Trouble Free Pool SLAM method, reconciled to the FC/CYA equilibria the chlorine page already uses (the cya.ts engine — same cyaToFcTargetsfunction drives the “normal target” column in T1). Labelled as derived practice; the chemistry justification (cyanurate binding chlorine and lowering effective FC) is the chlorine page's CyaShield explainer pointed at shock.
Breakpoint.Classic breakpoint chlorination: FC ≈ 10 × combined chlorine above current to oxidize chloramines in a single push. Convention; the 10× factor is the standard one. The minimum 5-ppm push floor handles the “tiny CC” case sensibly.
Side-effect figures. Same shared constants the chlorine and calcium pages use: LIQUID_CL_SALT_PPM_PER_FC = 1.65, CALHYPO_CH_PPM_PER_PPM_FC = 0.71, DICHLOR_CYA_PPM_PER_PPM_FC = 0.91, TRICHLOR_CYA_PPM_PER_PPM_FC = 0.61. All imported from lib/dosing/chemicals.ts, never re-typed. Every dichlor-CYA figure on the page is computed from the shipped 0.91 constant — the rounded “~0.9” some sources quote does not appear on this page.
The honesty paragraph (shock edition)
No fixed-number shock. Every shock target on this page is computed from the user's CYA (or CC). The conventional “10 ppm” appears in two places only: the ShockLadder visual (as the WRONG answer for contrast) and the T1 reference table (with a flag column showing where it falls below the real shock zone). The CYA-0 boundary case lands at the 10-ppm SLAM floor — same rule, evaluated at zero CYA. Trichlor is NOT a shock product (slow tablet, dumps CYA) — the product chip is disabled with the disqualification visible. Swim-wait is by test, not clock — we don't print a fabricated “wait 24 hours”; we say swim when FC tests back to the normal target (derived from the user's CYA, via the same cyaToFcTargets the chlorine page uses). And at high CYA the calculator leads with the drain recommendation — never quotes the heroic dose alone.
Post-shock rebalance. A SLAM doses heavily and the side-effects matter for the rest of your chemistry. After clearing, run your numbers through the LSI calculator — particularly if you used cal-hypo (calcium added) or dichlor (CYA added). The cluster routes back to the diagnostic that combines them.
Frequently asked questions
How much shock does my pool need?
Why isn't “shock to 10 ppm” enough for my pool?
My pool is green — how much shock for algae?
My CYA is really high and shock isn't working — what do I do?
My pool smells strongly of chlorine — do I need less chlorine?
What's the best chlorine to shock with?
How long after shocking can I swim?
When should I shock — and how often?
Related calculators
Related across clusters: Pool Pump Run Time Calculator, Pool Filter Size Calculator.
All Pool Chemistry calculators: browse the hub.