Refrigerant Charge Calculator
ANA›Life Services Authority›National Calculator Authority›Refrigerant Charge Calculator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
Refrigerant Charge Calculator
Calculate the required refrigerant charge for HVAC/refrigeration systems based on system capacity, line set length, and refrigerant type.
Refrigerant Type
R-410A (HFC) R-22 (HCFC) R-32 (HFC) R-134a (HFC) R-404A (HFC Blend) R-407C (HFC Blend) R-448A (HFO Blend) R-454B (HFO Blend)
System Cooling Capacity (tons)
Liquid Line Length (ft)
Liquid Line OD (inches)
1/4" (0.25") 3/8" (0.375") 1/2" (0.5") 5/8" (0.625") 3/4" (0.75") 7/8" (0.875") 1-1/8" (1.125")
Suction Line Length (ft)
Suction Line OD (inches)
1/2" (0.5") 5/8" (0.625") 3/4" (0.75") 7/8" (0.875") 1-1/8" (1.125") 1-3/8" (1.375") 1-5/8" (1.625")
Factory/Base Charge (oz)
Check equipment nameplate or spec sheet
Factory Charge Line Set Length (ft)
Length factory charge is rated for (typically 15–25 ft)
Calculate Refrigerant Charge
// Refrigerant properties database // liquid_density: lb/ft³ at typical operating conditions (~100°F liquid) // vapor_density: lb/ft³ at typical suction conditions (~45°F saturated) // charge_per_ton: oz/ton — typical manufacturer charge rate // liquid_line_adder: oz per foot of liquid line beyond base (per 1/4" nominal) const REF_PROPS = { "R410A": { liquid_density: 71.2, vapor_density: 1.55, charge_per_ton: 26.0, liquid_adder_per_ft: { "0.25":0.3, "0.375":0.6, "0.5":1.0, "0.625":1.6, "0.75":2.3, "0.875":3.1, "1.125":5.2 }, suction_adder_per_ft:{ "0.5":0.04,"0.625":0.06,"0.75":0.09,"0.875":0.12,"1.125":0.20,"1.375":0.30,"1.625":0.43 } }, "R22": { liquid_density: 74.8, vapor_density: 1.10, charge_per_ton: 30.0, liquid_adder_per_ft: { "0.25":0.31,"0.375":0.63,"0.5":1.05,"0.625":1.68,"0.75":2.42,"0.875":3.26,"1.125":5.46 }, suction_adder_per_ft:{ "0.5":0.03,"0.625":0.05,"0.75":0.08,"0.875":0.10,"1.125":0.17,"1.375":0.26,"1.625":0.37 } }, "R32": { liquid_density: 62.4, vapor_density: 1.30, charge_per_ton: 20.0, liquid_adder_per_ft: { "0.25":0.26,"0.375":0.53,"0.5":0.88,"0.625":1.40,"0.75":2.02,"0.875":2.72,"1.125":4.56 }, suction_adder_per_ft:{ "0.5":0.04,"0.625":0.06,"0.75":0.09,"0.875":0.13,"1.125":0.21,"1.375":0.32,"1.625":0.46 } }, "R134a": { liquid_density: 71.8, vapor_density: 0.95, charge_per_ton: 32.0, liquid_adder_per_ft: { "0.25":0.30,"0.375":0.61,"0.5":1.01,"0.625":1.62,"0.75":2.33,"0.875":3.14,"1.125":5.26 }, suction_adder_per_ft:{ "0.5":0.03,"0.625":0.04,"0.75":0.07,"0.875":0.09,"1.125":0.15,"1.375":0.23,"1.625":0.33 } }, "R404A": { liquid_density: 68.5, vapor_density: 1.45, charge_per_ton: 35.0, liquid_adder_per_ft: { "0.25":0.29,"0.375":0.58,"0.5":0.97,"0.625":1.55,"0.75":2.23,"0.875":3.00,"1.125":5.03 }, suction_adder_per_ft:{ "0.5":0.04,"0.625":0.07,"0.75":0.10,"0.875":0.14,"1.125":0.23,"1.375":0.35,"1.625":0.50 } }, "R407C": { liquid_density: 70.1, vapor_density: 1.20, charge_per_ton: 28.0, liquid_adder_per_ft: { "0.25":0.29,"0.375":0.59,"0.5":0.99,"0.625":1.58,"0.75":2.28,"0.875":3.07,"1.125":5.14 }, suction_adder_per_ft:{ "0.5":0.04,"0.625":0.06,"0.75":0.09,"0.875":0.12,"1.125":0.20,"1.375":0.31,"1.625":0.44 } }, "R448A": { liquid_density: 69.8, vapor_density: 1.48, charge_per_ton: 27.0, liquid_adder_per_ft: { "0.25":0.29,"0.375":0.59,"0.5":0.98,"0.625":1.57,"0.75":2.26,"0.875":3.05,"1.125":5.11 }, suction_adder_per_ft:{ "0.5":0.04,"0.625":0.06,"0.75":0.10,"0.875":0.13,"1.125":0.22,"1.375":0.33,"1.625":0.47 } }, "R454B": { liquid_density: 65.0, vapor_density: 1.35, charge_per_ton: 22.0, liquid_adder_per_ft: { "0.25":0.27,"0.375":0.55,"0.5":0.91,"0.625":1.46,"0.75":2.10,"0.875":2.83,"1.125":4.74 }, suction_adder_per_ft:{ "0.5":0.04,"0.625":0.06,"0.75":0.09,"0.875":0.13,"1.125":0.21,"1.375":0.32,"1.625":0.46 } } };
// Copper tube internal cross-sectional area (in²) by nominal OD // Using standard ACR copper tube wall thickness (Type L) // ID = OD - 2wall; Area = π(ID/2)² // Wall thicknesses (inches): 1/4"→0.030, 3/8"→0.030, 1/2"→0.035, 5/8"→0.040, 3/4"→0.042, 7/8"→0.045, 1-1/8"→0.050, 1-3/8"→0.055, 1-5/8"→0.060 const TUBE_ID = { "0.25": 0.25 - 20.030, "0.375": 0.375 - 20.030, "0.5": 0.5 - 20.035, "0.625": 0.625 - 20.040, "0.75": 0.75 - 20.042, "0.875": 0.875 - 20.045, "1.125": 1.125 - 20.050, "1.375": 1.375 - 20.055, "1.625": 1.625 - 2*0.060 };
function refTubeVolume_ft3(od_str, length_ft) { const id_in = TUBE_ID[od_str]; const area_in2 = Math.PI * Math.pow(id_in / 2, 2); const vol_in3 = area_in2 * (length_ft * 12); return vol_in3 / 1728; // convert in³ → ft³ }
function refUpdateRefrigerant() { // Could auto-update defaults based on refrigerant type }
function refCalc() { const resultDiv = document.getElementById("ref-result");
// --- Gather inputs --- const refType = document.getElementById("ref-refrigerant-type").value; const capacity = parseFloat(document.getElementById("ref-system-capacity").value); const liqLen = parseFloat(document.getElementById("ref-liquid-line-length").value); const liqOD = document.getElementById("ref-liquid-line-od").value; const suctLen = parseFloat(document.getElementById("ref-suction-line-length").value); const suctOD = document.getElementById("ref-suction-line-od").value; const factoryCharge = parseFloat(document.getElementById("ref-factory-charge").value); const baseLineset = parseFloat(document.getElementById("ref-base-lineset").value);
// --- Validation --- const errors = []; if (isNaN(capacity) || capacity 0) errors.push("Warning: Liquid line length is shorter than factory base length — charge may need to be removed.");
if (errors.length > 0) { resultDiv.style.display = "block"; resultDiv.innerHTML = "Input Errors:" + errors.map(e => "").join("") + ""; return; }
const props = REF_PROPS[refType];
// --------------------------------------------------------------- // METHOD 1: Volume-based calculation (physics-based) // Charge = Volume × Density // Liquid line: refrigerant is subcooled liquid // Suction line: refrigerant is superheated vapor // --------------------------------------------------------------- const liqVol_ft3 = refTubeVolume_ft3(liqOD, liqLen); const suctVol_ft3 = refTubeVolume_ft3(suctOD, suctLen);
const liqCharge_lb = liqVol_ft3 * props.liquid_density; const suctCharge_lb = suctVol_ft3 * props.vapor_density; const totalCharge_lb = liqCharge_lb + suctCharge_lb; const totalCharge_oz_vol = totalCharge_lb * 16;
// --------------------------------------------------------------- // METHOD 2: Manufacturer adder method (industry standard) // Total = Factory Charge + (Extra Length × oz/ft adder) // Extra length = actual line set - factory base line set // --------------------------------------------------------------- const extraLength = liqLen - baseLineset; const liqAdder = props.liquid_adder_per_ft[liqOD] || 0; const suctAdder = props.suction_adder_per_ft[suctOD] || 0;
// Liquid line adder (dominant — liquid is dense) const liqAdderCharge = extraLength > 0 ? extraLength * liqAdder : 0; // Suction line: full length adder (vapor contribution) const suctAdderCharge = suctLen * suctAdder;
const totalCharge_oz_mfr = factoryCharge + liqAdderCharge + suctAdderCharge;
// --------------------------------------------------------------- // Capacity-based sanity check // Rule of thumb: ~2–3 oz per ton per foot of line set // --------------------------------------------------------------- const chargePerTon = totalCharge_oz_mfr / capacity; const typicalMin = 20; const typicalMax = 45;
// --------------------------------------------------------------- // Tube volumes for display // --------------------------------------------------------------- const liqVol_in3 = liqVol_ft3 * 1728; const suctVol_in3 = suctVol_ft3 * 1728;
// --------------------------------------------------------------- // Determine if charge needs to be added or removed // --------------------------------------------------------------- const chargeAdjustment = liqAdderCharge + suctAdderCharge; const adjustmentLabel = chargeAdjustment >= 0 ? "Add" : "Remove"; const adjustmentAbs = Math.abs(chargeAdjustment);
// --------------------------------------------------------------- // Warnings // --------------------------------------------------------------- let warnings = []; if (chargePerTon typicalMax) warnings.push("Charge per ton (" + chargePerTon.toFixed(1) + " oz/ton) is above typical range (20–45 oz/ton). Verify inputs."); if (liqLen > 100) warnings.push("Line set exceeds 100 ft — consult manufacturer for extended line set requirements and possible capacity derating."); if (refType === "R22") warnings.push("R-22 is a phased-out refrigerant. Use only for servicing existing systems. New installations must use approved alternatives.");
// --------------------------------------------------------------- // Build result HTML // --------------------------------------------------------------- let html = "### Refrigerant Charge Results "; html += ""; html += "ParameterValue"; html += "Refrigerant Type" + refType + ""; html += "System Capacity" + capacity + " tons"; html += "Liquid Line" + liqLen + " ft × " + liqOD + '" OD (ID: ' + TUBE_ID[liqOD].toFixed(3) + '")'; html += "Suction Line" + suctLen + " ft × " + suctOD + '" OD (ID: ' + TUBE_ID[suctOD].toFixed(3) + '")'; html += "Liquid Line Internal Volume" + liqVol_in3.toFixed(2) + " in³ (" + liqVol_ft3.toFixed(4) + " ft³)"; html += "Suction Line Internal Volume" + suctVol_in3.toFixed(2) + " in³ (" + suctVol_ft3.toFixed(4) + " ft³)"; html += "";
html += "#### Method 1: Volume-Based Calculation "; html += ""; html += "ComponentCharge"; html += "Liquid Line Charge (liquid density: " + props.liquid_density + " lb/ft³)" + (liqCharge_lb * 16).toFixed(2) + " oz (" + liqCharge_lb.toFixed(3) + " lb)"; html += "Suction Line Charge (vapor density: " + props.vapor_density + " lb/ft³)" + (suctCharge_lb * 16).toFixed(2) + " oz (" + suctCharge_lb.toFixed(3) + " lb)"; html += "Total Line Set Charge" + totalCharge_oz_vol.toFixed(1) + " oz (" + totalCharge_lb.toFixed(3) + " lb)"; html += "";
html += "#### Method 2: Manufacturer Adder Method (Recommended) "; html += ""; html += "ComponentCharge"; html += "Factory/Base Charge" + factoryCharge.toFixed(1) + " oz"; html += "Extra Liquid Line Length (" + (extraLength > 0 ? "+" : "") + extraLength.toFixed(0) + " ft × " + liqAdder + " oz/ft)" + liqAdderCharge.toFixed(2) + " oz"; html += "Suction Line Adder (" + suctLen + " ft × " + suctAdder + " oz/ft)" + suctAdderCharge.toFixed(2) + " oz"; html += "Total Required Charge" + totalCharge_oz_mfr.toFixed(1) + " oz (" + (totalCharge_oz_mfr / 16).toFixed(3) + " lb)"; html += "Charge Adjustment from Factory" + adjustmentLabel + " " + adjustmentAbs.toFixed(2) + " oz"; html += "Charge per Ton" + chargePerTon.toFixed(1) + " oz/ton"; html += "";
if (warnings.length > 0) { html += "⚠ Warnings:" + warnings.map(w => "").join("") + ""; }
html += "Note: Method 2 (Manufacturer Adder) is the industry-standard field method. Method 1 provides a physics-based cross-check. Always verify with the equipment manufacturer's specification sheet and use refrigerant scale and manifold gauges for final charge verification.";
resultDiv.style.display = "block"; resultDiv.innerHTML = html; }
#### Formulas Used
Tube Internal Volume:
ID = OD − 2 × wall_thickness
V = π × (ID/2)² × L
where L = line length, ID = internal diameter (ACR Type L copper)
Method 1 — Volume-Based Charge:
m_liquid = V_liquid × ρ_liquid
m_vapor = V_suction × ρ_vapor
Total Charge = (m_liquid + m_vapor) × 16 [oz]
where ρ_liquid = liquid refrigerant density at ~100°F (lb/ft³), ρ_vapor = vapor density at ~45°F saturated suction (lb/ft³)
Method 2 — Manufacturer Adder Method (ACCA/ASHRAE Standard):
Total Charge = Q_factory + (L_liquid − L_base) × k_liquid + L_suction × k_suction
where Q_factory = nameplate factory charge (oz), L_base = factory-rated line set length (ft), k_liquid = liquid line oz/ft adder, k_suction = suction line oz/ft adder
#### Assumptions & References
More Calculators
- Roof Sealant and Caulk Quantity Calculator
- Roof Coating ROI and Energy Savings Calculator
- Roof Slope and Coating Thickness Calculator
- Roof Drainage and Gutter Size Calculator
- IMU Accelerometer + Gyroscope Complementary Filter Calculator
- Kalman Filter Noise Covariance Calculator
- Insurance Coverage Needs Estimator
- Loss Ratio Calculator
- Claims Settlement Value Estimator
- Depreciation Calculator for Property Claims
- Actual Cash Value vs Replacement Cost Calculator
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...