# Roof Shingle Calculator

> Estimates asphalt shingles from the roof's horizontal footprint area and pitch: the pitch factor √(1 + (rise/12)²) converts the footprint to sloped surface area, which is expressed in roofing squares (100 ft²), increased by a waste allowance and converted to bundles and underlayment rolls. Planning estimate only.

- Calculator id: `roof-shingles` · Category: Construction & Home (`construction`) · Tool name: `estimate_roof_shingles`
- Canonical page: https://tttkmbb.com/construction/roof-shingles · This document: https://tttkmbb.com/construction/roof-shingles.md · JSON definition: https://tttkmbb.com/construction/roof-shingles.json

## Purpose

Estimates asphalt shingles from the roof's horizontal footprint area and pitch: the pitch factor √(1 + (rise/12)²) converts the footprint to sloped surface area, which is expressed in roofing squares (100 ft²), increased by a waste allowance and converted to bundles and underlayment rolls. Planning estimate only.

**Use when:** You need the number of shingle bundles, squares or underlayment rolls to order for a pitched roof whose plan area and pitch (x:12 or degrees) are known.

**Do not use when:** You only need to convert the pitch or find a rafter length (use roof-pitch), or the roof is metal, tile or membrane sold by the sheet (divide roof_surface_area_ft2 by the panel coverage instead).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `roof_footprint_area` | number | ft² or m² | required | Horizontal (plan) area covered by the roof including eave overhangs, in ft² or m² (see area_unit); for a simple gable roof this is the building length × width plus overhangs. (> 0, max 1000000) |
| `area_unit` | enum: m2 \| ft2 |  | optional, default "ft2" | Unit of the area input; areas are reported in both m² and ft². |
| `pitch_rise_per_12` | number |  | optional, default 6 | Roof pitch as rise per 12 units of run (6 means 6:12); ignored when pitch_degrees is given. (min 0, max 24) |
| `pitch_degrees` | number | ° | optional | Roof angle from horizontal in degrees; overrides pitch_rise_per_12 when given. (min 0, max 85) |
| `waste_percent` | number | % | optional, default 10 | Extra material for cuts, breakage and offcuts, applied as a multiplier (1 + waste_percent/100). 10 % for simple gable roofs; 15 % for hip roofs, dormers and valleys. (min 0, max 50) |
| `bundles_per_square` | number |  | optional, default 3 | Bundles that cover one square (100 ft²): 3 for three-tab and most laminated (architectural) shingles, 4–5 for heavy designer shingles; printed on the bundle. (> 0, max 10) |
| `underlayment_coverage_ft2_per_roll` | number | ft² | optional, default 400 | Net coverage of one roll of underlayment in ft²: about 400 ft² (4 squares) for a #15 felt roll and for 4-square synthetic rolls, 200 ft² (2 squares) for #30 felt, 1,000 ft² (10 squares) for many synthetic rolls. (> 0, max 5000) |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `pitch_factor` | number |  | √(1 + (rise/12)²) = 1 / cos(roof angle): sloped area per unit of plan area. |
| `roof_angle_degrees` | number | ° | atan(rise / 12). |
| `roof_surface_area_ft2` | number | ft² | Footprint area × pitch_factor. |
| `roof_surface_area_m2` | number | m² | Same sloped area in square metres. |
| `squares` | number |  | roof_surface_area_ft2 / 100 (1 square = 100 ft² = 9.29 m²). |
| `squares_with_waste` | number |  | squares × (1 + waste_percent/100). |
| `bundles` | integer |  | ceil(squares_with_waste × bundles_per_square). |
| `underlayment_rolls` | integer |  | ceil(squares_with_waste × 100 / underlayment_coverage_ft2_per_roll). |
| `ridge_cap_note` | string |  | Reminder that hip and ridge cap shingles are estimated separately by linear length. |

## Formula

`pitch_factor = √(1 + (pitch_rise_per_12 / 12)²) (or 1 / cos(pitch_degrees)); roof_surface_area = roof_footprint_area × pitch_factor; squares = area_ft² / 100; squares_with_waste = squares × (1 + waste_percent/100); bundles = ceil(squares_with_waste × bundles_per_square); underlayment_rolls = ceil(squares_with_waste × 100 / underlayment_coverage_ft2_per_roll).`

The footprint is measured in plan, so the pitch factor (the rafter multiplier of roof-pitch) recovers the true sloped area of every plane at that pitch; starter strips, hip and ridge caps, drip edge, flashing and nails are not included. Planning estimate only; check quantities against the supplier's coverage figures and local code before ordering.

## Data Sources

- Wikipedia – Roof pitch — https://en.wikipedia.org/wiki/Roof_pitch (reference, retrieved 2026-09-24)
- Wikipedia – Asphalt shingle — https://en.wikipedia.org/wiki/Asphalt_shingle (reference, retrieved 2026-09-24)
- Wikipedia – Roof shingle — https://en.wikipedia.org/wiki/Roof_shingle (reference, retrieved 2026-09-24)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/roof-shingles?roof_footprint_area=…`
- `POST https://tttkmbb.com/api/v1/calculate/roof-shingles` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/roof-shingles · OpenAPI operationId `estimate_roof_shingles` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "roof-shingles", "inputs": {…}}`

## Example

- 1,500 ft² footprint, 6:12 pitch, 10 % waste, 3 bundles per square, 400 ft² rolls: inputs `{"roof_footprint_area":1500,"area_unit":"ft2","pitch_rise_per_12":6,"waste_percent":10,"bundles_per_square":3,"underlayment_coverage_ft2_per_roll":400}` → `{"pitch_factor":1.118,"roof_angle_degrees":26.57,"roof_surface_area_ft2":1677.1,"roof_surface_area_m2":155.8,"squares":16.77,"squares_with_waste":18.45,"bundles":56,"underlayment_rolls":5}`
- 140 m² footprint, 30° pitch, 15 % waste, 1,000 ft² synthetic rolls: inputs `{"roof_footprint_area":140,"area_unit":"m2","pitch_degrees":30,"waste_percent":15,"underlayment_coverage_ft2_per_roll":1000}` → `{"pitch_factor":1.1547,"roof_surface_area_m2":161.66,"roof_surface_area_ft2":1740.1,"squares":17.4,"squares_with_waste":20.01,"bundles":61,"underlayment_rolls":3}`

```
GET https://tttkmbb.com/api/v1/calculate/roof-shingles?roof_footprint_area=1500&area_unit=ft2&pitch_rise_per_12=6&waste_percent=10&bundles_per_square=3&underlayment_coverage_ft2_per_roll=400
```

## Limitations

You only need to convert the pitch or find a rafter length (use roof-pitch), or the roof is metal, tile or membrane sold by the sheet (divide roof_surface_area_ft2 by the panel coverage instead). The footprint is measured in plan, so the pitch factor (the rafter multiplier of roof-pitch) recovers the true sloped area of every plane at that pitch; starter strips, hip and ridge caps, drip edge, flashing and nails are not included. Planning estimate only; check quantities against the supplier's coverage figures and local code before ordering. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Do I measure the footprint or the sloped roof?**

Enter the horizontal footprint (building plan plus overhangs); the pitch factor converts it to sloped area. If you already measured the sloped area, enter it with pitch_rise_per_12 = 0.

**How many bundles are in a square?**

Three bundles per square is standard for three-tab and most laminated shingles (about 33 ft² per bundle); heavier designer shingles need 4–5, so check the bundle label.

**Why does the roll count use the waste figure?**

Underlayment is lapped 2–4 in horizontally and 6 in at end joints and is cut at hips and valleys, so the waste-inclusive area keeps the roll count conservative.

## Related

- [Roof Pitch Calculator](https://tttkmbb.com/construction/roof-pitch.md) — Convert the pitch and get the rafter multiplier.
- [Right Triangle Calculator](https://tttkmbb.com/geometry/right-triangle.md) — Sloped length of a roof plane from rise and run.
