{"slug":"foundation-repair-cost-calculator","lang":"en","category":"Foundation Repair","subcategory":"foundation costs","ui":{"inputs":[{"name":"task__engineer_report","label":"Structural engineer inspection and report","type":"select","required":true,"default_value":"pro","options":[{"value":"skip","label":"Skip this task"},{"value":"pro","label":"Hire a pro"}]},{"name":"quantity__engineer_report","label":"Project size (projects)","type":"number","required":true,"default_value":1,"min":0.1,"unit":"project","help":"Enter the size in projects.","show_if":{"task__engineer_report":["pro"]}},{"name":"task__crack_repair","label":"Foundation crack repair (epoxy or polyurethane injection, per crack)","type":"select","required":true,"default_value":"pro","options":[{"value":"skip","label":"Skip this task"},{"value":"pro","label":"Hire a pro"},{"value":"diy","label":"DIY (materials only)"}]},{"name":"quantity__crack_repair","label":"Number of cracks","type":"number","required":true,"default_value":2,"min":0.1,"unit":"units","help":"Enter the size in units.","show_if":{"task__crack_repair":["pro","diy"]}},{"name":"task__piers","label":"Foundation piers / underpinning (per pier)","type":"select","required":true,"default_value":"pro","options":[{"value":"skip","label":"Skip this task"},{"value":"pro","label":"Hire a pro"}]},{"name":"quantity__piers","label":"Number of piers","type":"number","required":true,"default_value":2,"min":0.1,"unit":"units","help":"Enter the size in units.","show_if":{"task__piers":["pro"]}},{"name":"pier_type","label":"Pier type","type":"select","required":true,"default_value":"steel_push","options":[{"value":"steel_push","label":"Steel push piers"},{"value":"helical","label":"Helical piers"}],"show_if":{"task__piers":["pro"]}},{"name":"task__bowing_wall","label":"Bowing basement wall stabilization (per linear ft of wall)","type":"select","required":true,"default_value":"skip","options":[{"value":"skip","label":"Skip this task"},{"value":"pro","label":"Hire a pro"}]},{"name":"quantity__bowing_wall","label":"Length of the bowing wall","type":"number","required":true,"default_value":20,"min":0.1,"unit":"ft","help":"Enter the size in linear feet.","show_if":{"task__bowing_wall":["pro"]}},{"name":"wall_method","label":"Wall stabilization method","type":"select","required":true,"default_value":"straps","options":[{"value":"straps","label":"Carbon fiber or steel straps"},{"value":"anchors","label":"Wall anchors"},{"value":"straightening","label":"Wall straightening (straps plus excavation)"}],"show_if":{"task__bowing_wall":["pro"]}},{"name":"task__crawl_jacks","label":"Crawl space support jacks (per jack)","type":"select","required":true,"default_value":"skip","options":[{"value":"skip","label":"Skip this task"},{"value":"pro","label":"Hire a pro"}]},{"name":"quantity__crawl_jacks","label":"Number of support jacks","type":"number","required":true,"default_value":4,"min":0.1,"unit":"units","help":"Enter the size in units.","show_if":{"task__crawl_jacks":["pro"]}},{"name":"task__mudjacking","label":"Slab leveling by mudjacking (per sq ft)","type":"select","required":true,"default_value":"skip","options":[{"value":"skip","label":"Skip this task"},{"value":"pro","label":"Hire a pro"}]},{"name":"quantity__mudjacking","label":"Slab area to lift","type":"number","required":true,"default_value":100,"min":0.1,"unit":"sq ft","help":"Enter the size in square feet.","show_if":{"task__mudjacking":["pro"]}},{"name":"task__polyjacking","label":"Slab leveling by polyurethane foam (polyjacking, per sq ft)","type":"select","required":true,"default_value":"skip","options":[{"value":"skip","label":"Skip this task"},{"value":"pro","label":"Hire a pro"}]},{"name":"quantity__polyjacking","label":"Slab area to lift","type":"number","required":true,"default_value":100,"min":0.1,"unit":"sq ft","help":"Enter the size in square feet.","show_if":{"task__polyjacking":["pro"]}},{"name":"task__drainage","label":"Exterior foundation drainage (per linear ft)","type":"select","required":true,"default_value":"skip","options":[{"value":"skip","label":"Skip this task"},{"value":"pro","label":"Hire a pro"}]},{"name":"quantity__drainage","label":"Length of drain","type":"number","required":true,"default_value":50,"min":0.1,"unit":"ft","help":"Enter the size in linear feet.","show_if":{"task__drainage":["pro"]}},{"name":"task__house_lifting","label":"Full foundation lifting and leveling","type":"select","required":true,"default_value":"skip","options":[{"value":"skip","label":"Skip this task"},{"value":"pro","label":"Hire a pro"}]},{"name":"quantity__house_lifting","label":"Project size (projects)","type":"number","required":true,"default_value":1,"min":0.1,"unit":"project","help":"Enter the size in projects.","show_if":{"task__house_lifting":["pro"]}},{"name":"state","label":"Location (state or metro area)","type":"select","required":true,"default_value":"US","options":[{"value":"US","label":"National average"},{"value":"AL","label":"Alabama (AL)"},{"value":"AK","label":"Alaska (AK)"},{"value":"AZ","label":"Arizona (AZ)"},{"value":"AR","label":"Arkansas (AR)"},{"value":"CA","label":"California (CA)"},{"value":"CO","label":"Colorado (CO)"},{"value":"CT","label":"Connecticut (CT)"},{"value":"DE","label":"Delaware (DE)"},{"value":"FL","label":"Florida (FL)"},{"value":"GA","label":"Georgia (GA)"},{"value":"HI","label":"Hawaii (HI)"},{"value":"ID","label":"Idaho (ID)"},{"value":"IL","label":"Illinois (IL)"},{"value":"IN","label":"Indiana (IN)"},{"value":"IA","label":"Iowa (IA)"},{"value":"KS","label":"Kansas (KS)"},{"value":"KY","label":"Kentucky (KY)"},{"value":"LA","label":"Louisiana (LA)"},{"value":"ME","label":"Maine (ME)"},{"value":"MD","label":"Maryland (MD)"},{"value":"MA","label":"Massachusetts (MA)"},{"value":"MI","label":"Michigan (MI)"},{"value":"MN","label":"Minnesota (MN)"},{"value":"MS","label":"Mississippi (MS)"},{"value":"MO","label":"Missouri (MO)"},{"value":"MT","label":"Montana (MT)"},{"value":"NE","label":"Nebraska (NE)"},{"value":"NV","label":"Nevada (NV)"},{"value":"NH","label":"New Hampshire (NH)"},{"value":"NJ","label":"New Jersey (NJ)"},{"value":"NM","label":"New Mexico (NM)"},{"value":"NY","label":"New York (NY)"},{"value":"NC","label":"North Carolina (NC)"},{"value":"ND","label":"North Dakota (ND)"},{"value":"OH","label":"Ohio (OH)"},{"value":"OK","label":"Oklahoma (OK)"},{"value":"OR","label":"Oregon (OR)"},{"value":"PA","label":"Pennsylvania (PA)"},{"value":"RI","label":"Rhode Island (RI)"},{"value":"SC","label":"South Carolina (SC)"},{"value":"SD","label":"South Dakota (SD)"},{"value":"TN","label":"Tennessee (TN)"},{"value":"TX","label":"Texas (TX)"},{"value":"UT","label":"Utah (UT)"},{"value":"VT","label":"Vermont (VT)"},{"value":"VA","label":"Virginia (VA)"},{"value":"WA","label":"Washington (WA)"},{"value":"WV","label":"West Virginia (WV)"},{"value":"WI","label":"Wisconsin (WI)"},{"value":"WY","label":"Wyoming (WY)"},{"value":"DC","label":"District of Columbia (DC)"},{"value":"M10420","label":"Akron, OH (metro)"},{"value":"M10580","label":"Albany-Schenectady-Troy, NY (metro)"},{"value":"M10740","label":"Albuquerque, NM (metro)"},{"value":"M10900","label":"Allentown-Bethlehem-Easton, PA-NJ (metro)"},{"value":"M11260","label":"Anchorage, AK (metro)"},{"value":"M12060","label":"Atlanta-Sandy Springs-Alpharetta, GA (metro)"},{"value":"M12260","label":"Augusta-Richmond County, GA-SC (metro)"},{"value":"M12420","label":"Austin-Round Rock-San Marcos, TX (metro)"},{"value":"M12540","label":"Bakersfield-Delano, CA (metro)"},{"value":"M12580","label":"Baltimore-Columbia-Towson, MD (metro)"},{"value":"M12940","label":"Baton Rouge, LA (metro)"},{"value":"M13820","label":"Birmingham-Hoover, AL (metro)"},{"value":"M14260","label":"Boise City, ID (metro)"},{"value":"M14460","label":"Boston-Cambridge-Newton, MA-NH (metro)"},{"value":"M14860","label":"Bridgeport-Stamford-Norwalk, CT (metro)"},{"value":"M15380","label":"Buffalo-Cheektowaga, NY (metro)"},{"value":"M15980","label":"Cape Coral-Fort Myers, FL (metro)"},{"value":"M16700","label":"Charleston-North Charleston, SC (metro)"},{"value":"M16740","label":"Charlotte-Concord-Gastonia, NC-SC (metro)"},{"value":"M16860","label":"Chattanooga, TN-GA (metro)"},{"value":"M16980","label":"Chicago-Naperville-Elgin, IL-IN-WI (metro)"},{"value":"M17140","label":"Cincinnati, OH-KY-IN (metro)"},{"value":"M17410","label":"Cleveland, OH (metro)"},{"value":"M17820","label":"Colorado Springs, CO (metro)"},{"value":"M17900","label":"Columbia, SC (metro)"},{"value":"M18140","label":"Columbus, OH (metro)"},{"value":"M18580","label":"Corpus Christi, TX (metro)"},{"value":"M19100","label":"Dallas-Fort Worth-Arlington, TX (metro)"},{"value":"M19660","label":"Deltona-Daytona Beach-Ormond Beach, FL (metro)"},{"value":"M19740","label":"Denver-Aurora-Lakewood, CO (metro)"},{"value":"M19780","label":"Des Moines-West Des Moines, IA (metro)"},{"value":"M19820","label":"Detroit-Warren-Dearborn, MI (metro)"},{"value":"M20500","label":"Durham-Chapel Hill, NC (metro)"},{"value":"M21340","label":"El Paso, TX (metro)"},{"value":"M22020","label":"Fargo, ND-MN (metro)"},{"value":"M22180","label":"Fayetteville, NC (metro)"},{"value":"M23060","label":"Fort Wayne, IN (metro)"},{"value":"M23420","label":"Fresno, CA (metro)"},{"value":"M24340","label":"Grand Rapids-Wyoming-Kentwood, MI (metro)"},{"value":"M24660","label":"Greensboro-High Point, NC (metro)"},{"value":"M24860","label":"Greenville-Anderson-Greer, SC (metro)"},{"value":"M25060","label":"Gulfport-Biloxi, MS (metro)"},{"value":"M25420","label":"Harrisburg-Carlisle, PA (metro)"},{"value":"M25540","label":"Hartford-West Hartford-East Hartford, CT (metro)"},{"value":"M26420","label":"Houston-The Woodlands-Sugar Land, TX (metro)"},{"value":"M26620","label":"Huntsville, AL (metro)"},{"value":"M26900","label":"Indianapolis-Carmel-Anderson, IN (metro)"},{"value":"M27140","label":"Jackson, MS (metro)"},{"value":"M27260","label":"Jacksonville, FL (metro)"},{"value":"M28140","label":"Kansas City, MO-KS (metro)"},{"value":"M28940","label":"Knoxville, TN (metro)"},{"value":"M29460","label":"Lakeland-Winter Haven, FL (metro)"},{"value":"M29540","label":"Lancaster, PA (metro)"},{"value":"M29620","label":"Lansing-East Lansing, MI (metro)"},{"value":"M29740","label":"Las Cruces, NM (metro)"},{"value":"M29820","label":"Las Vegas-Henderson-Paradise, NV (metro)"},{"value":"M30460","label":"Lexington-Fayette, KY (metro)"},{"value":"M30780","label":"Little Rock-North Little Rock-Conway, AR (metro)"},{"value":"M31080","label":"Los Angeles-Long Beach-Anaheim, CA (metro)"},{"value":"M31140","label":"Louisville/Jefferson County, KY-IN (metro)"},{"value":"M31540","label":"Madison, WI (metro)"},{"value":"M31700","label":"Manchester-Nashua, NH (metro)"},{"value":"M32580","label":"McAllen-Edinburg-Mission, TX (metro)"},{"value":"M32820","label":"Memphis, TN-MS-AR (metro)"},{"value":"M33100","label":"Miami-Fort Lauderdale-West Palm Beach, FL (metro)"},{"value":"M33340","label":"Milwaukee-Waukesha, WI (metro)"},{"value":"M33460","label":"Minneapolis-St. Paul-Bloomington, MN-WI (metro)"},{"value":"M33660","label":"Mobile, AL (metro)"},{"value":"M33700","label":"Modesto, CA (metro)"},{"value":"M34980","label":"Nashville-Davidson-Murfreesboro-Franklin, TN (metro)"},{"value":"M35300","label":"New Haven, CT (metro)"},{"value":"M35380","label":"New Orleans-Metairie, LA (metro)"},{"value":"M35620","label":"New York-Newark-Jersey City, NY-NJ-PA (metro)"},{"value":"M35840","label":"North Port-Bradenton-Sarasota, FL (metro)"},{"value":"M36100","label":"Ocala, FL (metro)"},{"value":"M36420","label":"Oklahoma City, OK (metro)"},{"value":"M36540","label":"Omaha, NE-IA (metro)"},{"value":"M36740","label":"Orlando-Kissimmee-Sanford, FL (metro)"},{"value":"M37100","label":"Oxnard-Thousand Oaks-Ventura, CA (metro)"},{"value":"M37340","label":"Palm Bay-Melbourne-Titusville, FL (metro)"},{"value":"M37860","label":"Pensacola-Ferry Pass-Brent, FL (metro)"},{"value":"M37980","label":"Philadelphia-Camden-Wilmington, PA-NJ-DE-MD (metro)"},{"value":"M38060","label":"Phoenix-Mesa-Chandler, AZ (metro)"},{"value":"M38300","label":"Pittsburgh, PA (metro)"},{"value":"M38940","label":"Port St. Lucie, FL (metro)"},{"value":"M38860","label":"Portland-South Portland, ME (metro)"},{"value":"M38900","label":"Portland-Vancouver-Hillsboro, OR-WA (metro)"},{"value":"M39300","label":"Providence-Warwick, RI-MA (metro)"},{"value":"M39340","label":"Provo-Orem-Lehi, UT (metro)"},{"value":"M39580","label":"Raleigh-Cary, NC (metro)"},{"value":"M39900","label":"Reno, NV (metro)"},{"value":"M40060","label":"Richmond, VA (metro)"},{"value":"M40140","label":"Riverside-San Bernardino-Ontario, CA (metro)"},{"value":"M40380","label":"Rochester, NY (metro)"},{"value":"M40900","label":"Sacramento-Roseville-Folsom, CA (metro)"},{"value":"M41420","label":"Salem, OR (metro)"},{"value":"M41620","label":"Salt Lake City-Murray, UT (metro)"},{"value":"M41700","label":"San Antonio-New Braunfels, TX (metro)"},{"value":"M41740","label":"San Diego-Chula Vista-Carlsbad, CA (metro)"},{"value":"M41860","label":"San Francisco-Oakland-Berkeley, CA (metro)"},{"value":"M41940","label":"San Jose-Sunnyvale-Santa Clara, CA (metro)"},{"value":"M42220","label":"Santa Rosa-Petaluma, CA (metro)"},{"value":"M42340","label":"Savannah, GA (metro)"},{"value":"M42540","label":"Scranton--Wilkes-Barre, PA (metro)"},{"value":"M42660","label":"Seattle-Tacoma-Bellevue, WA (metro)"},{"value":"M43340","label":"Shreveport-Bossier City, LA (metro)"},{"value":"M43620","label":"Sioux Falls, SD (metro)"},{"value":"M44060","label":"Spokane-Spokane Valley, WA (metro)"},{"value":"M41180","label":"St. Louis, MO-IL (metro)"},{"value":"M44700","label":"Stockton, CA (metro)"},{"value":"M45060","label":"Syracuse, NY (metro)"},{"value":"M45300","label":"Tampa-St. Petersburg-Clearwater, FL (metro)"},{"value":"M45780","label":"Toledo, OH (metro)"},{"value":"M45940","label":"Trenton-Princeton, NJ (metro)"},{"value":"M46060","label":"Tucson, AZ (metro)"},{"value":"M46140","label":"Tulsa, OK (metro)"},{"value":"M46520","label":"Urban Honolulu, HI (metro)"},{"value":"M47260","label":"Virginia Beach-Norfolk-Newport News, VA-NC (metro)"},{"value":"M47900","label":"Washington-Arlington-Alexandria, DC-VA-MD-WV (metro)"},{"value":"M48620","label":"Wichita, KS (metro)"},{"value":"M49180","label":"Winston-Salem, NC (metro)"},{"value":"M49340","label":"Worcester, MA-CT (metro)"},{"value":"M49660","label":"Youngstown-Warren, OH (metro)"}],"help":"Labor costs vary by state and metro area (a metro area replaces the state figure); material costs are assumed nationwide."}]},"logic_script":"var UNIT_ONE = {\"sq_ft\":\"sq ft\",\"square\":\"roofing square (100 sq ft)\",\"each\":\"unit\",\"linear_ft\":\"linear ft\",\"hour\":\"hour\",\"project\":\"project\"};\nvar UNIT_MANY = {\"sq_ft\":\"sq ft\",\"square\":\"roofing squares\",\"each\":\"units\",\"linear_ft\":\"linear ft\",\"hour\":\"hours\",\"project\":\"projects\"};\nfunction selOpt(mod, value) {\n  for (var i = 0; i < mod.options.length; i++) { if (mod.options[i].value === value) return mod.options[i]; }\n  for (var i = 0; i < mod.options.length; i++) { if (mod.options[i].value === mod.default) return mod.options[i]; }\n  return null;\n}\nfunction applyMods(itemId, qty, steps) {\n  var matProd = 1, laborProd = 1, addM = [0, 0, 0], addL = [0, 0, 0];\n  var mods = data.modifiers || [];\n  for (var i = 0; i < mods.length; i++) {\n    var m = mods[i];\n    if (m.kind === 'qty_tier' && m.applies_to.indexOf(itemId) !== -1) {\n      var tier = null;\n      for (var ti = 0; ti < m.tiers.length; ti++) { if (qty >= m.tiers[ti].min_qty && (!tier || m.tiers[ti].min_qty > tier.min_qty)) tier = m.tiers[ti]; }\n      if (tier) {\n        var tl = tier.labor_mult !== undefined ? tier.labor_mult : 1;\n        var tm = tier.material_mult !== undefined ? tier.material_mult : 1;\n        laborProd *= tl; matProd *= tm;\n        var tparts = [];\n        if (tl !== 1) tparts.push('labor x' + tl);\n        if (tm !== 1) tparts.push('materials x' + tm);\n        steps.push(m.label + ': ' + tier.min_qty + ' or more qualifies (' + tparts.join(', ') + ')' + (tier.basis === 'reasoned' ? ' (estimate adjustment' + (tier.rationale ? ': ' + tier.rationale : '') + ')' : '') + '.');\n      }\n      continue;\n    }\n    if (m.kind !== 'select' || m.applies_to.indexOf(itemId) === -1) continue;\n    var val = inputs[m.id]; if (val === undefined || val === null || val === '') val = m.default;\n    var opt = selOpt(m, val);\n    if (!opt) continue;\n    var lm = opt.labor_mult !== undefined ? opt.labor_mult : 1;\n    var mm = opt.material_mult !== undefined ? opt.material_mult : 1;\n    laborProd *= lm; matProd *= mm;\n    if (opt.add) {\n      var per = opt.add.per === 'qty' ? qty : 1;\n      var lsA = opt.add.labor_share;\n      addM[0] += opt.add.low * (1 - lsA) * per; addM[1] += opt.add.mid * (1 - lsA) * per; addM[2] += opt.add.high * (1 - lsA) * per;\n      addL[0] += opt.add.low * lsA * per; addL[1] += opt.add.mid * lsA * per; addL[2] += opt.add.high * lsA * per;\n    }\n    if (opt.value !== m.default) {\n      steps.push(m.label + ': ' + opt.label + (opt.basis === 'reasoned' ? ' (estimate adjustment' + (opt.rationale ? ': ' + opt.rationale : '') + ')' : '') + '.');\n    }\n  }\n  return { matProd: matProd, laborProd: laborProd, addM: addM, addL: addL };\n}\n// Un paso de cantidad/info: acc <op> (by x scale). \"by\" numerico o id de un valor de \"vals\".\nfunction stepApply(acc, st, vals) {\n  var by = typeof st.by === 'number' ? st.by : vals[st.by];\n  if (st.scale !== undefined) by = by * st.scale;\n  if (st.op === 'mul') return acc * by;\n  if (st.op === 'div') return acc / by;\n  if (st.op === 'add') return acc + by;\n  return acc - by;\n}\n// Entrada compartida (data.shared_inputs) por id.\nfunction sharedById(id) {\n  var list = data.shared_inputs || [];\n  for (var i = 0; i < list.length; i++) { if (list[i].id === id) return list[i]; }\n  return null;\n}\n// Devuelve { found, qty, invalidField }: found=false = itemId no tiene DerivedQty (usar la\n// cantidad manual de siempre); found=true, qty=null = SI tiene, pero el resultado no es un numero\n// utilizable (entradas extremas -> overflow a Infinity, o <= 0): antes se dejaba pasar y\n// aparecia 'Infinity'/el guion largo en steps/footprint (el fuzzing de validateToolLogic lo\n// detecta como salida invalida sin marcar el campo culpable, CA bloqueante).\nfunction derivedFor(itemId, steps) {\n  var mods = data.modifiers || [];\n  for (var i = 0; i < mods.length; i++) {\n    var m = mods[i];\n    if (m.kind !== 'derived' || m.item !== itemId) continue;\n    var vals = {};\n    // Entradas: primero las compartidas (campo shared__<id>, una sola vez en la UI), luego las propias.\n    var specs = [];\n    var sh = m.shared || [];\n    for (var q = 0; q < sh.length; q++) { var si = sharedById(sh[q]); specs.push({ id: sh[q], field: 'shared__' + sh[q], def: si ? si.default : 1 }); }\n    for (var j = 0; j < m.inputs.length; j++) { specs.push({ id: m.inputs[j].id, field: m.id + '__' + m.inputs[j].id, def: m.inputs[j].default }); }\n    for (var j = 0; j < specs.length; j++) {\n      var raw = inputs[specs[j].field];\n      // Campo ausente (p. ej. un test_case que no lo nombra): valor por defecto. Presente pero no\n      // numérico o ≤ 0 (\"abc\", vacío): se señala en su campo; antes se sustituía en silencio por el\n      // valor por defecto y el usuario no veía el error (smoke-test de painting, 29/09).\n      if (raw === undefined || raw === null) { vals[specs[j].id] = specs[j].def; continue; }\n      var v = lib.numEn(raw);\n      if (!isFinite(v) || v <= 0) return { found: true, qty: null, invalidField: specs[j].field };\n      vals[specs[j].id] = v;\n    }\n    var acc = vals[specs[0].id];\n    for (var k = 0; k < m.steps.length; k++) acc = stepApply(acc, m.steps[k], vals);\n    if (m.round === 'ceil') acc = Math.ceil(acc);\n    if (!isFinite(acc) || acc <= 0) return { found: true, qty: null, invalidField: specs[0].field };\n    steps.push(m.label + ': ' + lib.round(acc, 2) + ' ' + m.unit + '.');\n    return { found: true, qty: acc, invalidField: null };\n  }\n  return { found: false, qty: null, invalidField: null };\n}\n// Salidas informativas (modifiers kind 'info') de la partida: parten de su cantidad final y no\n// cambian el coste. \"by\" numerico, id de un select con valores numericos o input (propio o\n// compartido) de su DerivedQty. Devuelve una lista { label, unit, value }.\nfunction infoValuesFor(itemId, qty) {\n  var out = [];\n  var mods = data.modifiers || [];\n  for (var i = 0; i < mods.length; i++) {\n    var m = mods[i];\n    if (m.kind !== 'info' || m.item !== itemId) continue;\n    var vals = {};\n    for (var j = 0; j < mods.length; j++) {\n      var d = mods[j];\n      if (d.kind === 'select') { var sv = inputs[d.id]; vals[d.id] = Number((sv === undefined || sv === null || sv === '') ? d.default : sv); }\n      else if (d.kind === 'derived' && d.item === itemId) {\n        var dsh = d.shared || [];\n        for (var k = 0; k < dsh.length; k++) {\n          var sv2 = inputs['shared__' + dsh[k]]; var sdef = sharedById(dsh[k]);\n          vals[dsh[k]] = (sv2 === undefined || sv2 === null) ? (sdef ? sdef.default : 1) : lib.numEn(sv2);\n        }\n        for (var k = 0; k < d.inputs.length; k++) {\n          var iv = inputs[d.id + '__' + d.inputs[k].id];\n          vals[d.inputs[k].id] = (iv === undefined || iv === null) ? d.inputs[k].default : lib.numEn(iv);\n        }\n      }\n    }\n    var acc = qty;\n    for (var s = 0; s < m.steps.length; s++) acc = stepApply(acc, m.steps[s], vals);\n    if (m.round === 'ceil') acc = Math.ceil(acc);\n    if (!isFinite(acc)) continue;\n    out.push({ label: m.label, unit: m.unit, value: acc });\n  }\n  return out;\n}\nfunction infoRowsFor(itemId, qty, result, steps) {\n  var rows = infoValuesFor(itemId, qty);\n  for (var r = 0; r < rows.length; r++) {\n    result[rows[r].label] = lib.round(rows[r].value, 2) + ' ' + rows[r].unit;\n    steps.push(rows[r].label + ': ' + lib.round(rows[r].value, 2) + ' ' + rows[r].unit + '.');\n  }\n}\n// Cobro minimo (data.minimum_charge): low/mid/high nunca bajan de esas cifras (no aplica si todo es\n// DIY). Lo que se sube se cuenta como mano de obra para que Materials + Labor cuadre con el total.\nfunction applyMin(t, allDiy, steps) {\n  var mc = data.minimum_charge;\n  if (!mc || allDiy) return t;\n  var low = Math.max(t.low, mc.low), mid = Math.max(t.mid, mc.mid), high = Math.max(t.high, mc.high);\n  if (mid !== t.mid) {\n    steps.push('Minimum charge: most contractors bill at least ' + lib.usd(mc.mid) + ' for a job like this, so the typical cost is raised from ' + lib.usd(t.mid) + ' to ' + lib.usd(mid) + '.');\n  } else if (low !== t.low || high !== t.high) {\n    steps.push('Minimum charge: the low and high estimates are raised to ' + lib.usd(low) + ' and ' + lib.usd(high) + '.');\n  }\n  return { low: low, mid: mid, high: high, matMid: t.matMid, labMid: t.labMid + (mid - t.mid), savedLabor: t.savedLabor };\n}\nfunction ratioFor(state) {\n  var ratio = 1, place = 'the U.S. (national average)';\n  if (table && table.rows) { for (var r = 0; r < table.rows.length; r++) { if (table.rows[r][0] === state) { ratio = Number(table.rows[r][2]); if (state !== 'US') place = String(table.rows[r][1]); break; } } }\n  if (!isFinite(ratio) || ratio <= 0) ratio = 1;\n  return { ratio: ratio, place: place };\n}\nfunction computeItem(item, qty, qMult, ratio, diyAllowed, diy, steps) {\n  var mods = applyMods(item.id, qty, steps);\n  var ls = item.labor_share;\n  var baseLow = qty * item.low * qMult, baseMid = qty * item.mid * qMult, baseHigh = qty * item.high * qMult;\n  var matLow = baseLow * (1 - ls) * mods.matProd + mods.addM[0];\n  var matMid = baseMid * (1 - ls) * mods.matProd + mods.addM[1];\n  var matHigh = baseHigh * (1 - ls) * mods.matProd + mods.addM[2];\n  var labLow = baseLow * ls * mods.laborProd * ratio + mods.addL[0] * ratio;\n  var labMid = baseMid * ls * mods.laborProd * ratio + mods.addL[1] * ratio;\n  var labHigh = baseHigh * ls * mods.laborProd * ratio + mods.addL[2] * ratio;\n  var doDiy = diyAllowed && diy;\n  return {\n    low: doDiy ? matLow : matLow + labLow, mid: doDiy ? matMid : matMid + labMid, high: doDiy ? matHigh : matHigh + labHigh,\n    matMid: matMid, labMid: doDiy ? 0 : labMid, savedLabor: labMid\n  };\n}\nif (!data.items.length) return { result: 'No tasks available.', footprint: 'No cost data available.', invalid: 'task__' };\nvar rf = ratioFor(inputs.state);\nvar ratio = rf.ratio, place = rf.place;\nvar totalLow = 0, totalMid = 0, totalHigh = 0, totalMat = 0, totalLab = 0, totalSaved = 0;\nvar anySelected = false, anyDiy = false, anyPro = false;\nvar infoTotals = {}, infoOrder = [];\nvar steps = [];\nfor (var idx = 0; idx < data.items.length; idx++) {\n  var it = data.items[idx];\n  var task = inputs['task__' + it.id];\n  if (!task || task === 'skip') continue;\n  anySelected = true;\n  var derivedSteps = [];\n  var derived = derivedFor(it.id, derivedSteps);\n  var qty;\n  if (derived.found) {\n    if (derived.qty === null) return { result: 'Enter valid measurements greater than 0 for ' + it.label + '.', footprint: 'Waiting for valid measurements.', invalid: derived.invalidField };\n    qty = derived.qty;\n  } else {\n    qty = lib.numEn(inputs['quantity__' + it.id]);\n    if (!isFinite(qty) || qty <= 0) return { result: 'Enter a project size greater than 0 for ' + it.label + '.', footprint: 'Waiting for a valid project size.', invalid: 'quantity__' + it.id };\n  }\n  var itemDiyOk = it.diy_allowed !== false;\n  var diy = itemDiyOk && task === 'diy';\n  if (diy) anyDiy = true; else anyPro = true;\n  var modSteps = [];\n  var comp = computeItem(it, qty, 1, ratio, itemDiyOk, diy, modSteps);\n  totalLow += comp.low; totalMid += comp.mid; totalHigh += comp.high; totalMat += comp.matMid; totalLab += comp.labMid; if (diy) totalSaved += comp.savedLabor; // solo lo que de verdad haces tú (antes sumaba también la mano de obra de las tareas en pro)\n  var unitQty = qty === 1 ? (UNIT_ONE[it.unit] || it.unit) : (UNIT_MANY[it.unit] || it.unit);\n  steps = steps.concat(derivedSteps);\n  var unitOneS = UNIT_ONE[it.unit] || it.unit;\n  var unitPrice = it.mid < 100 ? 2 : 0;\n  steps.push(it.label + ': national typical price ' + lib.usd(it.mid, unitPrice) + ' per ' + unitOneS + ' (range ' + lib.usd(it.low, unitPrice) + ' to ' + lib.usd(it.high, unitPrice) + ').');\n  steps.push(it.label + ' (' + (diy ? 'DIY, materials only' : 'pro') + '): ' + qty + ' ' + unitQty + ' x ' + lib.usd(it.mid, unitPrice) + ' = ' + lib.usd(qty * it.mid) + ' before adjustments.');\n  steps = steps.concat(modSteps);\n  steps.push(it.label + ' (' + (diy ? 'DIY' : 'pro') + ') after ' + (diy ? 'materials adjustments' : 'the regional labor factor and adjustments') + ': ' + lib.usd(comp.mid) + ' (range ' + lib.usd(comp.low) + ' to ' + lib.usd(comp.high) + ').');\n  // Salidas informativas: las de igual etiqueta de todas las tareas activas se suman.\n  var taskInfo = infoValuesFor(it.id, qty);\n  for (var ii = 0; ii < taskInfo.length; ii++) {\n    var infoKey = taskInfo[ii].label;\n    if (!infoTotals[infoKey]) { infoTotals[infoKey] = { unit: taskInfo[ii].unit, value: 0 }; infoOrder.push(infoKey); }\n    infoTotals[infoKey].value += taskInfo[ii].value;\n  }\n}\nif (!anySelected) return { result: 'Select at least one task.', footprint: 'Waiting for at least one task.', invalid: 'task__' + data.items[0].id };\nvar minSteps = [];\nvar grand = applyMin({ low: totalLow, mid: totalMid, high: totalHigh, matMid: totalMat, labMid: totalLab, savedLabor: totalSaved }, !anyPro, minSteps);\ntotalLow = grand.low; totalMid = grand.mid; totalHigh = grand.high; totalLab = grand.labMid;\nvar result = {\n  'Typical cost': lib.usd(totalMid),\n  'Low estimate': lib.usd(totalLow),\n  'High estimate': lib.usd(totalHigh),\n  'Materials': lib.usd(totalMat),\n  'Labor': lib.usd(totalLab)\n};\nif (anyDiy) result['DIY labor savings'] = lib.usd(totalSaved);\nfor (var io = 0; io < infoOrder.length; io++) {\n  var infoRow = infoTotals[infoOrder[io]];\n  result[infoOrder[io]] = lib.round(infoRow.value, 2) + ' ' + infoRow.unit;\n  steps.push('Total for all selected tasks, ' + infoOrder[io] + ': ' + lib.round(infoRow.value, 2) + ' ' + infoRow.unit + '.');\n}\nsteps = steps.concat(minSteps);\nif (inputs.state && inputs.state !== 'US') {\n  steps.push('Labor wages in ' + place + ' are adjusted with the BLS regional factor for this trade.');\n}\nsteps.push('Total for all selected tasks: ' + lib.usd(totalMid) + ' (range ' + lib.usd(totalLow) + ' to ' + lib.usd(totalHigh) + ').');\nvar footprint = 'Selected tasks in ' + place + ': typical cost ' + lib.usd(totalMid) + '.';\nreturn { result: result, footprint: footprint, steps: steps };","reference_table":{"caption":"Regional labor cost adjustment (state or metro area wage vs. the national average, BLS OEWS)","headers":["Location","Name","Labor cost factor"],"rows":[["US","National average",1],["AL","Alabama",0.7286],["AK","Alaska",1.1392],["AZ","Arizona",0.9208],["AR","Arkansas",0.7544],["CA","California",1.2468],["CO","Colorado",0.9577],["CT","Connecticut",1.1388],["DE","Delaware",0.9229],["FL","Florida",0.8562],["GA","Georgia",0.7982],["HI","Hawaii",1.3746],["ID","Idaho",0.9347],["IL","Illinois",1.2996],["IN","Indiana",1.039],["IA","Iowa",0.9914],["KS","Kansas",0.876],["KY","Kentucky",0.881],["LA","Louisiana",0.812],["ME","Maine",0.9187],["MD","Maryland",0.9289],["MA","Massachusetts",1.3613],["MI","Michigan",1.0211],["MN","Minnesota",1.2443],["MS","Mississippi",0.7747],["MO","Missouri",1.1695],["MT","Montana",0.9914],["NE","Nebraska",0.9293],["NV","Nevada",1.0384],["NH","New Hampshire",0.9942],["NJ","New Jersey",1.3531],["NM","New Mexico",0.7967],["NY","New York",1.1951],["NC","North Carolina",0.8697],["ND","North Dakota",1.0215],["OH","Ohio",1.1205],["OK","Oklahoma",0.8324],["OR","Oregon",1.0707],["PA","Pennsylvania",1.0442],["RI","Rhode Island",1.1874],["SC","South Carolina",0.8739],["SD","South Dakota",0.8516],["TN","Tennessee",0.8835],["TX","Texas",0.8247],["UT","Utah",0.9304],["VT","Vermont",0.9802],["VA","Virginia",0.8393],["WA","Washington",1.1786],["WV","West Virginia",0.8755],["WI","Wisconsin",1.114],["WY","Wyoming",0.873],["DC","District of Columbia",1.0037],["M10420","Akron, OH",1.1584],["M10580","Albany-Schenectady-Troy, NY",1.1609],["M10740","Albuquerque, NM",0.8149],["M10900","Allentown-Bethlehem-Easton, PA-NJ",1.0548],["M11260","Anchorage, AK",1.1491],["M12060","Atlanta-Sandy Springs-Alpharetta, GA",0.8293],["M12260","Augusta-Richmond County, GA-SC",0.8211],["M12420","Austin-Round Rock-San Marcos, TX",0.8526],["M12540","Bakersfield-Delano, CA",1.1707],["M12580","Baltimore-Columbia-Towson, MD",0.9156],["M12940","Baton Rouge, LA",0.8186],["M13820","Birmingham-Hoover, AL",0.7769],["M14260","Boise City, ID",0.9402],["M14460","Boston-Cambridge-Newton, MA-NH",1.3713],["M14860","Bridgeport-Stamford-Norwalk, CT",1.1616],["M15380","Buffalo-Cheektowaga, NY",1.1142],["M15980","Cape Coral-Fort Myers, FL",0.8505],["M16700","Charleston-North Charleston, SC",0.8891],["M16740","Charlotte-Concord-Gastonia, NC-SC",0.887],["M16860","Chattanooga, TN-GA",0.8543],["M16980","Chicago-Naperville-Elgin, IL-IN-WI",1.3296],["M17140","Cincinnati, OH-KY-IN",1.1117],["M17410","Cleveland, OH",1.113],["M17820","Colorado Springs, CO",0.9183],["M17900","Columbia, SC",0.8632],["M18140","Columbus, OH",1.1995],["M18580","Corpus Christi, TX",0.8422],["M19100","Dallas-Fort Worth-Arlington, TX",0.8414],["M19660","Deltona-Daytona Beach-Ormond Beach, FL",0.8495],["M19740","Denver-Aurora-Lakewood, CO",0.9791],["M19780","Des Moines-West Des Moines, IA",1.0379],["M19820","Detroit-Warren-Dearborn, MI",1.0755],["M20500","Durham-Chapel Hill, NC",0.912],["M21340","El Paso, TX",0.7142],["M22020","Fargo, ND-MN",1.0702],["M22180","Fayetteville, NC",0.8526],["M23060","Fort Wayne, IN",0.9775],["M23420","Fresno, CA",1.1539],["M24340","Grand Rapids-Wyoming-Kentwood, MI",0.99],["M24660","Greensboro-High Point, NC",0.8324],["M24860","Greenville-Anderson-Greer, SC",0.8835],["M25060","Gulfport-Biloxi, MS",0.7999],["M25420","Harrisburg-Carlisle, PA",1.0106],["M25540","Hartford-West Hartford-East Hartford, CT",1.1317],["M26420","Houston-The Woodlands-Sugar Land, TX",0.8428],["M26620","Huntsville, AL",0.7259],["M26900","Indianapolis-Carmel-Anderson, IN",1.0459],["M27140","Jackson, MS",0.7778],["M27260","Jacksonville, FL",0.8416],["M28140","Kansas City, MO-KS",1.0851],["M28940","Knoxville, TN",0.9266],["M29460","Lakeland-Winter Haven, FL",0.8091],["M29540","Lancaster, PA",0.9912],["M29620","Lansing-East Lansing, MI",1.0513],["M29740","Las Cruces, NM",0.7943],["M29820","Las Vegas-Henderson-Paradise, NV",1.0204],["M30460","Lexington-Fayette, KY",0.8912],["M30780","Little Rock-North Little Rock-Conway, AR",0.7453],["M31080","Los Angeles-Long Beach-Anaheim, CA",1.2151],["M31140","Louisville/Jefferson County, KY-IN",0.9562],["M31540","Madison, WI",1.1232],["M31700","Manchester-Nashua, NH",0.9523],["M32580","McAllen-Edinburg-Mission, TX",0.6642],["M32820","Memphis, TN-MS-AR",0.9074],["M33100","Miami-Fort Lauderdale-West Palm Beach, FL",0.8864],["M33340","Milwaukee-Waukesha, WI",1.1457],["M33460","Minneapolis-St. Paul-Bloomington, MN-WI",1.3031],["M33660","Mobile, AL",0.7192],["M33700","Modesto, CA",1.2043],["M34980","Nashville-Davidson-Murfreesboro-Franklin, TN",0.8976],["M35300","New Haven, CT",1.1536],["M35380","New Orleans-Metairie, LA",0.8422],["M35620","New York-Newark-Jersey City, NY-NJ-PA",1.2962],["M35840","North Port-Bradenton-Sarasota, FL",0.8845],["M36100","Ocala, FL",0.7849],["M36420","Oklahoma City, OK",0.8345],["M36540","Omaha, NE-IA",0.9527],["M36740","Orlando-Kissimmee-Sanford, FL",0.8289],["M37100","Oxnard-Thousand Oaks-Ventura, CA",1.2285],["M37340","Palm Bay-Melbourne-Titusville, FL",0.8676],["M37860","Pensacola-Ferry Pass-Brent, FL",0.8228],["M37980","Philadelphia-Camden-Wilmington, PA-NJ-DE-MD",1.1328],["M38060","Phoenix-Mesa-Chandler, AZ",0.9354],["M38300","Pittsburgh, PA",1.0432],["M38940","Port St. Lucie, FL",0.8524],["M38860","Portland-South Portland, ME",0.9596],["M38900","Portland-Vancouver-Hillsboro, OR-WA",1.1163],["M39300","Providence-Warwick, RI-MA",1.2093],["M39340","Provo-Orem-Lehi, UT",0.8922],["M39580","Raleigh-Cary, NC",0.8935],["M39900","Reno, NV",1.0915],["M40060","Richmond, VA",0.8259],["M40140","Riverside-San Bernardino-Ontario, CA",1.2604],["M40380","Rochester, NY",1.0661],["M40900","Sacramento-Roseville-Folsom, CA",1.2314],["M41420","Salem, OR",1.0744],["M41620","Salt Lake City-Murray, UT",0.9641],["M41700","San Antonio-New Braunfels, TX",0.8049],["M41740","San Diego-Chula Vista-Carlsbad, CA",1.1626],["M41860","San Francisco-Oakland-Berkeley, CA",1.4153],["M41940","San Jose-Sunnyvale-Santa Clara, CA",1.3411],["M42220","Santa Rosa-Petaluma, CA",1.2608],["M42340","Savannah, GA",0.7603],["M42540","Scranton--Wilkes-Barre, PA",1.0127],["M42660","Seattle-Tacoma-Bellevue, WA",1.2491],["M43340","Shreveport-Bossier City, LA",0.8168],["M43620","Sioux Falls, SD",0.8728],["M44060","Spokane-Spokane Valley, WA",1.0773],["M41180","St. Louis, MO-IL",1.2818],["M44700","Stockton, CA",1.1891],["M45060","Syracuse, NY",1.1086],["M45300","Tampa-St. Petersburg-Clearwater, FL",0.8557],["M45780","Toledo, OH",1.0992],["M45940","Trenton-Princeton, NJ",1.405],["M46060","Tucson, AZ",0.8683],["M46140","Tulsa, OK",0.8687],["M46520","Urban Honolulu, HI",1.3477],["M47260","Virginia Beach-Norfolk-Newport News, VA-NC",0.7855],["M47900","Washington-Arlington-Alexandria, DC-VA-MD-WV",0.9546],["M48620","Wichita, KS",0.8278],["M49180","Winston-Salem, NC",0.8539],["M49340","Worcester, MA-CT",1.3267],["M49660","Youngstown-Warren, OH",1.0333]]},"cost_data":{"trade":"foundation","version":"v1","country":"us","currency":"USD","retrieved_at":"2026-09-30","labor_soc":"47-2061","diy_allowed":true,"mode":"sum","items":[{"id":"engineer_report","label":"Structural engineer inspection and report","unit":"project","low":300,"mid":500,"high":1000,"labor_share":1,"diy_allowed":false,"default_task":"pro","default_qty":1,"sources":[{"label":"Bob Vila - Foundation Repair Cost","url":"https://www.bobvila.com/articles/foundation-repair-cost/","quote":"A structural engineer report can cost between $300 and $1,000.","retrieved_at":"2026-09-30","low":300,"high":1000},{"label":"Inch Calculator - Foundation Repair Cost Guide","url":"https://www.inchcalculator.com/foundation-repair-cost-guide/","quote":"it might cost $200 – $400 extra to get the opinion of a structural engineer","retrieved_at":"2026-09-30","low":200,"high":400},{"label":"Murray Inspection Services - Foundation Inspection Cost","url":"https://www.murrayinspectionservices.com/post/foundation-inspection-cost-in-the-usa","quote":"Their rates typically fall between $300 and $1,000","retrieved_at":"2026-10-03","low":300,"high":1000}]},{"id":"crack_repair","label":"Foundation crack repair (epoxy or polyurethane injection, per crack)","unit":"each","low":250,"mid":500,"high":800,"labor_share":0.75,"default_task":"pro","default_qty":2,"qty_label":"Number of cracks","unit_name":"crack","sources":[{"label":"Bob Vila - Foundation Repair Cost","url":"https://www.bobvila.com/articles/foundation-repair-cost/","quote":"Foundation crack repair costs between $250 and $800 per crack.","retrieved_at":"2026-09-30","low":250,"high":800},{"label":"This Old House - Foundation Repair Cost","url":"https://www.thisoldhouse.com/foundations/foundation-repair-cost","quote":"A hairline crack caught early might cost $200–$800 to repair","retrieved_at":"2026-09-30","low":200,"high":800},{"label":"Ark Basement Services - Foundation Repair Cost","url":"https://www.arkbasementservices.com/how-much-does-foundation-repair-cost/","quote":"Foundation crack repair costs between $250 and $800.","retrieved_at":"2026-10-03","low":250,"high":800},{"label":"Basement Moisture - Foundation Crack Repair Cost","url":"https://basementmoisture.com/blog/foundation-crack-repair-cost/","quote":"Epoxy injection for a stable hairline crack runs $250–$800.","retrieved_at":"2026-10-03","low":250,"high":800}]},{"id":"piers","label":"Foundation piers / underpinning (per pier)","unit":"each","low":1000,"mid":2000,"high":3000,"labor_share":0.55,"diy_allowed":false,"default_task":"pro","default_qty":2,"qty_label":"Number of piers","unit_name":"pier","sources":[{"label":"This Old House - Foundation Repair Cost","url":"https://www.thisoldhouse.com/foundations/foundation-repair-cost","quote":"$1,000–$3,000 per pier","retrieved_at":"2026-09-30","low":1000,"high":3000},{"label":"Bob Vila - Foundation Repair Cost","url":"https://www.bobvila.com/articles/foundation-repair-cost/","quote":"$1,000 to $3,000 per pier","retrieved_at":"2026-09-30","low":1000,"high":3000},{"label":"Ram Jack - Foundation Repair Costs","url":"https://www.ramjack.com/why-ram-jack-/foundation-repair-cost/","quote":"$1,500 - $3,000 per pier","retrieved_at":"2026-09-30","low":1500,"high":3000}]},{"id":"bowing_wall","label":"Bowing basement wall stabilization (per linear ft of wall)","unit":"linear_ft","low":75,"mid":180,"high":400,"labor_share":0.55,"diy_allowed":false,"default_task":"skip","default_qty":20,"qty_label":"Length of the bowing wall","sources":[{"label":"Today's Homeowner - Bowing Basement Wall Repair Cost","url":"https://todayshomeowner.com/foundation/cost/bowing-basement-wall-repair-cost/","quote":"The average cost to repair bowing basement walls is between $75 and $400 per linear foot","retrieved_at":"2026-09-30","low":75,"high":400},{"label":"This Old House - Foundation Repair Cost","url":"https://www.thisoldhouse.com/foundations/foundation-repair-cost","quote":"$4,000–$12,000 (for 12 strips)","retrieved_at":"2026-09-30"},{"label":"The Basement Ace - Bowing Basement Wall Repair Cost","url":"https://www.thebasementace.com/understanding-bowing-basement-wall-repair-cost-your-comprehensive-guide","quote":"These straps, which cost between $85 to $275 per foot","retrieved_at":"2026-10-05","low":85,"high":275}]},{"id":"crawl_jacks","label":"Crawl space support jacks (per jack)","unit":"each","low":500,"mid":650,"high":1000,"labor_share":0.6,"diy_allowed":false,"default_task":"skip","default_qty":4,"qty_label":"Number of support jacks","unit_name":"jack","sources":[{"label":"APS Foundation Repair - Crawl Space Repair Cost Guide","url":"https://apsfoundationrepair.com/crawl-space-repair/crawl-space-repair-cost-guide/","quote":"$500 – $1,000 per jack","retrieved_at":"2026-09-30","low":500,"high":1000},{"label":"Acculevel - Cost to Repair Sagging Floors","url":"https://acculevel.com/costs-sagging-floors/","quote":"Steel jack installations cost between $515-630.","retrieved_at":"2026-09-30","low":515,"high":630}]},{"id":"mudjacking","label":"Slab leveling by mudjacking (per sq ft)","unit":"sq_ft","low":3,"mid":5.5,"high":8,"labor_share":0.7,"diy_allowed":false,"default_task":"skip","default_qty":100,"qty_label":"Slab area to lift","sources":[{"label":"Inch Calculator - Foundation Repair Cost Guide","url":"https://www.inchcalculator.com/foundation-repair-cost-guide/","quote":"Mudjacking will cost about $3 to $8 per square foot on average.","retrieved_at":"2026-09-30","low":3,"high":8},{"label":"A-1 Concrete Leveling - Mudjacking Cost","url":"https://www.a1concrete.com/concrete-repair-learning-center/mudjacking-cost","quote":"Mudjacking costs between $3 and $8 per square foot on average","retrieved_at":"2026-09-30","low":3,"high":8}]},{"id":"polyjacking","label":"Slab leveling by polyurethane foam (polyjacking, per sq ft)","unit":"sq_ft","low":5,"mid":15,"high":25,"labor_share":0.5,"diy_allowed":false,"default_task":"skip","default_qty":100,"qty_label":"Slab area to lift","sources":[{"label":"Inch Calculator - Concrete Slab Leveling Cost","url":"https://www.inchcalculator.com/concrete-slab-leveling-cost-guide/","quote":"Foam jacking costs about $25 per square foot","retrieved_at":"2026-09-30","low":25,"high":25},{"label":"A-1 Concrete Leveling - Foam Concrete Lifting Costs","url":"https://www.a1concrete.com/concrete-repair-learning-center/foam-concrete-lifting-costs-everything-you-need-know-about-polyjacking-costs","quote":"Foam concrete lifting costs $5 to $25 per square foot","retrieved_at":"2026-09-30","low":5,"high":25}]},{"id":"drainage","label":"Exterior foundation drainage (per linear ft)","unit":"linear_ft","low":50,"mid":100,"high":300,"labor_share":0.6,"diy_allowed":false,"default_task":"skip","default_qty":50,"qty_label":"Length of drain","sources":[{"label":"Basement Waterproofing Fairfax - Basement Waterproofing Costs","url":"https://basementwaterproofingfairfax.com/blog/basement-waterproofing-costs/","quote":"Installing a perforated pipe or French drain along the basement perimeter averages $50 to $70 per linear foot","retrieved_at":"2026-10-05","low":50,"high":70},{"label":"Allbright Painting - Exterior Basement Waterproofing Cost","url":"https://www.allbrightpainting.com/blog/2025/december/exterior-basement-waterproofing-cost-a-price-gui/","quote":"prices ranging from $100 to $300 per linear foot for a professionally installed exterior drainage system","retrieved_at":"2026-10-05","low":100,"high":300},{"label":"Inch Calculator - Foundation Repair Cost Guide","url":"https://www.inchcalculator.com/foundation-repair-cost-guide/","quote":"This installation could cost $2,000 – $5,000","retrieved_at":"2026-09-30","low":2000,"high":5000},{"label":"This Old House - Foundation Repair Cost","url":"https://www.thisoldhouse.com/foundations/foundation-repair-cost","quote":"$2,300–$7,300","retrieved_at":"2026-09-30","low":2300,"high":7300}]},{"id":"house_lifting","label":"Full foundation lifting and leveling","unit":"project","low":10000,"mid":22000,"high":50000,"labor_share":0.7,"diy_allowed":false,"default_task":"skip","default_qty":1,"sources":[{"label":"This Old House - Foundation Repair Cost","url":"https://www.thisoldhouse.com/foundations/foundation-repair-cost","quote":"Foundation lifting is typically the most expensive type of foundation repair, with costs ranging from $20,000–$23,000","retrieved_at":"2026-09-30","low":20000,"high":23000},{"label":"Bob Vila - Foundation Repair Cost","url":"https://www.bobvila.com/articles/foundation-repair-cost/","quote":"which can range from $20,000 to $23,000","retrieved_at":"2026-09-30","low":20000,"high":23000},{"label":"Terrafirm Leveling - Cost of Lifting a House Foundation","url":"https://terrafirmleveling.com/blog/cost-of-lifting-house-foundation/","quote":"The cost for lifting the house can range from $10,000 to $50,000","retrieved_at":"2026-10-05","low":10000,"high":50000}]}],"modifiers":[{"kind":"select","id":"pier_type","label":"Pier type","applies_to":["piers"],"default":"steel_push","options":[{"value":"steel_push","label":"Steel push piers","basis":"sourced","labor_mult":1,"material_mult":1,"sources":[{"label":"Ram Jack - Foundation Repair Costs","url":"https://www.ramjack.com/why-ram-jack-/foundation-repair-cost/","quote":"$1,500 - $3,000 per pier","retrieved_at":"2026-09-30","low":1500,"high":3000}]},{"value":"helical","label":"Helical piers","basis":"sourced_ratio","labor_mult":1.33,"material_mult":1.33,"sources":[{"label":"Ram Jack - Foundation Repair Costs","url":"https://www.ramjack.com/why-ram-jack-/foundation-repair-cost/","quote":"$2,000 - $4,000 per pier","retrieved_at":"2026-09-30","low":2000,"high":4000}]}]},{"kind":"select","id":"wall_method","label":"Wall stabilization method","applies_to":["bowing_wall"],"default":"straps","options":[{"value":"straps","label":"Carbon fiber or steel straps","basis":"sourced","labor_mult":1,"material_mult":1,"sources":[{"label":"Today's Homeowner - Bowing Basement Wall Repair Cost","url":"https://todayshomeowner.com/foundation/cost/bowing-basement-wall-repair-cost/","quote":"range from $85 to $275 per foot","retrieved_at":"2026-09-30","low":85,"high":275},{"label":"The Basement Ace - Bowing Basement Wall Repair Cost","url":"https://www.thebasementace.com/understanding-bowing-basement-wall-repair-cost-your-comprehensive-guide","quote":"These straps, which cost between $85 to $275 per foot","retrieved_at":"2026-10-05","low":85,"high":275}]},{"value":"anchors","label":"Wall anchors","basis":"sourced_ratio","labor_mult":0.64,"material_mult":0.64,"sources":[{"label":"Today's Homeowner - Bowing Basement Wall Repair Cost","url":"https://todayshomeowner.com/foundation/cost/bowing-basement-wall-repair-cost/","quote":"Wall anchors have an average price between $80 and $150 per foot","retrieved_at":"2026-09-30","low":80,"high":150}]},{"value":"straightening","label":"Wall straightening (straps plus excavation)","basis":"sourced_ratio","labor_mult":2.46,"material_mult":2.46,"sources":[{"label":"Today's Homeowner - Bowing Basement Wall Repair Cost","url":"https://todayshomeowner.com/foundation/cost/bowing-basement-wall-repair-cost/","quote":"expect the cost to be $335 to $550 per foot","retrieved_at":"2026-09-30","low":335,"high":550},{"label":"The Basement Ace - Bowing Basement Wall Repair Cost","url":"https://www.thebasementace.com/understanding-bowing-basement-wall-repair-cost-your-comprehensive-guide","quote":"wall straightening averages between $340 to $550 per f","retrieved_at":"2026-10-05","low":340,"high":550}]}]}]},"cost_data_ref":{"trade":"foundation","version":"v1"},"price_date":"2026-09","title":"Foundation Repair Cost Calculator","description":"Estimate the cost of foundation repairs, including crack injections, underpinning, wall stabilization, and slab leveling, adjusted for your local area.","seo_title":"Foundation Repair Cost Calculator: Local Estimates & Prices","seo_description":"Estimate foundation repair costs instantly. Calculate prices for crack repair, piers, mudjacking, and wall stabilization based on your local labor rates.","seo_footprint":{"text_intro":"A solid foundation is critical to the structural integrity of any home. When signs of settling, bowing walls, or cracks appear, addressing them promptly can prevent more extensive damage. This foundation repair cost calculator helps homeowners estimate the financial investment required for various stabilization and leveling methods. By selecting specific tasks—such as epoxy crack injections, installing steel push or helical piers, mudjacking, or exterior drainage—you can generate a detailed breakdown of material and labor expenses. The estimates are adjusted based on regional labor rates across the United States, providing a realistic expectation of what you might pay when hiring a professional contractor.","faq":[{"question":"Is it worth fixing the foundation of a house?","answer":"Yes, repairing foundation issues is almost always worth the investment to prevent severe structural failure and maintain the property's value. Minor issues, such as a single foundation crack repair, have a typical cost of $500. Ignoring these can lead to major structural problems requiring full foundation lifting and leveling, which carries a typical cost of $22,000 per project."},{"question":"How much does a 2000 square foot foundation slab cost?","answer":"This calculator estimates the cost of repairing an existing foundation rather than pouring a new one. If a 2,000 square foot slab has settled and needs leveling, the cost depends on the method and the exact area affected. Slab leveling by mudjacking typically costs $6 per square foot, while leveling by polyurethane foam (polyjacking) typically costs $15 per square foot."},{"question":"How to estimate foundation repair cost?","answer":"To estimate the cost, identify the specific repairs needed, count the units (such as the number of cracks or piers), and apply local labor rates. For example, foundation piers average $2,000 each, while bowing basement wall stabilization averages $180 per linear foot. A structural engineer inspection and report, which typically costs $500, is the best way to determine exactly which repairs are necessary."},{"question":"Can you live in a house while the foundation is being repaired?","answer":"In most cases, you can remain in your home during minor to moderate repairs, such as crack injections, installing crawl space support jacks (typically $650 per jack), or exterior foundation drainage ($100 per linear foot). However, for major projects like full foundation lifting and leveling, contractors may require you to temporarily relocate for safety reasons."}],"how_to_use_steps":["Select whether you need a structural engineer inspection and report.","Choose the specific repair tasks required, such as crack repair, piers, or wall stabilization.","Enter the quantity for each selected task, such as the number of cracks or linear feet of bowing wall.","Select your state or metro area to adjust the labor costs to your local market.","Review the typical cost, low estimate, high estimate, and the breakdown of materials and labor."]},"content_sections":[{"heading":"Common Foundation Repair Methods and Costs","paragraphs":["Foundation issues vary widely in severity, and the repair methods reflect this diversity. Minor settling might only cause small fissures, which can be addressed with epoxy or polyurethane injection. The typical cost for foundation crack repair is $500 per crack. If the foundation is sinking, underpinning with piers is often necessary. Installing foundation piers has a typical cost of $2,000 per pier, though specific types like helical piers can alter the total; for instance, two helical piers typically cost $5,320.","For basements experiencing lateral pressure from soil, bowing wall stabilization is required. This task averages $180 per linear foot of wall, with methods including carbon fiber straps, wall anchors, or full straightening with excavation. For example, stabilizing 20 feet of wall using wall anchors has a typical cost of $2,304. Other common repairs include installing crawl space support jacks at $650 per jack, and adding exterior foundation drainage at $100 per linear foot."]},{"heading":"Slab Leveling: Mudjacking vs. Polyjacking","paragraphs":["When a concrete slab foundation settles unevenly, contractors use leveling techniques to lift it back into place. Slab leveling by mudjacking involves pumping a cement slurry beneath the slab. This is a traditional and cost-effective method, with a typical cost of $6 per square foot of slab area lifted.","An alternative method is slab leveling by polyurethane foam, commonly known as polyjacking. This process uses a high-density expanding foam that is lighter and requires smaller injection holes than mudjacking. Because of the specialized materials, polyjacking is more expensive, with a typical cost of $15 per square foot."]},{"heading":"Worked Example: Estimating a Standard Repair Project","paragraphs":["Consider a homeowner who notices a few cracks in their foundation. They decide to hire a professional for a structural engineer inspection and report (1 project), which has a typical cost of $500. The engineer recommends repairing two foundation cracks to stabilize the section.","Using the national average for labor, the foundation crack repair for 2 units adds $1,000 to the project. The total typical cost for this project is $1,500, with a low estimate of $800 and a high estimate of $2,600. The breakdown of this total includes $250 for materials and $1,250 for labor."]},{"heading":"Professional Labor vs. DIY Repairs","paragraphs":["Foundation repair is highly specialized and structural in nature. Because of the risks involved, DIY is not allowed or recommended for tasks like installing piers, stabilizing bowing walls, mudjacking, polyjacking, or full house lifting. These tasks require heavy equipment, precise engineering, and professional labor.","The only task where a DIY approach (materials only) might be considered is minor foundation crack repair using epoxy or polyurethane injection kits. However, even for cracks, hiring a pro ensures the fissure is properly sealed against moisture and further expansion. Labor costs for professional work vary significantly by location; selecting your specific state or metro area in the calculator will adjust the labor portion of the estimate to reflect local wage data."]}],"sources":[{"label":"U.S. Bureau of Labor Statistics (BLS), Occupational Employment and Wage Statistics","url":"https://www.bls.gov/oes/"},{"label":"Bob Vila - Foundation Repair Cost","url":"https://www.bobvila.com/articles/foundation-repair-cost/"},{"label":"Inch Calculator - Foundation Repair Cost Guide","url":"https://www.inchcalculator.com/foundation-repair-cost-guide/"},{"label":"Murray Inspection Services - Foundation Inspection Cost","url":"https://www.murrayinspectionservices.com/post/foundation-inspection-cost-in-the-usa"}],"default_output":{"result":{"Typical cost":"$5,500","Low estimate":"$2,800","High estimate":"$8,600","Materials":"$2,050","Labor":"$3,450"},"footprint":"Selected tasks in the U.S. (national average): typical cost $5,500.","steps":["Structural engineer inspection and report: national typical price $500 per project (range $300 to $1,000).","Structural engineer inspection and report (pro): 1 project x $500 = $500 before adjustments.","Structural engineer inspection and report (pro) after the regional labor factor and adjustments: $500 (range $300 to $1,000).","Foundation crack repair (epoxy or polyurethane injection, per crack): national typical price $500 per unit (range $250 to $800).","Foundation crack repair (epoxy or polyurethane injection, per crack) (pro): 2 units x $500 = $1,000 before adjustments.","Foundation crack repair (epoxy or polyurethane injection, per crack) (pro) after the regional labor factor and adjustments: $1,000 (range $500 to $1,600).","Foundation piers / underpinning (per pier): national typical price $2,000 per unit (range $1,000 to $3,000).","Foundation piers / underpinning (per pier) (pro): 2 units x $2,000 = $4,000 before adjustments.","Foundation piers / underpinning (per pier) (pro) after the regional labor factor and adjustments: $4,000 (range $2,000 to $6,000).","Total for all selected tasks: $5,500 (range $2,800 to $8,600)."]},"status":"published","reviewed_at":"2026-10-18","verification_note":"Lote de 15 adelantado (18/10); texto aprobado por el usuario"}