Accessory Dwelling Unit Size Limit Calculator

ANALife Services AuthorityNational Calculator Authority›Accessory Dwelling Unit Size Limit 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; } }

Accessory Dwelling Unit Size Limit Calculator

Estimate the maximum allowable size of an Accessory Dwelling Unit (ADU) based on your primary dwelling size, lot size, and common regulatory standards.

Primary Dwelling Size (sq ft)

Lot Size (sq ft)

ADU Type

Detached ADU Attached ADU Junior ADU (JADU)

Jurisdiction Standard

California (AB 68 / AB 881) Oregon Statewide Washington State General / Model Code

Current Lot Coverage by Existing Structures (%)

Calculate ADU Size Limit

function accCalc() { var resultDiv = document.getElementById('acc-result'); resultDiv.style.display = 'block'; resultDiv.className = 'calc-result';

var primarySqft = parseFloat(document.getElementById('acc-primary-sqft').value); var lotSqft = parseFloat(document.getElementById('acc-lot-sqft').value); var aduType = document.getElementById('acc-adu-type').value; var jurisdiction = document.getElementById('acc-jurisdiction').value; var lotCoveragePct= parseFloat(document.getElementById('acc-lot-coverage').value);

// --- Validation --- var errors = []; if (isNaN(primarySqft) || primarySqft 80) errors.push("Current lot coverage must be between 0% and 80%."); if (lotCoveragePct >= 60) errors.push("Existing lot coverage of 60% or more typically leaves insufficient room for an ADU.");

if (errors.length > 0) { resultDiv.className = 'calc-result calc-error'; resultDiv.innerHTML = 'Please fix the following errors:' + errors.map(function(e){ return ''; }).join('') + ''; return; }

// --------------------------------------------------------------- // CORE FORMULAS // --------------------------------------------------------------- // 1. Percentage-of-primary cap (varies by jurisdiction & type) // 2. Absolute maximum cap (varies by jurisdiction & type) // 3. Lot-coverage-based cap // 4. Final limit = min(percentage cap, absolute cap, coverage cap) // ---------------------------------------------------------------

var pctCap, absCap, coverageMaxPct, absoluteFloor;

if (aduType === 'junior') { // JADUs are carved from existing primary structure pctCap = 0.50 * primarySqft; // 50% of primary absCap = 500; // universal JADU cap (CA AB 68) coverageMaxPct = 0; // no new footprint absoluteFloor = 150; } else if (aduType === 'attached') { if (jurisdiction === 'california') { pctCap = 0.50 * primarySqft; absCap = 1200; coverageMaxPct = 0.50; absoluteFloor = 150; } else if (jurisdiction === 'oregon') { pctCap = 0.75 * primarySqft; absCap = 900; coverageMaxPct = 0.45; absoluteFloor = 200; } else if (jurisdiction === 'washington') { pctCap = 0.40 * primarySqft; absCap = 1000; coverageMaxPct = 0.45; absoluteFloor = 200; } else { // General / Model Code (IRC-based guidance) pctCap = 0.35 * primarySqft; absCap = 1000; coverageMaxPct = 0.40; absoluteFloor = 150; } } else { // Detached ADU if (jurisdiction === 'california') { pctCap = 0.50 * primarySqft; absCap = 1200; coverageMaxPct = 0.50; absoluteFloor = 150; } else if (jurisdiction === 'oregon') { pctCap = 0.75 * primarySqft; absCap = 900; coverageMaxPct = 0.45; absoluteFloor = 200; } else if (jurisdiction === 'washington') { pctCap = 0.50 * primarySqft; absCap = 1000; coverageMaxPct = 0.45; absoluteFloor = 200; } else { pctCap = 0.35 * primarySqft; absCap = 1000; coverageMaxPct = 0.40; absoluteFloor = 150; } }

// Lot-coverage cap: remaining buildable area // remainingCoverageAllowed = (coverageMaxPct - currentCoverageFraction) * lotSqft var currentCoverageFraction = lotCoveragePct / 100; var coverageCap; if (aduType === 'junior') { coverageCap = Infinity; // no new footprint for JADU } else { var remainingCoverage = (coverageMaxPct - currentCoverageFraction) * lotSqft; coverageCap = Math.max(0, remainingCoverage); }

// Final limit = min of all three caps, but at least absoluteFloor if coverage allows var limitFromPct = Math.round(pctCap); var limitFromAbs = absCap; var limitFromCoverage = (coverageCap === Infinity) ? Infinity : Math.round(coverageCap);

var finalLimit = Math.min(limitFromPct, limitFromAbs, limitFromCoverage);

// Enforce absolute floor only if coverage allows it if (finalLimit = absoluteFloor) { finalLimit = absoluteFloor; }

var feasible = finalLimit >= absoluteFloor && (coverageCap === Infinity || coverageCap >= absoluteFloor);

// --------------------------------------------------------------- // Build output // --------------------------------------------------------------- var jurisdictionLabel = { california: 'California (AB 68 / AB 881)', oregon: 'Oregon Statewide', washington: 'Washington State', general: 'General / Model Code' }[jurisdiction];

var typeLabel = { detached: 'Detached ADU', attached: 'Attached ADU', junior: 'Junior ADU (JADU)' }[aduType];

var coverageNote = (aduType === 'junior')
? 'N/A (no new footprint)'
(coverageCap === Infinity ? 'Unlimited' : coverageCap.toLocaleString() + ' sq ft');

if (!feasible) { resultDiv.className = 'calc-result calc-error'; resultDiv.innerHTML = '⚠ ADU May Not Be Feasible' + 'Based on your current lot coverage and the selected jurisdiction, there may not be enough remaining buildable area to construct an ADU meeting the minimum size of ' + absoluteFloor + ' sq ft.

' + 'Consider reducing existing structures, consulting a local planner, or exploring a Junior ADU option.

'; return; }

resultDiv.innerHTML = '### ✓ Estimated ADU Size Limit ' + '' + 'ADU Type' + typeLabel + '' + 'Jurisdiction' + jurisdictionLabel + '' + '% of Primary Cap' + limitFromPct.toLocaleString() + ' sq ft' + 'Absolute Maximum Cap' + limitFromAbs.toLocaleString() + ' sq ft' + 'Lot Coverage Cap' + coverageNote + '' + '▶ Maximum ADU Size' + finalLimit.toLocaleString() + ' sq ft' + '' + 'ⓘ This is an estimate. Always verify with your local planning department before designing or permitting an ADU.

'; }

#### Formulas Used

Step 1 — Percentage-of-Primary Cap: Cap₁ = Primary Dwelling Size (sq ft) × Percentage Factor Percentage factors: Detached/Attached: 35%–75% | JADU: 50% (jurisdiction-dependent)

Step 2 — Absolute Maximum Cap: Cap₂ = Jurisdiction & Type Absolute Limit Ranges from 500 sq ft (JADU) to 1,200 sq ft (CA Detached/Attached)

Step 3 — Lot Coverage Cap: Cap₃ = (Max Coverage % − Current Coverage %) × Lot Size (sq ft) Max coverage: 40%–50% depending on jurisdiction and type

Step 4 — Final Limit: ADU Size Limit = min(Cap₁, Cap₂, Cap₃) Subject to an absolute minimum floor (150–200 sq ft)

#### Assumptions & References

More Calculators

Read Next

Contingency Fee Vs Hourly Fee Cost Comparator ANA › Life Services Authority › National Calculator Authority › Contingency Fee vs.

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References