Gate Width and Swing Clearance Calculator

ANALife Services AuthorityNational Calculator Authority›Gate Width and Swing Clearance 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; } }

Gate Width and Swing Clearance Calculator

Calculate the required gate width for a passage opening and determine the swing clearance arc radius needed for single or double gates.

Required Clear Opening Width (inches)

Minimum clear width needed for passage (e.g. 36" for ADA pedestrian, 96" for vehicles)

Gate Type

Single Gate Double Gate (two equal leaves)

Gate Post / Frame Width (inches)

Width of each post or frame member that reduces the clear opening

Hinge Offset from Post Face (inches)

Distance the hinge pin sits proud of the post face; adds to swing radius

Swing Angle (degrees)

How far the gate opens (90° standard; 180° for full fold-back)

Gate Leaf Thickness (inches)

Thickness of the gate leaf (affects clearance at the latch post)

Calculate

function gatCalc() { var resultDiv = document.getElementById("gat-result");

// --- Read inputs --- var openingWidth = parseFloat(document.getElementById("gat-opening-width").value); var gateType = document.getElementById("gat-gate-type").value; var postWidth = parseFloat(document.getElementById("gat-post-width").value); var hingeOffset = parseFloat(document.getElementById("gat-hinge-offset").value); var swingAngle = parseFloat(document.getElementById("gat-swing-angle").value); var gateThickness = parseFloat(document.getElementById("gat-gate-thickness").value);

// --- Validation --- var errors = []; if (isNaN(openingWidth) || openingWidth 180) errors.push("Swing angle must be between 45° and 180°."); if (isNaN(gateThickness)|| gateThickness 0) { resultDiv.innerHTML = "Please fix the following:" + errors.map(function(e){ return ""; }).join("") + ""; return; }

// --------------------------------------------------------------- // FORMULAS // --------------------------------------------------------------- // Number of leaves var numLeaves = (gateType === "double") ? 2 : 1;

// 1. Gate leaf width (each leaf) // The total rough opening must accommodate the clear opening plus // any post/frame intrusion on both sides. // Rough Opening = Clear Opening + 2 × Post Width (posts on both sides) // Each leaf width = Rough Opening / numLeaves var roughOpening = openingWidth + 2 * postWidth; var leafWidth = roughOpening / numLeaves;

// 2. Swing clearance arc radius // The pivot point is at the hinge pin, which is (hingeOffset) inches // proud of the post face. The gate leaf extends from the hinge pin // to its far (latch) end. // Swing radius R = leafWidth + hingeOffset var swingRadius = leafWidth + hingeOffset;

// 3. Swing arc chord length (straight-line distance between gate tip // at closed position and gate tip at open position) // chord = 2 × R × sin(swingAngle / 2) var swingAngleRad = swingAngle * Math.PI / 180; var chordLength = 2 * swingRadius * Math.sin(swingAngleRad / 2);

// 4. Lateral clearance needed alongside the post (perpendicular to fence line) // At any angle θ the tip traces an arc; the maximum lateral reach // occurs at the full swing angle if swingAngle ≤ 90°, or at 90° if > 90°. // Lateral reach = R × sin(min(swingAngle, 90°)) var lateralAngleRad = Math.min(swingAngle, 90) * Math.PI / 180; var lateralClearance = swingRadius * Math.sin(lateralAngleRad);

// 5. Depth clearance (along the fence line, behind the gate when open) // Depth = R × (1 - cos(swingAngle)) [how far back the tip travels] var depthClearance = swingRadius * (1 - Math.cos(swingAngleRad));

// 6. Latch-side clearance (gate thickness projects past latch post when ajar) // At small angles the corner of the leaf protrudes: // max protrusion ≈ gateThickness (conservative, at 0° opening) var latchClearance = gateThickness;

// 7. Total rough opening width (already computed above) // Confirm: roughOpening = openingWidth + 2 × postWidth

// --------------------------------------------------------------- // Format helper // --------------------------------------------------------------- function fmt(val, dec) { return val.toFixed(dec !== undefined ? dec : 2); } function inFt(inches) { var ft = Math.floor(inches / 12); var inn = inches % 12; return ft > 0 ? ft + " ft " + fmt(inn, 2) + " in" : fmt(inn, 2) + " in"; }

// --------------------------------------------------------------- // Output // --------------------------------------------------------------- var leafLabel = (numLeaves === 2) ? "Each Leaf Width" : "Gate Leaf Width";

resultDiv.innerHTML = "### Results " + "" + "ParameterValue" + "Rough Opening (post-to-post)" + fmt(roughOpening,2) + " in (" + inFt(roughOpening) + ")" + "" + leafLabel + "" + fmt(leafWidth,2) + " in (" + inFt(leafWidth) + ")" + "Swing Radius (hinge pin to gate tip)" + fmt(swingRadius,2) + " in (" + inFt(swingRadius) + ")" + "Swing Arc Chord (tip travel, closed→open)" + fmt(chordLength,2) + " in (" + inFt(chordLength) + ")" + "Lateral Clearance Needed (⊥ fence line)" + fmt(lateralClearance,2) + " in (" + inFt(lateralClearance) + ")" + "Depth Clearance Needed (∥ fence line)" + fmt(depthClearance,2) + " in (" + inFt(depthClearance) + ")" + "Latch-Side Clearance (gate thickness)" + fmt(latchClearance,2) + " in" + "Number of Leaves" + numLeaves + "" + "Swing Angle" + swingAngle + "°" + "" +

"" + "Summary: A " + (gateType === "double" ? "double" : "single") + " gate providing " + fmt(openingWidth,1) + "" clear passage requires a rough opening of " + fmt(roughOpening,1) + "", " + (numLeaves === 2 ? "two leaves each " : "one leaf ") + "" + fmt(leafWidth,1) + "" wide, and a swing clearance arc of radius " + fmt(swingRadius,1) + "". Keep at least " + fmt(lateralClearance,1) + "" of clear space perpendicular to the fence line." + ""; }

#### Formulas Used

Rough Opening = Clear Opening Width + 2 × Post Width

Leaf Width = Rough Opening ÷ Number of Leaves

Swing Radius (R) = Leaf Width + Hinge Offset

Arc Chord = 2 × R × sin(θ ÷ 2)    where θ = swing angle

Lateral Clearance = R × sin(min(θ, 90°))

Depth Clearance = R × (1 − cos(θ))

All trigonometric functions use angles converted to radians (θrad = θ° × π / 180).

#### Assumptions & References

More Calculators

Read Next

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

References