National Construction Code (NCC) Energy Efficiency Rating Calculator
ANA›Life Services Authority›National Calculator Authority›National Construction Code (NCC) Energy Efficiency Rating 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; } }
National Construction Code (NCC) Energy Efficiency Rating Calculator
Estimate the NCC energy efficiency star rating and annual heating/cooling energy loads for residential buildings based on building fabric, climate zone, and construction details. Based on NCC 2022 Volume One & Two requirements.
Climate Zone (NCC)
Zone 1 – High Humidity Summer, Warm Winter (Darwin, Cairns) Zone 2 – Warm Humid Summer, Mild Winter (Brisbane, Townsville) Zone 3 – Hot Dry Summer, Warm Winter (Alice Springs, Kalgoorlie) Zone 4 – Hot Dry Summer, Cool Winter (Perth, Adelaide) Zone 5 – Warm Temperate (Sydney, Melbourne coast) Zone 6 – Mild Temperate (Melbourne, Canberra) Zone 7 – Cool Temperate (Hobart, alpine areas) Zone 8 – Alpine (high altitude areas)
Conditioned Floor Area (m²)
Ceiling/Roof R-Value (m²·K/W)
Wall R-Value (m²·K/W)
Floor R-Value (m²·K/W)
Window U-Value (W/m²·K)
Window SHGC (Solar Heat Gain Coefficient)
Total Window Area (m²)
Air Infiltration Rate (ACH – Air Changes per Hour)
Average Ceiling Height (m)
Calculate Energy Rating ...
function natCalc() { // --- Inputs --- const zone = parseInt(document.getElementById('nat-climate-zone').value); const area = parseFloat(document.getElementById('nat-floor-area').value); const ceilR = parseFloat(document.getElementById('nat-ceiling-r').value); const wallR = parseFloat(document.getElementById('nat-wall-r').value); const floorR = parseFloat(document.getElementById('nat-floor-r').value); const winU = parseFloat(document.getElementById('nat-window-u').value); const winSHGC = parseFloat(document.getElementById('nat-window-shgc').value); const winArea = parseFloat(document.getElementById('nat-window-area').value); const ach = parseFloat(document.getElementById('nat-infiltration').value); const ceilH = parseFloat(document.getElementById('nat-ceiling-height').value);
// --- Validation --- const errors = []; if (isNaN(area) || area 5000) errors.push("Floor area must be between 10 and 5000 m²."); if (isNaN(ceilR) || ceilR 10) errors.push("Ceiling R-Value must be between 0 and 10."); if (isNaN(wallR) || wallR 10) errors.push("Wall R-Value must be between 0 and 10."); if (isNaN(floorR) || floorR 10) errors.push("Floor R-Value must be between 0 and 10."); if (isNaN(winU) || winU 7) errors.push("Window U-Value must be between 0.5 and 7 W/m²·K."); if (isNaN(winSHGC) || winSHGC 0.9) errors.push("SHGC must be between 0.1 and 0.9."); if (isNaN(winArea) || winArea 500) errors.push("Window area must be between 1 and 500 m²."); if (isNaN(ach) || ach 5) errors.push("Infiltration rate must be between 0.1 and 5 ACH."); if (isNaN(ceilH) || ceilH 6.0) errors.push("Ceiling height must be between 2.0 and 6.0 m."); if (winArea >= area) errors.push("Window area must be less than total floor area.");
if (errors.length > 0) { document.getElementById('nat-result').innerHTML = 'Input Errors:' + errors.map(e => '').join('') + ''; return; }
// ----------------------------------------------------------------------- // NCC-aligned simplified thermal load model // Reference: NCC 2022 Vol.2 Section 13 (Thermal Performance), ABCB // Heating Degree Hours (HDH) and Cooling Degree Hours (CDH) by climate zone // Source: ABCB NatHERS climate data approximations // -----------------------------------------------------------------------
// Heating Degree Hours (base 18°C) and Cooling Degree Hours (base 26°C) // approximate annual values per NCC climate zone const climateData = { 1: { HDH: 200, CDH: 28000, solarH: 220, label: "Zone 1 – High Humidity Summer" }, 2: { HDH: 800, CDH: 18000, solarH: 200, label: "Zone 2 – Warm Humid Summer" }, 3: { HDH: 1500, CDH: 22000, solarH: 240, label: "Zone 3 – Hot Dry Summer" }, 4: { HDH: 3000, CDH: 12000, solarH: 210, label: "Zone 4 – Hot Dry Summer, Cool Winter" }, 5: { HDH: 5000, CDH: 8000, solarH: 180, label: "Zone 5 – Warm Temperate" }, 6: { HDH: 8000, CDH: 4000, solarH: 160, label: "Zone 6 – Mild Temperate" }, 7: { HDH: 12000, CDH: 1500, solarH: 140, label: "Zone 7 – Cool Temperate" }, 8: { HDH: 18000, CDH: 500, solarH: 120, label: "Zone 8 – Alpine" } };
const cd = climateData[zone];
// --- Building geometry estimates --- // Assume single-storey square footprint; perimeter walls estimated const footprintSide = Math.sqrt(area); // m const wallArea = 4 * footprintSide * ceilH; // m² total external wall area const opaqueWall = Math.max(wallArea - winArea, wallArea * 0.3); // m²
// --- U-Values from R-Values (U = 1/R) --- // Add surface resistances: Rsi=0.12, Rso=0.04 (total 0.16 m²K/W) const surfaceR = 0.16; const Uceil = 1 / (ceilR + surfaceR); // W/m²·K const Uwall = 1 / (wallR + surfaceR); // W/m²·K const Ufloor = 1 / (floorR + surfaceR); // W/m²·K
// --- Fabric Heat Loss/Gain Coefficients (UA, W/K) --- const UA_ceil = Uceil * area; // ceiling/roof const UA_wall = Uwall * opaqueWall; // opaque walls const UA_floor = Ufloor * area; // floor const UA_win = winU * winArea; // windows (U already total)
// --- Infiltration heat loss coefficient --- // Q_inf = ρ·Cp·ACH·V / 3600 (W/K) // ρ·Cp for air ≈ 1200 J/m³·K const volume = area * ceilH; // m³ const UA_inf = (1200 * ach * volume) / 3600; // W/K
// --- Total UA (W/K) --- const UA_total = UA_ceil + UA_wall + UA_floor + UA_win + UA_inf;
// ----------------------------------------------------------------------- // Annual Heating Load (MJ/year) // Q_heat = UA_total × HDH × 3600 / 1,000,000 // minus passive solar gains through windows // Solar gain offset: SHGC × winArea × solarH (kWh/m²/year) × 3.6 MJ/kWh // Assume 30% of solar gain usefully offsets heating // ----------------------------------------------------------------------- const heatLossRaw = (UA_total * cd.HDH * 3600) / 1e6; // MJ const solarGainMJ = winSHGC * winArea * cd.solarH * 3.6; // MJ const solarOffset = solarGainMJ * 0.30; // 30% useful const heatLoad = Math.max(heatLossRaw - solarOffset, 0); // MJ/year
// ----------------------------------------------------------------------- // Annual Cooling Load (MJ/year) // Q_cool = UA_total × CDH × 3600 / 1,000,000 // plus solar heat gain through windows (unwanted in cooling season) // Assume 60% of solar gain adds to cooling load // ----------------------------------------------------------------------- const coolLossRaw = (UA_total * cd.CDH * 3600) / 1e6; // MJ const solarCool = solarGainMJ * 0.60; // 60% unwanted const coolLoad = coolLossRaw + solarCool; // MJ/year
// --- Total Annual Load --- const totalLoad = heatLoad + coolLoad; // MJ/year const loadPerM2 = totalLoad / area; // MJ/m²/year
// ----------------------------------------------------------------------- // NatHERS Star Rating Mapping // NatHERS rates 0–10 stars; 6 stars = NCC minimum for most zones // Approximate MJ/m²/year thresholds derived from NatHERS benchmarks // Reference: ABCB NatHERS Technical Note 2022 // ----------------------------------------------------------------------- // Zone-specific benchmark loads (MJ/m²/year) for each star band // [0★, 1★, 2★, 3★, 4★, 5★, 6★, 7★, 8★, 9★, 10★] // Higher zone number = colder = higher loads tolerated per star const starBenchmarks = { 1: [999, 400, 300, 220, 160, 110, 70, 45, 25, 12, 0], 2: [999, 450, 340, 250, 180, 125, 80, 50, 28, 13, 0], 3: [999, 500, 380, 280, 200, 140, 90, 55, 30, 14, 0], 4: [999, 520, 400, 300, 215, 150, 95, 60, 33, 15, 0], 5: [999, 550, 420, 315, 225, 158, 100, 63, 35, 16, 0], 6: [999, 600, 460, 345, 248, 174, 110, 70, 38, 18, 0], 7: [999, 680, 520, 390, 280, 196, 124, 79, 43, 20, 0], 8: [999, 800, 620, 465, 335, 235, 148, 94, 51, 24, 0] };
const benchmarks = starBenchmarks[zone]; let stars = 0; for (let s = 10; s >= 0; s--) { if (loadPerM2 = nccMin;
// --- Star display --- const fullStars = Math.floor(starDecimal); const halfStar = (starDecimal - fullStars) >= 0.5; let starDisplay = ''; for (let i = 0; i v.toFixed(d); const fmtInt = v => Math.round(v).toLocaleString();
- const statusColor = meetsNCC ? '#2e7d32' : '#c62828';
- const statusText = meetsNCC
- ?
✅ Meets NCC 2022 minimum (${nccMin}★ required for Zone ${zone}) ❌ Does NOT meet NCC 2022 minimum (${nccMin}★ required for Zone ${zone});
document.getElementById('nat-result').innerHTML = ` ### NCC Energy Efficiency Rating Result
ParameterValue Climate Zone${cd.label} NatHERS Star Rating${starDisplay} (${fmt(starDecimal,1)} / 10 ★) NCC 2022 Compliance${statusText}
Total UA (Fabric + Infiltration)${fmt(UA_total,1)} W/K Annual Heating Load${fmtInt(heatLoad)} MJ/year Annual Cooling Load${fmtInt(coolLoad)} MJ/year Total Annual Thermal Load${fmtInt(totalLoad)} MJ/year Load Intensity${fmt(loadPerM2,1)} MJ/m²/year
Estimated Electrical Energy (HVAC)${fmtInt(totalEnergy)} kWh/year Estimated Annual Energy Cost$${fmtInt(energyCost)} AUD/year Estimated CO₂ Emissions${fmtInt(co2)} kg CO₂/year
Ceiling U-Value${fmt(Uceil,3)} W/m²·K Wall U-Value${fmt(Uwall,3)} W/m²·K Floor U-Value${fmt(Ufloor,3)} W/m²·K Opaque Wall Area (estimated)${fmt(opaqueWall,1)} m² Infiltration UA${fmt(UA_inf,1)} W/K
`; }
#### Formulas Used
1. U-Values from R-Values (including surface resistances): U = 1 / (Rinsulation + Rsurface), where Rsurface = 0.16 m²·K/W (Rsi=0.12 + Rso=0.04)
2. Fabric Heat Transfer Coefficient (UA): UAtotal = Uceil·Aceil + Uwall·Awall + Ufloor·Afloor + Uwin·Awin + UAinfiltration
3. Infiltration Heat Loss: UAinf = (ρ·Cp × ACH × Volume) / 3600, where ρ·Cp = 1200 J/m³·K
4. Annual Heating Load: Qheat = (UAtotal × HDH × 3600) / 10⁶ − (SHGC × Awin × Hsolar × 3.6 × 0.30) [MJ/year] HDH = Heating Degree Hours (base 18°C); 30% of solar gain assumed useful for heating offset.
5. Annual Cooling Load: Qcool = (UAtotal × CDH × 3600) / 10⁶ + (SHGC × Awin × Hsolar × 3.6 × 0.60) [MJ/year] CDH = Cooling Degree Hours (base 26°C); 60% of solar gain assumed to add to cooling load.
6. Load Intensity: Load Intensity = (Qheat + Qcool) / Afloor [MJ/m²/year]
7. NatHERS Star Rating: Star rating (0–10) is determined by comparing load intensity against NCC/NatHERS zone-specific benchmark thresholds. Decimal interpolation applied between star bands.
8. Electrical Energy & Cost: Eheat = Qheat / (3.6 × COPheat), COPheat = 3.5 Ecool = Qcool / (3.6 × COPcool), COPcool = 3.0 Cost = (Eheat + Ecool) × $0.30/kWh
#### Assumptions & References
- Based on NCC 2022 Volume Two (Housing Provisions) Section 13 – Thermal Performance, and NatHERS Technical Note 2022 (ABCB).
- Surface resistances of Rsi = 0.12 m²·K/W (internal) and Rso = 0.04 m²·K/W (external) are added to insulation R-values per AS/NZS 4859.1.
- Air density × specific heat: ρ·Cp = 1200 J/m³·K (standard air at ~20°C).
- Solar irradiance (Hsolar) values are approximate annual horizontal irradiance (kWh/m²/year) per zone from the Australian Bureau of Meteorology.
- This calculator provides an indicative estimate only. Compliance must be verified using accredited NatHERS software (e.g., AccuRate, BERS Pro, FirstRate5) or a deemed-to-satisfy assessment by a qualified assessor.
More Calculators
- Hardscape Material Coverage Calculator
- Pennsylvania Commercial Construction Cost Estimator
- Medical Expense Settlement Value Estimator
- Network Subnet & Attack Surface Calculator
- Pathfinder Ability Score Modifier Calculator
- Pennsylvania Sales Tax Calculator for Construction Materials
- 360-Degree Feedback Weighted Score Calculator
- SEER Savings Calculator
- Air Filter Replacement Interval Calculator
- Heat Pump vs AC Cost Comparison Calculator
- Austin Climate Load Calculator
- SEER to EER Conversion Calculator
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...