Measure the longest horizontal dimension of your roof section.
Measure the longest vertical dimension of your roof section.
A factor accounting for roof pitch. Common values: 1.0 for flat, 1.15 for 4/12 pitch, 1.3 for 9/12 pitch. Consult your roofing professional for exact values.
Percentage for cuts, waste, and potential breakage. Recommended: 10-15%.
Understanding How to Calculate Roof Shingles
Calculating the number of shingles required for a roofing project is a crucial step in ensuring you have enough material without over-ordering significantly. This process involves determining the total roof area and then accounting for waste and packaging.
Key Measurements:
Roof Length & Width: These are the primary dimensions of each roof plane. For complex roofs with multiple slopes and gables, you'll need to measure each section individually and sum their areas.
Roof Pitch / Slope Factor: Roofs are not flat; they have a pitch. A steeper pitch means you need more shingles to cover the same horizontal footprint than a flatter roof. The Slope Factor is a multiplier used to adjust for this. For example, a 4/12 pitch (meaning the roof rises 4 inches for every 12 inches of horizontal run) typically has a slope factor of around 1.15. A 9/12 pitch might have a factor of 1.3. Flat roofs (0/12 pitch) have a factor of 1.0. It's best to get precise values from a roofing professional or use standardized charts for common pitches.
Waste Percentage: Roofing involves cutting shingles to fit edges, valleys, ridges, and around vents. There's also a natural amount of breakage during installation. Adding a waste factor (typically 10-15%) ensures you have enough to complete the job.
The Calculation Formula:
The fundamental steps are:
Calculate the Actual Roof Area:
Actual Roof Area = (Roof Length × Roof Width) × Slope Factor
Add Waste:
Total Shingles Area Needed = Actual Roof Area × (1 + (Waste Percentage / 100))
Convert to Shingles:
Roofing shingles are typically sold in bundles. A standard architectural shingle bundle covers approximately 33.3 square feet (or 3 bundles per "square" of roofing, where a "square" is 100 square feet). Therefore, to find the number of bundles:
Number of Bundles = Total Shingles Area Needed / 33.3 (sq ft per bundle)
You'll want to round this number UP to the nearest whole bundle.
Example:
Let's calculate shingles for a roof section with the following:
Roof Length: 40 feet
Roof Width: 30 feet
Slope Factor: 1.15 (for a common pitch)
Waste Percentage: 10%
Step 1: Actual Roof Area
40 ft × 30 ft = 1200 sq ft
1200 sq ft × 1.15 (Slope Factor) = 1380 sq ft
Step 2: Total Shingles Area Needed (with waste)
1380 sq ft × (1 + (10 / 100)) = 1380 sq ft × 1.10 = 1518 sq ft
Step 3: Number of Bundles
1518 sq ft / 33.3 sq ft/bundle ≈ 45.59 bundles
Since you can't buy partial bundles, you would round up and purchase 46 bundles of shingles.
Important Considerations:
Complex Roofs: For roofs with multiple planes, valleys, hips, dormers, and skylights, break down each section and calculate its shingle needs separately. Summing these up will give you a more accurate total.
Shingle Type: While architectural shingles are standard, other types might have different coverage per bundle. Always check the manufacturer's specifications.
Manufacturer Guidelines: Some manufacturers have specific installation instructions and waste recommendations that should be followed.
Professional Advice: When in doubt, consult with experienced roofing contractors. They can provide precise measurements and material estimates.
function calculateShingles() {
var roofLength = parseFloat(document.getElementById("roofLength").value);
var roofWidth = parseFloat(document.getElementById("roofWidth").value);
var slopeFactor = parseFloat(document.getElementById("slopeFactor").value);
var wasteFactor = parseFloat(document.getElementById("wasteFactor").value);
var resultDiv = document.getElementById("result");
resultDiv.innerHTML = ""; // Clear previous results
if (isNaN(roofLength) || roofLength <= 0 ||
isNaN(roofWidth) || roofWidth <= 0 ||
isNaN(slopeFactor) || slopeFactor <= 0 ||
isNaN(wasteFactor) || wasteFactor < 0) {
resultDiv.innerHTML = "Please enter valid positive numbers for all fields.";
return;
}
// Constants for standard shingle coverage
var sqFtPerBundle = 33.3; // Standard coverage for architectural shingles
// Calculate actual roof area
var actualRoofArea = roofLength * roofWidth * slopeFactor;
// Calculate total area needed including waste
var totalShinglesAreaNeeded = actualRoofArea * (1 + (wasteFactor / 100));
// Calculate number of bundles, round up to nearest whole bundle
var numberOfBundles = Math.ceil(totalShinglesAreaNeeded / sqFtPerBundle);
resultDiv.innerHTML = "