Calculating Shingles

Roofing Shingle Calculator

Estimate the number of squares and bundles required for your roofing project.

Flat (0/12) Low Pitch (2/12) Low Pitch (4/12) Medium Pitch (6/12) Medium Pitch (8/12) Steep Pitch (10/12) Steep Pitch (12/12)

Calculation Results

Total Roof Area: 0 sq ft

Roofing Squares: 0

Bundles Needed: 0

Total with Waste: 0 bundles

How to Calculate Shingles for Your Roof

Estimating roofing materials correctly is the difference between a smooth renovation and multiple trips to the hardware store. To calculate shingles, you must understand three key metrics: the total area of your roof, the pitch factor, and the concept of "squares."

1. Measure Your Roof Area

The base calculation starts with the footprint of your roof. For a simple gable roof, you multiply the length of each section by its width. However, roofs are rarely flat. This is where the Pitch Factor comes in. A steeper roof has more surface area than a flat roof covering the same horizontal footprint.

2. Understanding Roofing "Squares"

In the roofing industry, shingles are measured in "squares." One square is equal to 100 square feet of roof area. Most standard three-tab or architectural shingles are sold in bundles, where 3 bundles equal 1 square. This means each bundle typically covers roughly 33.3 square feet.

3. Accounting for Waste

You cannot buy the exact amount of shingles needed for the area. You must account for waste caused by cutting shingles for valleys, hips, and rakes.

  • Simple Gable Roof: Add 10% for waste.
  • Complex Hip Roof: Add 15% to 20% for waste.

The Calculation Formula

Total Bundles = ((Length × Width × Pitch Factor) / 33.3) + Waste %

Example Calculation

If you have a roof footprint of 1,000 square feet and a medium pitch (6/12 slope, factor of 1.08):

  1. Adjusted Area: 1,000 × 1.08 = 1,080 sq ft.
  2. Number of Squares: 1,080 / 100 = 10.8 squares.
  3. Bundles (at 3/sq): 10.8 × 3 = 32.4 bundles.
  4. With 10% Waste: 32.4 × 1.10 = 35.64. Round up to 36 bundles.
function calculateShingles() { var length = parseFloat(document.getElementById('roofLength').value); var width = parseFloat(document.getElementById('roofWidth').value); var pitch = parseFloat(document.getElementById('roofPitch').value); var waste = parseFloat(document.getElementById('wastePercent').value); var coverage = parseFloat(document.getElementById('bundleCoverage').value); if (isNaN(length) || isNaN(width) || isNaN(pitch) || isNaN(waste) || isNaN(coverage) || length <= 0 || width <= 0) { alert("Please enter valid positive numbers for all fields."); return; } // Calculation Logic var baseArea = length * width; var adjustedArea = baseArea * pitch; var squares = adjustedArea / 100; var bundlesNeeded = adjustedArea / coverage; var wasteAmount = bundlesNeeded * (waste / 100); var totalBundles = bundlesNeeded + wasteAmount; // Update UI document.getElementById('resTotalArea').innerText = adjustedArea.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById('resSquares').innerText = squares.toFixed(2); document.getElementById('resBundles').innerText = Math.ceil(totalBundles); document.getElementById('resTotalBundles').innerText = totalBundles.toFixed(2); document.getElementById('resultsArea').style.display = 'block'; }

Leave a Comment