{
  "id": "roofing-calculator",
  "version": "20.13.0",
  "name": "Roofing Material",
  "shortName": "Roofing Material",
  "description": "Estimate the required amount of roofing 'squares' and shingle bundles based on footprint area and roof pitch. Add editable USD material and labor prices and compare low, middle and high budget scenarios.",
  "category": "Home & Construction",
  "categorySlug": "home-construction",
  "keywords": [
    "roofing"
  ],
  "status": "live",
  "workStatus": "pending",
  "reviewStatus": "pending",
  "migrationStatus": "migrated",
  "migratedDate": "2026-09-10",
  "engine": "native",
  "creator": null,
  "reviewer": null,
  "quality": {
    "availability": "live",
    "technicalReviewRecord": "/reviews/roofing-calculator.json",
    "qualifiedReview": "pending",
    "qualifiedReviewer": null,
    "qualifiedReviewDate": null,
    "formulaVersion": "20.13.0",
    "referenceCoverage": "references-listed",
    "releaseTestScope": "Catalog and regression checks are not a professional formula audit; consult release evidence.",
    "historicalMetadataDate": "2026-08-18",
    "historicalMetadataNotice": "The imported date is not evidence of a completed human review."
  },
  "notice": "Planning quantities and user-entered USD costs, not a contractor quote, structural design or code approval. Default prices are zero (unpriced); enter your supplier and labor quotes. New changes await independent review.",
  "urls": {
    "page": "/us/roofing/",
    "definition": "/us/roofing/definition.json",
    "schema": "/us/roofing/schema.json",
    "llms": "/us/roofing/llms.txt",
    "legacyDefinition": "/us/roofing/definition.json"
  },
  "queryExample": "https://askcalculators.com/us/roofing/?area=1000&pitch=0&wastePercent=10&bundlesPerSquare=3&unitCost=120&laborCost=900&deliveryCost=80&costSpreadPercent=15",
  "queryParameters": {
    "unitSystem": {
      "label": "Dimension units",
      "type": "select",
      "required": false,
      "default": "imperial"
    },
    "area": {
      "label": "Footprint area (ft² / m²)",
      "type": "number",
      "required": false,
      "default": 2000
    },
    "pitch": {
      "label": "Roof Pitch (rise per 12ft)",
      "type": "number",
      "required": false,
      "default": 4
    },
    "wastePercent": {
      "label": "Purchasing allowance (%)",
      "type": "number",
      "required": false,
      "default": 10
    },
    "bundlesPerSquare": {
      "label": "Supplier bundles per roofing square",
      "type": "number",
      "required": false,
      "default": 3
    },
    "unitCost": {
      "label": "Material price (USD / roofing square (100 ft²))",
      "type": "money",
      "required": false,
      "default": 0
    },
    "laborCost": {
      "label": "Total labor allowance (USD)",
      "type": "money",
      "required": false,
      "default": 0
    },
    "deliveryCost": {
      "label": "Delivery allowance (USD)",
      "type": "money",
      "required": false,
      "default": 0
    },
    "costSpreadPercent": {
      "label": "Low/high variation around entered subtotal (%)",
      "type": "percent",
      "required": false,
      "default": 15
    }
  },
  "inputs": [
    {
      "id": "unitSystem",
      "label": "Dimension units",
      "type": "select",
      "defaultValue": "imperial",
      "options": [
        {
          "label": "US customary (ft, in)",
          "value": "imperial"
        },
        {
          "label": "Metric (m, cm)",
          "value": "metric"
        }
      ],
      "help": "Changing this selector converts dimensions already entered. Prices keep the purchasing unit printed beside each price."
    },
    {
      "id": "area",
      "label": "Footprint area (ft² / m²)",
      "type": "number",
      "defaultValue": 2000
    },
    {
      "id": "pitch",
      "label": "Roof Pitch (rise per 12ft)",
      "type": "number",
      "defaultValue": 4
    },
    {
      "id": "wastePercent",
      "label": "Purchasing allowance (%)",
      "type": "number",
      "defaultValue": 10,
      "min": 0,
      "step": 0.01,
      "max": 100
    },
    {
      "id": "bundlesPerSquare",
      "label": "Supplier bundles per roofing square",
      "type": "number",
      "defaultValue": 3,
      "min": 0,
      "step": 0.01
    },
    {
      "id": "unitCost",
      "label": "Material price (USD / roofing square (100 ft²))",
      "type": "money",
      "defaultValue": 0,
      "min": 0,
      "step": 0.01,
      "help": "Zero means unpriced. Use a current supplier quote; do not treat zero as free."
    },
    {
      "id": "laborCost",
      "label": "Total labor allowance (USD)",
      "type": "money",
      "defaultValue": 0,
      "min": 0,
      "step": 0.01
    },
    {
      "id": "deliveryCost",
      "label": "Delivery allowance (USD)",
      "type": "money",
      "defaultValue": 0,
      "min": 0,
      "step": 0.01
    },
    {
      "id": "costSpreadPercent",
      "label": "Low/high variation around entered subtotal (%)",
      "type": "percent",
      "defaultValue": 15,
      "min": 0,
      "max": 100,
      "step": 1,
      "help": "A user-adjustable planning scenario, not a researched local price range."
    }
  ],
  "outputs": [
    {
      "id": "squares",
      "label": "Roofing squares",
      "format": "number",
      "primary": true,
      "digits": 3
    },
    {
      "id": "bundles",
      "label": "Whole bundles",
      "format": "number"
    },
    {
      "id": "totalArea",
      "label": "Roof area with allowance (ft²)",
      "format": "number"
    },
    {
      "id": "squareMetres",
      "label": "Roof area with allowance (m²)",
      "format": "number"
    },
    {
      "id": "materialCost",
      "label": "Material cost",
      "format": "currency",
      "currency": "USD"
    },
    {
      "id": "laborCost",
      "label": "Labor allowance",
      "format": "currency",
      "currency": "USD"
    },
    {
      "id": "deliveryCost",
      "label": "Delivery allowance",
      "format": "currency",
      "currency": "USD"
    },
    {
      "id": "unitRate",
      "label": "Entered USD rate / roofing square (100 ft²)",
      "format": "currency",
      "currency": "USD"
    },
    {
      "id": "estimatedTotal",
      "label": "Entered subtotal",
      "format": "currency",
      "currency": "USD"
    },
    {
      "id": "costLow",
      "label": "Low budget scenario",
      "format": "currency",
      "currency": "USD"
    },
    {
      "id": "costMid",
      "label": "Middle budget scenario",
      "format": "currency",
      "currency": "USD"
    },
    {
      "id": "costHigh",
      "label": "High budget scenario",
      "format": "currency",
      "currency": "USD"
    },
    {
      "id": "pricingStatus",
      "label": "Pricing status",
      "format": "text"
    }
  ],
  "formula": {
    "expression": "Roof area = footprint area × pitch factor; required squares = roof area × waste factor ÷ 100 square feet.; material = unrounded purchase quantity × entered unit price; middle = material + labor + delivery; low/high = middle × (1 ∓ variation/100)"
  },
  "examples": [
    {
      "label": "Illustrative USD purchasing scenario",
      "inputs": {
        "area": 1000,
        "pitch": 0,
        "wastePercent": 10,
        "bundlesPerSquare": 3,
        "unitCost": 120,
        "laborCost": 900,
        "deliveryCost": 80,
        "costSpreadPercent": 15
      }
    }
  ],
  "sources": [
    {
      "label": "NIST SI conversion factors — accessed 10 September 2026",
      "url": "https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors"
    },
    {
      "label": "GAF manufacturer shingle specifications — accessed 10 September 2026",
      "url": "https://www.gaf.com/en-us/roofing-materials/residential-roofing-materials/shingles"
    }
  ],
  "publicSlug": "roofing",
  "namespace": "us",
  "countries": [
    "us",
    "ca",
    "uk",
    "ie"
  ]
}
