# Roof shingle calculator

- Human page: https://happytails.ai/en/calculators/roof-shingle-calculator/
- Markdown: https://happytails.ai/en/calculators/roof-shingle-calculator.md
- Structured JSON: https://happytails.ai/agents/en/calculators/roof-shingle-calculator/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `roof-shingle-calculator` |
| Category | calculators |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Automatic updates after valid input or file selection. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Calculated on your device for roofs up to 1,000,000 m², waste up to 50% and edge lengths up to 10 km. Bundle coverage comes from your shingle wrapper.

### Inputs and settings

No free-text input is required. Use the file inputs and/or settings below.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `areaSource` | Roof area from | select | "Sloped roof area" | Allowed: Sloped roof area, Plan area and pitch |
| `areaUnit` | Area unit | select | "ft²" | Allowed: ft², m², yd² |
| `roofArea` | Sloped roof area | number | 2100 | min=0 step=any |
| `planArea` | Plan area including overhangs | number | 1800 | min=0 step=any |
| `pitchFormat` | Pitch entered as | select | "Rise per 12 run" | Allowed: Rise per 12 run, Angle in degrees, Percent slope |
| `pitch12` | Rise per 12 units of run | number | 6 | min=0 max=48 step=any |
| `pitchAngle` | Roof angle (degrees) | number | 30 | min=0 max=75 step=any |
| `pitchPercent` | Slope (%) | number | 50 | min=0 max=400 step=any |
| `waste` | Waste allowance (%) | number | 10 | min=0 max=50 step=any |
| `bundlesPerSquare` | Bundles per square | number | 3 | min=1 max=10 step=any |
| `lengthUnit` | Edge length unit | select | "ft" | Allowed: ft, m, yd, in, cm |
| `eaveLength` | Eave length for starter | number | 100 | min=0 step=any |
| `rakeLength` | Rake length for starter | number | 0 | min=0 step=any |
| `starterCoverage` | Starter coverage per bundle | number | 100 | min=0 step=any |
| `ridgeLength` | Ridge length | number | 40 | min=0 step=any |
| `hipLength` | Hip length | number | 0 | min=0 step=any |
| `capCoverage` | Ridge cap coverage per bundle | number | 35 | min=0 step=any |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

Roof and plan areas up to 1,000,000 m² (about 10.76 million ft²), waste from 0 to 50%, 1 to 10 bundles per square, edge lengths from 0 to 10 km and coverage per starter or cap bundle up to 1,000 m, up to 1 billion bundles. Pitch from 0 to 48 per 12, 0 to 75 degrees or 0 to 400%. Calculated on your device; download a JSON report and a results CSV.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "id": "roof-shingle-calculator",
  "category": "calculators",
  "built": true,
  "requirements": "Roof and plan areas up to 1,000,000 m² (about 10.76 million ft²), waste from 0 to 50%, 1 to 10 bundles per square, edge lengths from 0 to 10 km and coverage per starter or cap bundle up to 1,000 m, up to 1 billion bundles. Pitch from 0 to 48 per 12, 0 to 75 degrees or 0 to 400%. Calculated on your device; download a JSON report and a results CSV.",
  "implementation": {
    "fields": [
      {
        "key": "areaSource",
        "label": "Roof area from",
        "value": "Sloped roof area",
        "type": "select",
        "values": [
          "Sloped roof area",
          "Plan area and pitch"
        ]
      },
      {
        "key": "areaUnit",
        "label": "Area unit",
        "value": "ft²",
        "type": "select",
        "values": [
          "ft²",
          "m²",
          "yd²"
        ]
      },
      {
        "key": "roofArea",
        "label": "Sloped roof area",
        "value": 2100,
        "type": "number",
        "min": 0,
        "step": "any",
        "help": "Total surface of all roof planes, measured along the slope.",
        "showWhen": {
          "areaSource": [
            "Sloped roof area"
          ]
        }
      },
      {
        "key": "planArea",
        "label": "Plan area including overhangs",
        "value": 1800,
        "type": "number",
        "min": 0,
        "step": "any",
        "help": "Roof footprint seen from above, with overhangs. Every plane must share the pitch below.",
        "showWhen": {
          "areaSource": [
            "Plan area and pitch"
          ]
        }
      },
      {
        "key": "pitchFormat",
        "label": "Pitch entered as",
        "value": "Rise per 12 run",
        "type": "select",
        "values": [
          "Rise per 12 run",
          "Angle in degrees",
          "Percent slope"
        ],
        "showWhen": {
          "areaSource": [
            "Plan area and pitch"
          ]
        }
      },
      {
        "key": "pitch12",
        "label": "Rise per 12 units of run",
        "value": 6,
        "type": "number",
        "min": 0,
        "max": 48,
        "step": "any",
        "help": "6 means 6 units of rise for every 12 units of level run, a 6/12 roof. From 0 to 48.",
        "showWhen": {
          "areaSource": [
            "Plan area and pitch"
          ],
          "pitchFormat": [
            "Rise per 12 run"
          ]
        }
      },
      {
        "key": "pitchAngle",
        "label": "Roof angle (degrees)",
        "value": 30,
        "type": "number",
        "min": 0,
        "max": 75,
        "step": "any",
        "help": "Angle of the roof surface above level, from 0 to 75 degrees.",
        "showWhen": {
          "areaSource": [
            "Plan area and pitch"
          ],
          "pitchFormat": [
            "Angle in degrees"
          ]
        }
      },
      {
        "key": "pitchPercent",
        "label": "Slope (%)",
        "value": 50,
        "type": "number",
        "min": 0,
        "max": 400,
        "step": "any",
        "help": "Rise divided by run times 100, from 0 to 400.",
        "showWhen": {
          "areaSource": [
            "Plan area and pitch"
          ],
          "pitchFormat": [
            "Percent slope"
          ]
        }
      },
      {
        "key": "waste",
        "label": "Waste allowance (%)",
        "value": 10,
        "type": "number",
        "min": 0,
        "max": 50,
        "step": "any",
        "help": "Extra for cutting at rakes, hips and valleys and for damaged shingles. Enter 0 for none."
      },
      {
        "key": "bundlesPerSquare",
        "label": "Bundles per square",
        "value": 3,
        "type": "number",
        "min": 1,
        "max": 10,
        "step": "any",
        "help": "From the shingle wrapper. Three bundles per 100 ft² is common for three-tab and many laminated shingles; heavier shingles need more."
      },
      {
        "key": "lengthUnit",
        "label": "Edge length unit",
        "value": "ft",
        "type": "select",
        "values": [
          "ft",
          "m",
          "yd",
          "in",
          "cm"
        ]
      },
      {
        "key": "eaveLength",
        "label": "Eave length for starter",
        "value": 100,
        "type": "number",
        "min": 0,
        "step": "any",
        "help": "Total length of all eaves. Enter 0 to skip starter."
      },
      {
        "key": "rakeLength",
        "label": "Rake length for starter",
        "value": 0,
        "type": "number",
        "min": 0,
        "step": "any",
        "help": "Total rake length, only if your shingle maker calls for starter along the rakes. Enter 0 to skip."
      },
      {
        "key": "starterCoverage",
        "label": "Starter coverage per bundle",
        "value": 100,
        "type": "number",
        "min": 0,
        "step": "any",
        "help": "Linear coverage printed on the starter wrapper."
      },
      {
        "key": "ridgeLength",
        "label": "Ridge length",
        "value": 40,
        "type": "number",
        "min": 0,
        "step": "any",
        "help": "Total ridge length to cap. Enter 0 for none."
      },
      {
        "key": "hipLength",
        "label": "Hip length",
        "value": 0,
        "type": "number",
        "min": 0,
        "step": "any",
        "help": "Total length of all hips to cap. Enter 0 for none."
      },
      {
        "key": "capCoverage",
        "label": "Ridge cap coverage per bundle",
        "value": 35,
        "type": "number",
        "min": 0,
        "step": "any",
        "help": "Linear coverage printed on the cap wrapper. About 35 ft is common."
      }
    ],
    "registrationFamily": "roof-and-cladding",
    "input": false,
    "live": true,
    "presentation": "metrics",
    "note": "Calculated on your device for roofs up to 1,000,000 m², waste up to 50% and edge lengths up to 10 km. Bundle coverage comes from your shingle wrapper.",
    "experience": {
      "automatic": true,
      "single": true,
      "inputMaxLength": 1000000,
      "inputMode": "text",
      "label": "Roof and edge measurements",
      "placeholder": "Use the fields below",
      "help": "This calculator uses the measurement fields only. Results update as you type. Up to 1,000,000 characters.",
      "action": null
    },
    "mode": "automatic",
    "interactive": false
  },
  "execution": "Browser interface",
  "api": null,
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}
```

## Page guide

Estimate shingle bundles from your roof area, waste allowance and bundles per square, plus starter and ridge cap bundles from eave, rake, ridge and hip lengths.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

### How to use Roof shingle calculator

1. Enter the sloped roof area, or the plan area with the pitch.
2. Set the waste allowance and the bundles per square printed on the shingle wrapper.
3. Enter eave, rake, ridge and hip lengths with the starter and cap coverage per bundle.
4. Review squares and bundles, then download the JSON report or the CSV.

## Useful next steps

- [Roof pitch calculator](https://happytails.ai/en/calculators/roof-pitch-calculator/) ([Markdown](https://happytails.ai/en/calculators/roof-pitch-calculator.md))

- [Square footage](https://happytails.ai/en/calculators/square-footage/) ([Markdown](https://happytails.ai/en/calculators/square-footage.md))

- [Slope calculator](https://happytails.ai/en/calculators/slope-calculator/) ([Markdown](https://happytails.ai/en/calculators/slope-calculator.md))

## Squares and bundles

A square is 100 ft² of roof. Three bundles per square is most common for three-tab and many laminated shingles, and heavier shingles need four or five (Fine Homebuilding, Mike Guertin, How to Estimate Materials for Roofing Projects, checked 16 October 2026). The calculator adds your waste allowance, converts to squares and rounds bundles up: 2,100 ft² plus 10% is 23.1 squares, or 70 bundles at three per square.

### Starter and ridge cap

Starter runs along the eaves, and along the rakes only when your shingle maker calls for it. Hip and ridge cap is taken from the ridge and hip lengths; the same article puts a typical cap bundle at about 35 linear feet. Enter the coverage printed on your wrappers, because both vary by product.

### Plan area and pitch

If you only know the footprint, choose plan area and pitch. The sloped area is the plan area × √(1 + (rise ÷ run)²) (OpenStax Precalculus 2e, 5.4, checked 16 October 2026), which assumes every plane has the same pitch. Use the roof area calculator for mixed pitches.

### What is not included

Valley extras, underlayment, drip edge, flashing and nails are separate items. The tool does not check minimum slopes, wind ratings or local roofing rules. A square is 100 ft² (Wikipedia, Square (unit), checked 16 October 2026); conversions use NIST SP 811.
