body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: #333;
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
.calculator-container {
background-color: #f8f9fa;
border: 1px solid #e9ecef;
border-radius: 8px;
padding: 30px;
margin-bottom: 40px;
box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}
.calculator-header {
text-align: center;
margin-bottom: 25px;
}
.calculator-header h2 {
margin: 0;
color: #2c3e50;
font-size: 24px;
}
.input-group {
margin-bottom: 20px;
}
.input-group label {
display: block;
margin-bottom: 8px;
font-weight: 600;
color: #495057;
}
.input-group input {
width: 100%;
padding: 12px;
border: 1px solid #ced4da;
border-radius: 4px;
font-size: 16px;
box-sizing: border-box; /* Ensures padding doesn't affect width */
}
.input-group input:focus {
border-color: #4dabf7;
outline: none;
box-shadow: 0 0 0 3px rgba(77, 171, 247, 0.25);
}
.calc-btn {
display: block;
width: 100%;
padding: 14px;
background-color: #228be6;
color: white;
border: none;
border-radius: 4px;
font-size: 18px;
font-weight: 600;
cursor: pointer;
transition: background-color 0.2s;
}
.calc-btn:hover {
background-color: #1c7ed6;
}
.result-box {
background-color: #ffffff;
border: 1px solid #dee2e6;
border-radius: 6px;
padding: 20px;
margin-top: 25px;
display: none;
}
.result-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 0;
border-bottom: 1px solid #f1f3f5;
}
.result-row:last-child {
border-bottom: none;
}
.result-label {
color: #868e96;
font-size: 14px;
font-weight: 500;
}
.result-value {
font-size: 20px;
font-weight: 700;
color: #212529;
}
.highlight-result {
color: #228be6;
font-size: 24px;
}
.status-badge {
padding: 5px 10px;
border-radius: 4px;
font-size: 14px;
font-weight: 600;
}
.status-success {
background-color: #d3f9d8;
color: #2b8a3e;
}
.status-warning {
background-color: #ffe3e3;
color: #c92a2a;
}
.article-content h2 {
color: #2c3e50;
margin-top: 40px;
}
.article-content h3 {
color: #34495e;
margin-top: 25px;
}
.article-content p {
margin-bottom: 15px;
color: #4a4a4a;
}
.article-content ul {
margin-bottom: 20px;
padding-left: 20px;
}
.article-content li {
margin-bottom: 8px;
}
.formula-box {
background-color: #f1f3f5;
padding: 15px;
border-left: 4px solid #228be6;
font-family: monospace;
font-size: 1.1em;
margin: 20px 0;
}
What is Floor Area Ratio (FAR)?
Floor Area Ratio (FAR) is a critical metric used in urban planning and zoning to determine the density of a building relative to the land it sits on. It represents the relationship between the total amount of usable floor area that a building has, or has been permitted to have, and the total area of the lot on which the building stands.
Architects, developers, and city planners use FAR to control the "bulk" of buildings. A higher FAR indicates a denser, more urban construction (like skyscrapers), while a lower FAR suggests a low-density environment (like suburban single-family homes).
The FAR Formula
FAR = Gross Floor Area / Area of the Plot
Conversely, if you know the allowed FAR and want to find out the maximum size building you can construct:
Max Buildable Area = Plot Area × Allowable FAR
How to Use This FAR Calculator
This tool is designed to help property owners and developers quickly assess zoning potential. Here is how to interpret the inputs:
- Lot Area: The total square footage of the land parcel as defined by the survey.
- Total Gross Floor Area: The sum of the floor area of all stories of the building. This includes mezzanines and basements depending on local zoning definitions.
- Max Allowable FAR: The specific ratio limit set by the local municipality for your specific zoning district (e.g., R5, C2).
Understanding the Results
1. Calculated FAR: This number tells you the current density of your design. For example, on a 4,000 sq ft lot, a 2,000 sq ft one-story house has a FAR of 0.5. A 8,000 sq ft two-story building on the same lot has a FAR of 2.0.
2. Max Buildable Area: If you input a zoning limit (Max FAR), the calculator determines the maximum square footage you can legally build.
3. Compliance: By comparing your planned floor area against the maximum allowable area, the tool indicates if you are "Under Limit" (compliant) or "Over Limit" (non-compliant).
Real-World Examples of FAR
Understanding how FAR translates to building shape is crucial for design:
- FAR 1.0: You could build a 1-story building covering 100% of the lot, or a 2-story building covering 50% of the lot.
- FAR 2.0: You could build a 2-story building covering 100% of the lot, or a 4-story building covering 50% of the lot.
- FAR 0.5: You can only build on half the lot if it is a single story, or a quarter of the lot if it is two stories.
Why FAR Matters for Property Value
In many real estate markets, "air rights" or "unused FAR" have significant monetary value. If a property has a built FAR of 2.0 but the zoning allows for a FAR of 5.0, the owner may have the right to expand the building vertically or sell the unused development rights to an adjacent property owner. Using a FAR calculator helps identify these hidden value opportunities.
function calculateFAR() {
// Get inputs
var lotAreaInput = document.getElementById('lotArea');
var floorAreaInput = document.getElementById('floorArea');
var maxFarInput = document.getElementById('maxFar');
var resultBox = document.getElementById('resultBox');
// Parse values
var lotArea = parseFloat(lotAreaInput.value);
var floorArea = parseFloat(floorAreaInput.value);
var maxFar = parseFloat(maxFarInput.value);
// Validation
if (isNaN(lotArea) || lotArea 0;
if (hasFloorArea) {
currentFar = floorArea / lotArea;
document.getElementById('resultFar').innerText = currentFar.toFixed(2);
} else {
document.getElementById('resultFar').innerText = "N/A";
}
// 2. Calculate Max Buildable Area (if Max FAR is provided)
var hasMaxFar = !isNaN(maxFar) && maxFar > 0;
var maxBuildable = 0;
if (hasMaxFar) {
maxBuildable = lotArea * maxFar;
document.getElementById('resultMaxArea').innerText = maxBuildable.toLocaleString() + " sq ft";
document.getElementById('maxBuildRow').style.display = 'flex';
} else {
document.getElementById('maxBuildRow').style.display = 'none';
}
// 3. Check Compliance & Remaining Area
if (hasFloorArea && hasMaxFar) {
var complianceRow = document.getElementById('complianceRow');
var resultStatus = document.getElementById('resultStatus');
var remainingRow = document.getElementById('remainingRow');
var resultRemaining = document.getElementById('resultRemaining');
complianceRow.style.display = 'flex';
remainingRow.style.display = 'flex';
var remaining = maxBuildable – floorArea;
if (currentFar <= maxFar) {
resultStatus.className = "status-badge status-success";
resultStatus.innerText = "Compliant (Under Limit)";
resultRemaining.innerText = remaining.toLocaleString() + " sq ft";
} else {
resultStatus.className = "status-badge status-warning";
resultStatus.innerText = "Non-Compliant (Over Limit)";
resultRemaining.innerText = "0 sq ft (Exceeded by " + Math.abs(remaining).toLocaleString() + ")";
}
} else {
document.getElementById('complianceRow').style.display = 'none';
document.getElementById('remainingRow').style.display = 'none';
}
}