{
  "id": "roofing",
  "version": "46b0c77f2e77",
  "status": "published",
  "name": "Roofing Calculator",
  "question": "How much roofing should I buy?",
  "summary": "Computes a roof’s sloped area from its footprint and pitch, the roofing squares (100 ft² each) with an extra share for waste, and the bundles of shingles to buy.",
  "category": "construction",
  "subcategory": "roofing",
  "url": "https://www.acalculator.org/construction/roofing-calculator",
  "markdown": "https://www.acalculator.org/construction/roofing-calculator.md",
  "kind": "function",
  "method": "Roof area = footprint length × width × √(144 + pitch²) ÷ 12; squares = roof area in ft² × (1 + extra ÷ 100) ÷ 100; bundles = squares × bundles per square, rounded up.",
  "assumptions": [
    "Every plane of the roof has the same pitch, so the sloped area is the footprint times one slope factor, for a gable or a hip roof.",
    "The footprint is measured level from above and includes the overhangs.",
    "Extra for waste is 10% by default, for cuts at hips, valleys and rakes and for the starter course and ridge caps.",
    "A square is 100 ft² of roof; the bundles per square come from the shingle maker (3 by default)."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "l": {
        "title": "Footprint length",
        "description": "The length of the roof seen from above, including the overhangs.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "exclusiveMinimum": 0,
        "maximum": 1000
      },
      "w": {
        "title": "Footprint width",
        "description": "The width of the roof seen from above, including the overhangs.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "exclusiveMinimum": 0,
        "maximum": 1000
      },
      "pitch": {
        "title": "Pitch (rise in 12)",
        "description": "The rise of the roof for every 12 units of run: 6 for a 6/12 roof.",
        "type": "number",
        "minimum": 0,
        "maximum": 24
      },
      "extra": {
        "title": "Extra for waste",
        "description": "Roofing to add, in percent, for cuts at hips, valleys, rakes and the starter course.",
        "type": "number",
        "x-unit": "percent",
        "minimum": 0,
        "maximum": 100
      },
      "bps": {
        "title": "Bundles per square",
        "description": "How many bundles of shingles cover one square (100 ft²), as printed on the bundle; often 3.",
        "type": "integer",
        "minimum": 1,
        "maximum": 10
      }
    }
  },
  "outputs": {
    "squares": {
      "label": "Roofing squares",
      "description": "The roof area with the extra, in squares of 100 square feet.",
      "format": "number"
    },
    "orderMeters": {
      "label": "Roof area with the extra, m²",
      "description": "The sloped area of the roof with the extra, in m².",
      "format": "number"
    },
    "bundles": {
      "label": "Bundles of shingles",
      "description": "Squares × bundles per square, rounded up to whole bundles.",
      "format": "integer"
    },
    "squareFeet": {
      "label": "Roof area, ft²",
      "description": "The sloped area of the roof, before the extra.",
      "format": "number"
    },
    "squareMeters": {
      "label": "Roof area, m²",
      "description": "The sloped area of the roof in square metres, before the extra.",
      "format": "number"
    },
    "factor": {
      "label": "Slope factor",
      "description": "The sloped area for each unit of footprint: √(144 + pitch²) ÷ 12.",
      "format": "number"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "l": 12.192,
      "w": 9.144,
      "pitch": 6,
      "extra": 10,
      "bps": 3
    },
    "outputs": {
      "squares": 14.758048651498612,
      "orderMeters": 137.10675841921218,
      "bundles": 45,
      "squareFeet": 1341.6407864998737,
      "squareMeters": 124.64250765382924,
      "factor": 1.118033988749895
    },
    "text": "The roof is 1,341.64 ft² at this pitch, 14.76 squares with the extra; bundles to buy: 45."
  },
  "examples": [
    {
      "given": {
        "l": 12.192,
        "w": 9.144,
        "pitch": 6,
        "extra": 10,
        "bps": 3
      },
      "expect": {
        "factor": 1.118033988749895,
        "squareFeet": 1341.640786499874,
        "squares": 14.758048651498614,
        "bps": 45
      },
      "source": "ARMA Residential Asphalt Roofing Manual (a square is 100 ft² of roof); hand calculation in content.mdx: √(144 + 36) ÷ 12 = 1.1180; 1,200 × 1.1180 = 1,341.64 ft² × 1.1 ÷ 100 = 14.76 squares × 3 = 44.27, so 45 bundles"
    },
    {
      "given": {
        "l": 10.972800000000001,
        "w": 7.315200000000001,
        "pitch": 5,
        "extra": 0,
        "bps": 3
      },
      "expect": {
        "factor": 1.0833333333333333,
        "squareFeet": 936,
        "squares": 9.36,
        "bps": 29
      },
      "source": "Pythagorean theorem, a 5-12-13 right triangle (OpenStax, Prealgebra 2e, §9.3); hand calculation in content.mdx: 864 × 13 ÷ 12 = 936 ft² = 9.36 squares × 3 = 28.08, so 29 bundles"
    },
    {
      "given": {
        "l": 12.192,
        "w": 6.096,
        "pitch": 9,
        "extra": 0,
        "bps": 3
      },
      "expect": {
        "factor": 1.25,
        "squareFeet": 1000,
        "squares": 10,
        "bps": 30
      },
      "source": "Pythagorean theorem, a 9-12-15 right triangle (OpenStax, Prealgebra 2e, §9.3); ARMA (1 square = 100 ft²); hand calculation in content.mdx: 800 × 15 ÷ 12 = 1,000 ft² = 10 squares × 3 = 30 bundles"
    },
    {
      "given": {
        "l": 10,
        "w": 8,
        "pitch": 6,
        "extra": 10,
        "bps": 3
      },
      "expect": {
        "squareMeters": 89.44271909999159,
        "squares": 10.590287574011654,
        "bps": 32
      },
      "source": "NIST Handbook 44, Appendix C (1 ft² = 0.09290304 m²); hand calculation in content.mdx: 80 × 1.1180 = 89.44 m² = 962.75 ft² × 1.1 ÷ 100 = 10.59 squares"
    }
  ],
  "sources": [
    "Asphalt Roofing Manufacturers Association (ARMA), Residential Asphalt Roofing Manual: Design and Application Methods, glossary: a square is 100 ft² of roof area. https://www.asphaltroofing.org",
    "International Code Council, 2021 International Residential Code, section R905.2.2 Slope: asphalt shingles on roof slopes of two units vertical in 12 units horizontal or more. https://codes.iccsafe.org/content/IRC2021P2/chapter-9-roof-assemblies",
    "OpenStax, Prealgebra 2e, §9.3 Use Properties of Angles, Triangles, and the Pythagorean Theorem. https://openstax.org/books/prealgebra-2e/pages/9-3-use-properties-of-angles-triangles-and-the-pythagorean-theorem",
    "NIST Handbook 44 (2024), Appendix C, General Tables of Units of Measurement: 1 ft = 0.3048 m; 1 ft² = 0.09290304 m². https://www.nist.gov/pml/owm/nist-handbook-44-current-edition"
  ],
  "related": [
    "roof-pitch",
    "square-footage"
  ],
  "changelog": [
    {
      "date": "2026-09-30",
      "note": "New output: the roof area with the extra in m², the headline in Metric; the answer names m² in Metric."
    }
  ]
}
