{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://askcalculators.com/us/roofing/schema.json",
  "title": "Roofing Material inputs",
  "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.",
  "type": "object",
  "properties": {
    "unitSystem": {
      "title": "Dimension units",
      "type": "string",
      "description": "Changing this selector converts dimensions already entered. Prices keep the purchasing unit printed beside each price.",
      "default": "imperial",
      "enum": [
        "imperial",
        "metric"
      ],
      "x-optionLabels": {
        "imperial": "US customary (ft, in)",
        "metric": "Metric (m, cm)"
      }
    },
    "area": {
      "title": "Footprint area (ft² / m²)",
      "type": "number",
      "default": 2000
    },
    "pitch": {
      "title": "Roof Pitch (rise per 12ft)",
      "type": "number",
      "default": 4
    },
    "wastePercent": {
      "title": "Purchasing allowance (%)",
      "type": "number",
      "default": 10,
      "minimum": 0,
      "maximum": 100,
      "x-step": 0.01
    },
    "bundlesPerSquare": {
      "title": "Supplier bundles per roofing square",
      "type": "number",
      "default": 3,
      "minimum": 0,
      "x-step": 0.01
    },
    "unitCost": {
      "title": "Material price (USD / roofing square (100 ft²))",
      "type": "number",
      "description": "Zero means unpriced. Use a current supplier quote; do not treat zero as free.",
      "default": 0,
      "minimum": 0,
      "x-step": 0.01,
      "x-unit": "currency"
    },
    "laborCost": {
      "title": "Total labor allowance (USD)",
      "type": "number",
      "default": 0,
      "minimum": 0,
      "x-step": 0.01,
      "x-unit": "currency"
    },
    "deliveryCost": {
      "title": "Delivery allowance (USD)",
      "type": "number",
      "default": 0,
      "minimum": 0,
      "x-step": 0.01,
      "x-unit": "currency"
    },
    "costSpreadPercent": {
      "title": "Low/high variation around entered subtotal (%)",
      "type": "number",
      "description": "A user-adjustable planning scenario, not a researched local price range.",
      "default": 15,
      "minimum": 0,
      "maximum": 100,
      "x-step": 1,
      "multipleOf": 1,
      "x-unit": "percent"
    }
  },
  "required": [],
  "additionalProperties": false,
  "x-askcalculators": {
    "version": "20.13.0",
    "calculatorUrl": "https://askcalculators.com/us/roofing/",
    "queryExample": "https://askcalculators.com/us/roofing/?area=1000&pitch=0&wastePercent=10&bundlesPerSquare=3&unitCost=120&laborCost=900&deliveryCost=80&costSpreadPercent=15",
    "migrationStatus": "migrated",
    "reviewStatus": "pending",
    "pageStatus": "live",
    "workStatus": "pending",
    "migratedDate": "2026-09-10",
    "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)"
    },
    "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."
    },
    "outputs": {
      "squares": {
        "title": "Roofing squares",
        "type": "number",
        "x-format": "number",
        "x-digits": 3,
        "x-primary": true
      },
      "bundles": {
        "title": "Whole bundles",
        "type": "number",
        "x-format": "number"
      },
      "totalArea": {
        "title": "Roof area with allowance (ft²)",
        "type": "number",
        "x-format": "number"
      },
      "squareMetres": {
        "title": "Roof area with allowance (m²)",
        "type": "number",
        "x-format": "number"
      },
      "materialCost": {
        "title": "Material cost",
        "type": "number",
        "x-format": "currency",
        "x-currency": "USD"
      },
      "laborCost": {
        "title": "Labor allowance",
        "type": "number",
        "x-format": "currency",
        "x-currency": "USD"
      },
      "deliveryCost": {
        "title": "Delivery allowance",
        "type": "number",
        "x-format": "currency",
        "x-currency": "USD"
      },
      "unitRate": {
        "title": "Entered USD rate / roofing square (100 ft²)",
        "type": "number",
        "x-format": "currency",
        "x-currency": "USD"
      },
      "estimatedTotal": {
        "title": "Entered subtotal",
        "type": "number",
        "x-format": "currency",
        "x-currency": "USD"
      },
      "costLow": {
        "title": "Low budget scenario",
        "type": "number",
        "x-format": "currency",
        "x-currency": "USD"
      },
      "costMid": {
        "title": "Middle budget scenario",
        "type": "number",
        "x-format": "currency",
        "x-currency": "USD"
      },
      "costHigh": {
        "title": "High budget scenario",
        "type": "number",
        "x-format": "currency",
        "x-currency": "USD"
      },
      "pricingStatus": {
        "title": "Pricing status",
        "type": "string",
        "x-format": "text"
      }
    }
  }
}
