Electrical Conduit Size Calculator May 2026

<hr> <h3>📘 Conduit Fill Reference Table (for common wires)</h3> <div style="overflow-x:auto;"> <table> <thead> <tr><th>Wire Size (AWG/kcmil)</th><th>THHN/THWN Area (in²)</th><th>XHHW Area (in²)</th><th>Trade Size 3/4" EMT (40% fill max area)</th></tr> </thead> <tbody> <tr><td>14 AWG</td><td>0.0097</td><td>0.0123</td><td>0.213 in²</td></tr> <tr><td>12 AWG</td><td>0.0133</td><td>0.0160</td><td>0.213 in²</td></tr> <tr><td>10 AWG</td><td>0.0211</td><td>0.0243</td><td>0.213 in²</td></tr> <tr><td>8 AWG</td><td>0.0366</td><td>0.0410</td><td>0.213 in²</td></tr> <tr><td>6 AWG</td><td>0.0507</td><td>0.0590</td><td>0.346 in² (1" EMT)</td></tr> <tr><td>4 AWG</td><td>0.0824</td><td>0.0937</td><td>0.598 in² (1¼" EMT)</td></tr> </tbody> </table> <p class="note" style="margin-top:8px;">⚠️ Full NEC Chapter 9 Table 4 & 5 used in calculator logic for 1/2" to 4" conduit.</p> </div> </div>

<div class="result-panel"> <h3 style="margin-top:0;">📊 Result</h3> <div class="result-card"> <div id="resultArea"> <div class="conduit-size-result" style="background:#f1f5f9; color:#2d3e50;"> -- / -- </div> <div id="fillDetails"></div> </div> </div> <div class="warning" id="warningMsg" style="display:none;"></div> <div class="note"> <strong>⚡ NEC Fill Reference (typical):</strong> <ul style="margin:8px 0 0 16px; padding-left:0;"> <li>1 conductor → 53% max fill</li> <li>2 conductors → 31% max fill</li> <li>3+ conductors → 40% max fill</li> </ul> <small>*Based on standard THHN/THWN area values. Actual conduit fill depends on insulation and jamming rules.</small> </div> </div> </div> electrical conduit size calculator

function computeTotalArea() let total = 0; for (let w of wires) const areaObj = wireAreas[w.size]; if (areaObj && areaObj[w.insulation]) total += areaObj[w.insulation]; else if (areaObj && areaObj["THHN"]) total += areaObj["THHN"]; else total += 0.0133; // fallback return total; 'selected' : ''&gt

<script> // ---------- AREA DATABASE (sq inches) based on NEC Table 5 (THHN/THWN & XHHW approx) ---------- const wireAreas = // AWG sizes, compact "14": "THHN": 0.0097, "THWN": 0.0097, "XHHW": 0.0123 , "12": "THHN": 0.0133, "THWN": 0.0133, "XHHW": 0.0160 , "10": "THHN": 0.0211, "THWN": 0.0211, "XHHW": 0.0243 , "8": "THHN": 0.0366, "THWN": 0.0366, "XHHW": 0.0410 , "6": "THHN": 0.0507, "THWN": 0.0507, "XHHW": 0.0590 , "4": "THHN": 0.0824, "THWN": 0.0824, "XHHW": 0.0937 , "2": "THHN": 0.1158, "THWN": 0.1158, "XHHW": 0.1320 , "1": "THHN": 0.1562, "THWN": 0.1562, "XHHW": 0.1780 , "1/0": "THHN": 0.1855, "THWN": 0.1855, "XHHW": 0.2110 , "2/0": "THHN": 0.2223, "THWN": 0.2223, "XHHW": 0.2540 , "3/0": "THHN": 0.2679, "THWN": 0.2679, "XHHW": 0.3050 , "4/0": "THHN": 0.3195, "THWN": 0.3195, "XHHW": 0.3650 , "250": "THHN": 0.3970, "THWN": 0.3970, "XHHW": 0.4540 , "350": "THHN": 0.5242, "THWN": 0.5242, "XHHW": 0.6010 , "500": "THHN": 0.7073, "THWN": 0.7073, "XHHW": 0.8120 ; THHN / THWN&lt

const tradeSizes = ["1/2", "3/4", "1", "1 1/4", "1 1/2", "2", "2 1/2", "3", "3 1/2", "4"];

// Conduit internal areas (sq in) - based on NEC Table 4 for EMT, PVC40, RMC, IMC (approx values for typical sizes) const conduitAreas = "EMT": "1/2": 0.213, "3/4": 0.346, "1": 0.598, "1 1/4": 0.984, "1 1/2": 1.342, "2": 2.028, "2 1/2": 2.731, "3": 3.916, "3 1/2": 5.027, "4": 6.388 , "PVC": "1/2": 0.201, "3/4": 0.333, "1": 0.577, "1 1/4": 0.954, "1 1/2": 1.295, "2": 1.947, "2 1/2": 2.621, "3": 3.760, "3 1/2": 4.824, "4": 6.128 , "RIGID": "1/2": 0.215, "3/4": 0.347, "1": 0.602, "1 1/4": 0.990, "1 1/2": 1.350, "2": 2.038, "2 1/2": 2.743, "3": 3.930, "3 1/2": 5.043, "4": 6.405 , "IMC": "1/2": 0.214, "3/4": 0.348, "1": 0.603, "1 1/4": 0.985, "1 1/2": 1.342, "2": 2.040, "2 1/2": 2.734, "3": 3.922, "3 1/2": 5.030, "4": 6.390 ;

function renderWireInputs() const container = document.getElementById('wiresContainer'); if (!container) return; container.innerHTML = ''; wires.forEach((wire, idx) => const div = document.createElement('div'); div.className = 'wire-entry'; div.innerHTML = ` <div class="wire-header"> <span>🔌 Conductor #$idx+1</span> <button class="btn-remove" data-idx="$idx" type="button">Remove</button> </div> <div class="wire-controls"> <select class="wire-size" data-idx="$idx"> $Object.keys(wireAreas).map(sz => `<option value="$sz" $wire.size === sz ? 'selected' : ''>AWG $sz</option>`).join('') </select> <select class="wire-insulation" data-idx="$idx"> <option value="THHN" $wire.insulation === 'THHN' ? 'selected' : ''>THHN / THWN</option> <option value="XHHW" $wire.insulation === 'XHHW' ? 'selected' : ''>XHHW</option> </select> </div> `; container.appendChild(div); ); // attach remove events document.querySelectorAll('.btn-remove').forEach(btn => btn.addEventListener('click', (e) => const idx = parseInt(btn.getAttribute('data-idx')); wires.splice(idx, 1); renderWireInputs(); ); ); // attach change listeners for dynamic updates document.querySelectorAll('.wire-size').forEach(sel => sel.addEventListener('change', (e) => const idx = parseInt(sel.getAttribute('data-idx')); wires[idx].size = sel.value; ); ); document.querySelectorAll('.wire-insulation').forEach(sel => sel.addEventListener('change', (e) => const idx = parseInt(sel.getAttribute('data-idx')); wires[idx].insulation = sel.value; ); );