Estimate softener resin size or existing-bed run length, regeneration salt use, bed volumes, and recurring salt cost from water hardness.
The 200 mg/L hardness, 27 kgr/ft3 capacity, and 15 lb/ft3 salt dose are editable planning examples. Replace them with local water-test, supplier, resin-data-sheet, and operating values.
Table of contents
How to use our Ion Exchange Resin Capacity Calculator
- Choose whether to size a new bed or check an installed bed under "What do you want to plan?"
- Enter "Influent hardness" from a water test or report, using the stated mg/L as CaCO3 basis, and enter average "Water treated each day."
- For a new bed, enter "Days between regenerations"; for an installed bed, enter "Existing resin volume."
- Enter "Usable resin capacity," "Salt dose," and "Salt price" from a matching resin data sheet, regeneration recipe, and supplier invoice or quote.
- Click Calculate, then check that the capacity-and-salt-dose message matches your operating basis and that the predicted regeneration interval fits your intended schedule.

Definitions
Influent hardness: The hardness in water before it enters the softener, entered as mg/L as CaCO3.
Grain: A small unit used for water-softening capacity. One kgr is 1,000 grains.
Usable resin capacity: The working hardness-removal capacity of one cubic foot of resin between regenerations, stated in kgr as CaCO3/ft3.
Regeneration: Restoring sodium-cycle cation resin with a salt brine after its usable capacity is spent.
Salt dose: Pounds of sodium chloride, NaCl, used to regenerate each cubic foot of resin.
Bed volume: A volume equal to the resin volume in the vessel. The calculator converts resin cubic feet to gallons before reporting treated bed volumes.
Common mistakes and quick fixes
Mistake: Entering hardness in grains per gallon in "Influent hardness."
Fix: Convert or obtain the result as mg/L as CaCO3 before entering it; this field does not accept grains per gallon.
Mistake: Using peak-day demand for "Water treated each day."
Fix: Enter an average daily treated-water amount from meter or plant records. Peak flow needs a separate hydraulic check.
Mistake: Entering empty tank volume as "Existing resin volume."
Fix: Enter only the cubic feet of resin actually in service, using vessel records or resin inventory.
Mistake: Using a theoretical maximum for "Usable resin capacity."
Fix: Use a usable operating capacity from the supplier or verified operating history, matched to the regeneration conditions.
Mistake: Combining "Usable resin capacity" from one recipe with "Salt dose" from another.
Fix: Use values from the same resin and regeneration basis, then review the capacity-and-salt-dose check before relying on annual cost.
Mistake: Treating "Estimated annual salt cost" as the full operating cost.
Fix: It includes salt only. Add labor, water, wastewater, energy, and equipment costs separately if needed.
Limitations & Key Assumptions / Boundary Conditions
- This is a preliminary sodium-cycle cation-softening calculation. It does not size vessels, distributors, brine tanks, or piping.
- It uses average daily water use. It does not test peak flow, pressure drop, contact time, or hydraulic loading.
- Hardness and usable capacity can change with water chemistry, competing ions, temperature, fouling, resin age, and the actual regeneration recipe.
- The calculated run length is an estimate, not a breakthrough or treated-water-quality guarantee.
- Salt costs include sodium chloride only. They exclude resin and equipment purchase, installation, labor, backwash and rinse water, wastewater handling, energy, and storage.
- Use supplier data, site testing, and applicable local requirements for final design and operation.
Methodology
Calculation method
The calculator first changes hardness from mg/L as CaCO3 to grains per gallon. It multiplies that value by average treated water to find the daily hardness load.
hardness_grains_per_gallon = influent_hardness_mg_l_as_caco3 / 17.118
daily_hardness_load_grains = daily_treated_water_gallons * hardness_grains_per_gallon
In new-bed mode, the daily load is multiplied by the selected service days and divided by usable capacity. Capacity in kgr is multiplied by 1,000 because one kgr equals 1,000 grains.
required_resin_volume_ft3 = daily_hardness_load_grains * target_regeneration_days / (usable_resin_capacity_kgr_ft3 * 1000)
In existing-bed mode, installed resin capacity is divided by hardness per gallon to estimate water treated before regeneration. Days between regenerations equal that service water divided by average daily water use.
service_run_gallons = existing_resin_volume_ft3 * usable_resin_capacity_kgr_ft3 * 1000 / hardness_grains_per_gallon
run_length_days = service_run_gallons / daily_treated_water_gallons
Bed volumes use the active resin volume and 7.48052 gallons per cubic foot. Salt and cost use that same active resin volume.
bed_volumes_before_regeneration = service_run_gallons / (resin_volume_used_ft3 * 7.48052)
salt_per_regeneration_lb = resin_volume_used_ft3 * salt_dose_lb_ft3; salt_cost_per_regeneration = salt_per_regeneration_lb * salt_price_per_lb; annual_salt_cost = salt_cost_per_regeneration * 365 / run_length_days
Worked example
With 200 mg/L as CaCO3 hardness, 10,000 gallons per day, a 3-day target, and 27 kgr/ft3 usable capacity, the required resin volume is about 12.98 ft3. At 15 lb NaCl/ft3 and $0.10 per lb, that bed uses about 194.73 lb of salt per regeneration and costs about $2,369 per year for salt under the same average conditions.