{"id":32891,"date":"2026-07-01T08:08:44","date_gmt":"2026-07-01T08:08:44","guid":{"rendered":"https:\/\/saunazilla.com\/?page_id=32891"},"modified":"2026-07-01T08:08:46","modified_gmt":"2026-07-01T08:08:46","slug":"sauna-heater-size-calculator","status":"publish","type":"page","link":"https:\/\/saunazilla.com\/en\/sauna-heater-size-calculator\/","title":{"rendered":"Sauna Heater Size Calculator &#8211; Find the Right kW"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Home sauna builds are picking up steam (pun intended) and many might be asking the valid question: <em>&#8220;What size sauna heater do I need?&#8221;<\/em><\/p><br>\n\n\n\n<p class=\"wp-block-paragraph\">Well, fear not, <em>saunamaniacs<\/em>! We built a sauna heater calculator for this very question. Feel free to fiddle with it &#8211; set your dimensions and known information, and start planning for your dream sauna. Please note that the calculator can only give you an estimate, because each sauna build is different and the numbers depend on many factors.<\/p><br>\n\n\n\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Sauna Heater Size Calculator<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Noto+Sans+Display:wght@400;500;600;700;800&amp;display=swap\" rel=\"stylesheet\">\n<style>\n  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n  :root {\n    --red: #F60202;\n    --red-dark: #C20000;\n    --red-light: #FFF0F0;\n    --red-bg: #FFF5F5;\n    --gray-50: #FAFAFA;\n    --gray-100: #F5F5F5;\n    --gray-200: #E5E5E5;\n    --gray-300: #D4D4D4;\n    --gray-400: #A3A3A3;\n    --gray-500: #737373;\n    --gray-600: #525252;\n    --gray-700: #404040;\n    --gray-800: #262626;\n    --gray-900: #171717;\n    --white: #FFFFFF;\n    --radius: 8px;\n    --radius-lg: 12px;\n  }\n\n  body {\n    font-family: 'Noto Sans Display', system-ui, -apple-system, sans-serif;\n    background: var(--gray-100);\n    color: var(--gray-900);\n    line-height: 1.5;\n    padding: 20px;\n  }\n\n  .calc-wrap {\n    max-width: 640px;\n    margin: 0 auto;\n  }\n\n  .calc-card {\n    background: var(--white);\n    border: 1px solid var(--gray-200);\n    border-radius: var(--radius-lg);\n    overflow: hidden;\n    box-shadow: 0 1px 3px rgba(0,0,0,0.06);\n  }\n\n  .calc-head {\n    background: var(--red);\n    color: var(--white);\n    padding: 24px 28px 20px;\n    text-align: center;\n  }\n\n  .calc-head .icon-wrap {\n    width: 48px;\n    height: 48px;\n    background: rgba(255,255,255,0.15);\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin: 0 auto 12px;\n  }\n\n  .calc-head .icon-wrap svg {\n    width: 24px;\n    height: 24px;\n  }\n\n  .calc-head h1 {\n    font-size: 1.25rem;\n    font-weight: 700;\n    letter-spacing: -0.01em;\n  }\n\n  .calc-head p {\n    font-size: 0.85rem;\n    opacity: 0.85;\n    margin-top: 4px;\n  }\n\n  .calc-body {\n    padding: 20px 24px 24px;\n  }\n\n  .row {\n    margin-bottom: 18px;\n  }\n\n  .row:last-child { margin-bottom: 0; }\n\n  .label {\n    font-size: 0.75rem;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.04em;\n    color: var(--gray-500);\n    margin-bottom: 8px;\n  }\n\n  \/* Unit toggle *\/\n  .unit-group {\n    display: flex;\n    gap: 0;\n    background: var(--gray-100);\n    border-radius: 6px;\n    padding: 3px;\n    width: fit-content;\n  }\n\n  .unit-group button {\n    padding: 6px 18px;\n    font-size: 0.8rem;\n    font-weight: 600;\n    border: none;\n    border-radius: 4px;\n    cursor: pointer;\n    background: transparent;\n    color: var(--gray-500);\n    transition: all 0.15s;\n    font-family: inherit;\n  }\n\n  .unit-group button.active {\n    background: var(--white);\n    color: var(--gray-900);\n    box-shadow: 0 1px 2px rgba(0,0,0,0.08);\n  }\n\n  \/* Dimension inputs *\/\n  .dim-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr 1fr;\n    gap: 10px;\n  }\n\n  .dim-field label {\n    display: block;\n    font-size: 0.8rem;\n    font-weight: 500;\n    color: var(--gray-600);\n    margin-bottom: 4px;\n  }\n\n  .dim-field input {\n    width: 100%;\n    padding: 9px 10px;\n    font-size: 0.95rem;\n    font-weight: 500;\n    border: 1px solid var(--gray-300);\n    border-radius: 6px;\n    outline: none;\n    transition: border-color 0.15s, box-shadow 0.15s;\n    font-family: inherit;\n  }\n\n  .dim-field input:focus {\n    border-color: var(--red);\n    box-shadow: 0 0 0 3px rgba(246,2,2,0.12);\n  }\n\n  \/* Radio options as compact chips *\/\n  .chip-group {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 6px;\n  }\n\n  .chip {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    padding: 7px 12px;\n    border: 1px solid var(--gray-200);\n    border-radius: 6px;\n    cursor: pointer;\n    transition: all 0.12s;\n    background: var(--white);\n    font-size: 0.82rem;\n    font-weight: 500;\n    color: var(--gray-600);\n  }\n\n  .chip:hover {\n    border-color: var(--gray-400);\n  }\n\n  .chip.selected {\n    border-color: var(--red);\n    background: var(--red-light);\n    color: var(--red-dark);\n  }\n\n  .chip input { display: none; }\n\n  .chip .sub {\n    font-size: 0.7rem;\n    font-weight: 400;\n    color: var(--gray-400);\n    margin-left: 2px;\n  }\n\n  .chip.selected .sub { color: var(--red); }\n\n  \/* Divider *\/\n  .divider {\n    height: 1px;\n    background: var(--gray-200);\n    margin: 18px 0;\n  }\n\n  \/* Result hero *\/\n  .result-area {\n    background: var(--red-bg);\n    border: 1px solid rgba(246,2,2,0.12);\n    border-radius: 8px;\n    padding: 20px;\n    text-align: center;\n  }\n\n  .result-area .r-label {\n    font-size: 0.7rem;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n    color: var(--gray-500);\n  }\n\n  .result-area .r-kw {\n    font-size: 3.2rem;\n    font-weight: 800;\n    color: var(--red);\n    line-height: 1;\n    margin: 4px 0 2px;\n    letter-spacing: -0.02em;\n  }\n\n  .result-area .r-unit {\n    font-size: 0.9rem;\n    font-weight: 600;\n    color: var(--red);\n  }\n\n  .result-area .r-range {\n    font-size: 0.78rem;\n    color: var(--gray-500);\n    margin-top: 4px;\n  }\n\n  .result-area .r-stats {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 8px;\n    margin-top: 14px;\n    padding-top: 14px;\n    border-top: 1px solid rgba(246,2,2,0.1);\n  }\n\n  .result-area .r-stat .rs-val {\n    font-size: 1rem;\n    font-weight: 700;\n    color: var(--gray-800);\n  }\n\n  .result-area .r-stat .rs-lbl {\n    font-size: 0.65rem;\n    text-transform: uppercase;\n    letter-spacing: 0.04em;\n    color: var(--gray-400);\n    font-weight: 600;\n  }\n\n  \/* Size bars compact *\/\n  .sizes-compact { margin-top: 14px; text-align: left; }\n\n  .sizes-compact .sc-label {\n    font-size: 0.7rem;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n    color: var(--gray-500);\n    margin-bottom: 8px;\n  }\n\n  .size-row {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    margin-bottom: 4px;\n    padding: 2px 0;\n  }\n\n  .size-row .s-name {\n    font-size: 0.75rem;\n    font-weight: 600;\n    min-width: 38px;\n    text-align: right;\n    color: var(--gray-600);\n  }\n\n  .size-row .s-track {\n    flex: 1;\n    height: 6px;\n    background: rgba(246,2,2,0.1);\n    border-radius: 3px;\n    overflow: hidden;\n  }\n\n  .size-row .s-fill {\n    height: 100%;\n    border-radius: 3px;\n    transition: width 0.25s ease, background 0.25s ease;\n    background: var(--gray-200);\n  }\n\n  .size-row .s-fill.active {\n    background: var(--red);\n  }\n\n  .size-row .s-cap {\n    font-size: 0.68rem;\n    color: var(--gray-400);\n    min-width: 64px;\n  }\n\n  .size-row.recommended .s-name { color: var(--red); font-weight: 700; }\n  .size-row.recommended .s-cap { color: var(--red); font-weight: 600; }\n\n  \/* Electrical compact *\/\n  .elec-box {\n    background: var(--gray-50);\n    border: 1px solid var(--gray-200);\n    border-radius: 8px;\n    padding: 14px 16px;\n    margin-top: 14px;\n    text-align: left;\n  }\n\n  .elec-box .e-label {\n    font-size: 0.7rem;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.04em;\n    color: var(--gray-500);\n    margin-bottom: 8px;\n  }\n\n  .elec-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 6px 14px;\n  }\n\n  .elec-item {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 4px 0;\n    font-size: 0.82rem;\n  }\n\n  .elec-item .el { color: var(--gray-500); }\n  .elec-item .ev { font-weight: 600; color: var(--gray-800); }\n\n  .footnote {\n    font-size: 0.68rem;\n    color: var(--gray-400);\n    margin-top: 8px;\n    padding-top: 8px;\n    border-top: 1px solid var(--gray-200);\n  }\n\n  .hidden { display: none; }\n\n  @media (max-width: 480px) {\n    .calc-body { padding: 16px; }\n    .calc-head { padding: 20px 16px 16px; }\n    .dim-grid { gap: 6px; }\n    .dim-field input { padding: 8px 8px; font-size: 0.9rem; }\n    .result-area .r-kw { font-size: 2.6rem; }\n    .chip { font-size: 0.78rem; padding: 6px 10px; }\n  }\n<\/style>\n\n\n\n<div class=\"calc-wrap\">\n  <div class=\"calc-card\">\n    <div class=\"calc-head\">\n      <div class=\"icon-wrap\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\"><\/rect>\n          <line x1=\"8\" y1=\"6\" x2=\"16\" y2=\"6\"><\/line>\n          <line x1=\"16\" y1=\"14\" x2=\"16\" y2=\"18\"><\/line>\n          <path d=\"M16 10h.01\"><\/path><path d=\"M12 10h.01\"><\/path><path d=\"M8 10h.01\"><\/path>\n          <path d=\"M12 14h.01\"><\/path><path d=\"M8 14h.01\"><\/path><path d=\"M12 18h.01\"><\/path><path d=\"M8 18h.01\"><\/path>\n        <\/svg>\n      <\/div>\n      <h2 id=\"sauna-heater-size-calculator\">Sauna Heater Size Calculator<\/h2>\n      <p>Find the right kW for your home sauna room<\/p>\n    <\/div>\n\n    <div class=\"calc-body\">\n      <!-- Unit Toggle -->\n      <div class=\"row\">\n        <div class=\"label\">Units<\/div>\n        <div class=\"unit-group\" id=\"unitGroup\">\n          <button class=\"active\" data-unit=\"ft\">Feet<\/button>\n          <button data-unit=\"m\">Meters<\/button>\n        <\/div>\n      <\/div>\n\n      <!-- Dimensions -->\n      <div class=\"row\">\n        <div class=\"label\">Room Dimensions<\/div>\n        <div class=\"dim-grid\">\n          <div class=\"dim-field\">\n            <label id=\"lblW\" for=\"inpW\">Width<\/label>\n            <input type=\"number\" id=\"inpW\" min=\"0.1\" step=\"0.5\" value=\"6\">\n          <\/div>\n          <div class=\"dim-field\">\n            <label id=\"lblD\" for=\"inpD\">Depth<\/label>\n            <input type=\"number\" id=\"inpD\" min=\"0.1\" step=\"0.5\" value=\"6\">\n          <\/div>\n          <div class=\"dim-field\">\n            <label id=\"lblH\" for=\"inpH\">Height<\/label>\n            <input type=\"number\" id=\"inpH\" min=\"0.1\" step=\"0.5\" value=\"7\">\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Wall Material -->\n      <div class=\"row\">\n        <div class=\"label\">Wall Material<\/div>\n        <div class=\"chip-group\" id=\"wallGroup\">\n          <label class=\"chip selected\" data-wall=\"wood\"><input type=\"radio\" name=\"wall\" value=\"wood\" checked=\"\">Wood<\/label>\n          <label class=\"chip\" data-wall=\"concrete\"><input type=\"radio\" name=\"wall\" value=\"concrete\">Concrete \/ Brick <span class=\"sub\">1.4x<\/span><\/label>\n          <label class=\"chip\" data-wall=\"glass\"><input type=\"radio\" name=\"wall\" value=\"glass\">Glass panels <span class=\"sub\">1.5x<\/span><\/label>\n          <label class=\"chip\" data-wall=\"tile\"><input type=\"radio\" name=\"wall\" value=\"tile\">Tile \/ Stone <span class=\"sub\">1.35x<\/span><\/label>\n        <\/div>\n      <\/div>\n\n      <!-- Insulation -->\n      <div class=\"row\">\n        <div class=\"label\">Insulation (Your estimate)<\/div>\n        <div class=\"chip-group\" id=\"insGroup\">\n          <label class=\"chip selected\" data-ins=\"well\"><input type=\"radio\" name=\"ins\" value=\"well\" checked=\"\">Well insulated<\/label>\n          <label class=\"chip\" data-ins=\"average\"><input type=\"radio\" name=\"ins\" value=\"average\">Average <span class=\"sub\">1.15x<\/span><\/label>\n          <label class=\"chip\" data-ins=\"poor\"><input type=\"radio\" name=\"ins\" value=\"poor\">Poor \/ none <span class=\"sub\">1.3x<\/span><\/label>\n        <\/div>\n      <\/div>\n\n      <div class=\"divider\"><\/div>\n\n      <!-- RESULTS -->\n      <div class=\"result-area\" id=\"resultArea\">\n        <div class=\"r-label\">Recommended Heater Size<\/div>\n        <div class=\"r-kw\" id=\"rKw\">6<\/div>\n        <div class=\"r-unit\">kilowatts (kW)<\/div>\n        <div class=\"r-range\" id=\"rRange\">Calculated need: 4.6\u20135.6 kW<\/div>\n\n        <div class=\"r-stats\">\n          <div class=\"r-stat\">\n            <div class=\"rs-val\" id=\"rVol\">252 ft\u00b3<\/div>\n            <div class=\"rs-lbl\">Room Volume<\/div>\n          <\/div>\n          <div class=\"r-stat\">\n            <div class=\"rs-val\" id=\"rAdj\">252 ft\u00b3<\/div>\n            <div class=\"rs-lbl\">Adjusted Volume<\/div>\n          <\/div>\n        <\/div>\n\n        <!-- Size bars -->\n        <div class=\"sizes-compact\">\n          <div class=\"sc-label\">Common Sizes<\/div>\n          <div id=\"sizeBars\"><\/div>\n        <\/div>\n\n        <!-- Electrical -->\n        <div class=\"elec-box\">\n          <div class=\"e-label\">Electrical (240V)<\/div>\n          <div class=\"elec-grid\">\n            <div class=\"elec-item\"><span class=\"el\">Breaker<\/span><span class=\"ev\" id=\"eBrk\">30A<\/span><\/div>\n            <div class=\"elec-item\"><span class=\"el\">Amperage<\/span><span class=\"ev\" id=\"eAmp\">25A<\/span><\/div>\n            <div class=\"elec-item\"><span class=\"el\">Wire Gauge<\/span><span class=\"ev\" id=\"eWir\">10 AWG<\/span><\/div>\n            <div class=\"elec-item\"><span class=\"el\">Voltage<\/span><span class=\"ev\">240V<\/span><\/div>\n          <\/div>\n          <div class=\"footnote\">Always consult a licensed electrician! Requirements vary by local code.<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n  const WALL = {\n    wood:     { mult: 1.0 },\n    concrete: { mult: 1.4 },\n    glass:    { mult: 1.5 },\n    tile:     { mult: 1.35 }\n  };\n\n  const INSUL = {\n    well:    { mult: 1.0 },\n    average: { mult: 1.15 },\n    poor:    { mult: 1.3 }\n  };\n\n  const SIZES = [\n    { kw: 3,   min: 0,     max: 165 },\n    { kw: 4.5, min: 165,   max: 247.5 },\n    { kw: 6,   min: 247.5, max: 330 },\n    { kw: 8,   min: 330,   max: 440 },\n    { kw: 9,   min: 440,   max: 495 },\n    { kw: 10.5, min: 495,  max: 577.5 },\n    { kw: 12,   min: 577.5, max: 660 },\n    { kw: 15,   min: 660,  max: 825 },\n    { kw: 18,   min: 825,  max: Infinity }\n  ];\n\n  function getElec(kw) {\n    const amps = Math.round((kw * 1000) \/ 240);\n    let brk, wir;\n    if (amps <= 16)    { brk = '20A'; wir = '12 AWG'; }\n    else if (amps <= 24) { brk = '30A'; wir = '10 AWG'; }\n    else if (amps <= 32) { brk = '40A'; wir = '8 AWG'; }\n    else if (amps <= 40) { brk = '50A'; wir = '8 AWG'; }\n    else if (amps <= 48) { brk = '60A'; wir = '6 AWG'; }\n    else                 { brk = '70A'; wir = '6 AWG'; }\n    return { brk, wir, amps };\n  }\n\n  \/\/ Refs\n  const unitBtns = document.querySelectorAll('#unitGroup button');\n  const inpW = document.getElementById('inpW');\n  const inpD = document.getElementById('inpD');\n  const inpH = document.getElementById('inpH');\n  const lblW = document.getElementById('lblW');\n  const lblD = document.getElementById('lblD');\n  const lblH = document.getElementById('lblH');\n  const wallRadios = document.querySelectorAll('input[name=\"wall\"]');\n  const insRadios = document.querySelectorAll('input[name=\"ins\"]');\n  const rKw = document.getElementById('rKw');\n  const rRange = document.getElementById('rRange');\n  const rVol = document.getElementById('rVol');\n  const rAdj = document.getElementById('rAdj');\n  const sizeBarsEl = document.getElementById('sizeBars');\n  const eBrk = document.getElementById('eBrk');\n  const eWir = document.getElementById('eWir');\n  const eAmp = document.getElementById('eAmp');\n\n  let unit = 'ft';\n\n  \/\/ Chip toggle styling\n  document.querySelectorAll('.chip').forEach(el => {\n    const radio = el.querySelector('input[type=\"radio\"]');\n    radio.addEventListener('change', function() {\n      const group = this.closest('.chip-group');\n      group.querySelectorAll('.chip').forEach(c => c.classList.remove('selected'));\n      if (this.checked) el.classList.add('selected');\n      calc();\n    });\n    if (radio.checked) el.classList.add('selected');\n  });\n\n  \/\/ Unit toggle\n  unitBtns.forEach(btn => {\n    btn.addEventListener('click', function() {\n      unitBtns.forEach(b => b.classList.remove('active'));\n      this.classList.add('active');\n      unit = this.dataset.unit;\n      const u = unit === 'ft' ? 'ft' : 'm';\n      lblW.textContent = 'Width (' + u + ')';\n      lblD.textContent = 'Depth (' + u + ')';\n      lblH.textContent = 'Height (' + u + ')';\n      if (unit === 'm') { inpW.value = 2; inpD.value = 2; inpH.value = 2.2; }\n      else              { inpW.value = 6; inpD.value = 6; inpH.value = 7; }\n      calc();\n    });\n  });\n\n  \/\/ Input events\n  [inpW, inpD, inpH].forEach(el => el.addEventListener('input', calc));\n\n  \/\/ Main calc - UNCHANGED LOGIC\n  function calc() {\n    const w = parseFloat(inpW.value) || 0;\n    const d = parseFloat(inpD.value) || 0;\n    const h = parseFloat(inpH.value) || 0;\n    const vol = w * d * h;\n\n    let wallV = 'wood';\n    wallRadios.forEach(r => { if (r.checked) wallV = r.value; });\n    let insV = 'well';\n    insRadios.forEach(r => { if (r.checked) insV = r.value; });\n\n    const wm = WALL[wallV].mult;\n    const im = INSUL[insV].mult;\n\n    let volCF = vol;\n    if (unit === 'm') volCF = vol * 35.315;\n    const adj = volCF * wm * im;\n    const base = adj \/ 50;\n\n    let matched = SIZES.find(s => adj >= s.min && adj < s.max);\n    if (!matched) matched = SIZES[SIZES.length - 1];\n\n    const rMin = (adj \/ 55).toFixed(1);\n    const rMax = (adj \/ 45).toFixed(1);\n\n    rKw.textContent = matched.kw;\n    rRange.textContent = 'Calculated need: ' + rMin + '\u2013' + rMax + ' kW';\n\n    rVol.textContent = unit === 'm' ? vol.toFixed(1) + ' m\u00b3' : Math.round(vol) + ' ft\u00b3';\n    rAdj.textContent = Math.round(adj) + ' ft\u00b3';\n\n    const e = getElec(matched.kw);\n    eBrk.textContent = e.brk;\n    eWir.textContent = e.wir;\n    eAmp.textContent = e.amps + 'A';\n\n    renderBars(matched.kw);\n  }\n\n  function renderBars(active) {\n    const last = SIZES[SIZES.length - 1];\n    const maxV = last.max === Infinity ? last.min * 1.2 : last.max;\n    let html = '';\n    SIZES.forEach(s => {\n      const eff = s.max === Infinity ? s.min * 1.2 : s.max;\n      const pct = Math.min((eff \/ maxV) * 100, 100);\n      const act = s.kw === active;\n      const cap = s.max === Infinity\n        ? Math.round(s.min) + '+ ft\u00b3'\n        : Math.round(s.min) + '\u2013' + Math.round(s.max) + ' ft\u00b3';\n      html += '<div class=\"size-row' + (act ? ' recommended' : '') + '\">'\n        + '<div class=\"s-name\">' + s.kw + ' kW<\/div>'\n        + '<div class=\"s-track\"><div class=\"s-fill' + (act ? ' active' : '') + '\" style=\"width:' + pct + '%\"><\/div><\/div>'\n        + '<div class=\"s-cap\">' + (act ? 'Your size' : cap) + '<\/div>'\n        + '<\/div>';\n    });\n    sizeBarsEl.innerHTML = html;\n  }\n\n  calc();\n})();\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\">Sizing your sauna heater<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Correct sizing matters. The aim is to bring the room to around <strong>160<\/strong> to <strong>195\u00b0F<\/strong> (<strong>70<\/strong> to <strong>90\u00b0C<\/strong>). Get the sizing right and you reach optimal temperature on time and hold it without straining the heater. Get it too small and it never quite gets hot enough. Get a size too big and you pay for heat you can&#8217;t use, and have an uneven <em>l\u00f6yly<\/em> spread.<\/p><br>\n\n\n\n<p class=\"wp-block-paragraph\">If you fall between two sizes, one step up is OK. Two steps up is not.<\/p><br>\n\n\n\n<h2 class=\"wp-block-heading\">The basic heaternomics<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Yes, that heading was a John Cena reference. But first, start with the size of your sauna room. For electric heaters, the rough figure is <strong>1 kW<\/strong> for every <strong>50 cubic feet<\/strong>. This number is your starting point, not your final answer. Insulation, glass panels, and outdoor exposure move it up or down.<\/p><br>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"558\" src=\"https:\/\/saunazilla.com\/wp-content\/uploads\/2026\/06\/sauna-heater-calculator-1000x558.avif\" alt=\"\" class=\"wp-image-32894\" srcset=\"https:\/\/saunazilla.com\/wp-content\/uploads\/2026\/06\/sauna-heater-calculator-1000x558.avif 1000w, https:\/\/saunazilla.com\/wp-content\/uploads\/2026\/06\/sauna-heater-calculator-300x167.avif 300w, https:\/\/saunazilla.com\/wp-content\/uploads\/2026\/06\/sauna-heater-calculator-768x429.avif 768w, https:\/\/saunazilla.com\/wp-content\/uploads\/2026\/06\/sauna-heater-calculator-600x335.avif 600w, https:\/\/saunazilla.com\/wp-content\/uploads\/2026\/06\/sauna-heater-calculator-800x447.avif 800w, https:\/\/saunazilla.com\/wp-content\/uploads\/2026\/06\/sauna-heater-calculator.avif 1376w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<br>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Two saunas the same size can have different sized heaters. The build is what changes it.<\/p><br>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Glass is a biggie (glass doors\/windows). To account for heat loss through glass, add <strong>1.2 m\u00b3<\/strong> to the effective room volume for every m\u00b2 of glass surface. Exposed log or raw wood walls absorb heat while the room warms up, needing around <strong>1.5<\/strong> times the power of smooth panel walls. An outdoor sauna loses warmth to the cold around it.<\/p><br>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Things that push the required kW higher:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Glass doors and windows<\/li>\n\n\n\n<li>Poor insulation or older buildings<\/li>\n\n\n\n<li>Exposed log walls instead of panelled walls<\/li>\n\n\n\n<li>High ceilings above 2.3 m \/ 7.5 ft<\/li>\n\n\n\n<li>Cold climate locations (outdoor saunas)<\/li>\n<\/ul>\n\n\n\n<br>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Others let you ease off:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Top-notch insulation<\/li>\n\n\n\n<li>Indoor installation<\/li>\n\n\n\n<li>Small, compact rooms<\/li>\n\n\n\n<li>Warm climate locations<\/li>\n\n\n\n<li>Pre-heated adjacent spaces<\/li>\n<\/ul>\n\n\n\n<br>\n\n\n\n<h2 class=\"wp-block-heading\">120V or 240V?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A 120V heater will be small and plugs into the wall. Think 1.5 to 4.5 kW and under 200 cubic feet. A 240V heater runs from 4.5 to 18 kW, and needs its own circuit. Please consult an electrician for this. Don&#8217;t ever mess with electricity.<\/p><br>\n\n\n\n<h2 class=\"wp-block-heading\">Wood-burning heaters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">While an electric heater is convenient, we would like to remind you that the traditional wood-heated version is still very much a viable option, and can offer a different kind of an experience.<\/p><br>\n\n\n\n<p class=\"wp-block-paragraph\">Burning wood, firing it up, attending the fire, and waiting for the right temperature can be a lot of work and perhaps even a nuisance, but then again, that&#8217;s part of the tradition right there. They also need proper ventilation, a chimney, and a steady supply of dry wood. Just sayin&#8217; &#8211; it&#8217;s pretty awesome.<\/p><br>\n\n\n\n<p class=\"wp-block-paragraph\">We have no affiliation with any heater manufacturer, so we won&#8217;t make brand recommendations. You&#8217;ll have to do some research and see what&#8217;s available where you reside. Reddit also has a very active <a href=\"https:\/\/www.reddit.com\/r\/Sauna\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">sauna page<\/a>, offering some <em>hot takes<\/em>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Home sauna builds are picking up steam (pun intended) and many might be asking the valid question: &#8220;What size sauna heater do I need?&#8221; Well, fear not, saunamaniacs! We built a sauna heater calculator for this very question. Feel free to fiddle with it &#8211; set your dimensions and known information, and start planning for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":32892,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/alasivu.php","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-32891","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/saunazilla.com\/en\/wp-json\/wp\/v2\/pages\/32891","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saunazilla.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/saunazilla.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/saunazilla.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/saunazilla.com\/en\/wp-json\/wp\/v2\/comments?post=32891"}],"version-history":[{"count":23,"href":"https:\/\/saunazilla.com\/en\/wp-json\/wp\/v2\/pages\/32891\/revisions"}],"predecessor-version":[{"id":32919,"href":"https:\/\/saunazilla.com\/en\/wp-json\/wp\/v2\/pages\/32891\/revisions\/32919"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saunazilla.com\/en\/wp-json\/wp\/v2\/media\/32892"}],"wp:attachment":[{"href":"https:\/\/saunazilla.com\/en\/wp-json\/wp\/v2\/media?parent=32891"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}