How the maths works
You can check every number this site gives you. Each coverage rate, waste factor and conversion factor is printed below with the formula it goes into and the source it came from, so when a bundle count has to stand up to your supplier — or to a customer at a kitchen table — you can see exactly where it came from and decide whether you agree with it.
Why there are amber boxes, and what gets refused
Where sources disagree, the disagreement is written down here rather than averaged away. The amber boxes below are those places, and there are more of them than a marketing page would admit to, which is rather the point: a figure you find a conflict in today is better than one you find on a roof. Nothing goes into the code without a source on this page — a material spec with an empty source field is refused outright.
Sources checked 24 October 2026. Retailer listings are labelled as such: they are what you can actually buy, but they are not manufacturer specifications, and several of them disagree on piece counts.
Geometry and the slope factor
The slope factor (pitch multiplier)
Plain Pythagoras. The sloped surface is the hypotenuse of the rise-and-run triangle, so the surface area above a horizontal plan area is that area multiplied by the hypotenuse-to-run ratio. A 6/12 roof carries 1.1180 sq ft of surface for every square foot of footprint; a 12/12 carries 1.4142, which is simply the square root of two.
Source: Roof Online, Roof Pitch Factor Table, Calculator & Explanation — roofonline.com/roof-pitch-factor. The test suite asserts that the formula reproduces all twelve rows of that published table to four decimal places. 9/12 is exact at 1.25, out of the 9-12-15 triangle, which is a pleasant arithmetic check that the implementation has not drifted.
| Pitch | Factor | Pitch | Factor |
|---|---|---|---|
| 1/12 | 1.0035 | 7/12 | 1.1577 |
| 2/12 | 1.0138 | 8/12 | 1.2019 |
| 3/12 | 1.0308 | 9/12 | 1.2500 |
| 4/12 | 1.0541 | 10/12 | 1.3017 |
| 5/12 | 1.0833 | 11/12 | 1.3566 |
| 6/12 | 1.1180 | 12/12 | 1.4142 |
planAreaSqFt and documented at every call site for that reason.The roofing square
One square is 100 sq ft. Universal in US roofing practice, and the only unit conversion on the site that needs no citation.
Material coverage figures
Each material is its own small calculation: the measured quantity, times one plus the waste allowance, divided by what one purchasable unit covers, rounded up to a whole unit.
Architectural shingles — GAF Timberline HDZ
33.33 sq ft per bundle, 3 bundles per square, 21 pieces per bundle. Source (retailer listing): The Home Depot, GAF Timberline HDZ … 33.33 sq. ft. per Bundle — homedepot.com/p/309755323, which also states 3 bundles per 100 sq ft.
Three-tab shingles
33.33 sq ft per bundle, 3 bundles per square, about 80 shingles per square. The 80-per-square figure follows from a 12 in × 36 in shingle at 5⅝ in exposure, and is attributed to Owens Corning estimating guidance — but quoted secondhand (see the nails entry below).
Underlayment
| Product | Coverage per roll | Source |
|---|---|---|
| Synthetic | 917 sq ft net per roll (1,000 sq ft gross) | Grip-Rite synthetic, 10-square roll: 48 in × 250 ft is 1,000 sq ft gross. At the required 4 in side lap each course exposes 44 of 48 in, so 1,000 × 44/48 = 917 sq ft net. The net figure is used, as it is for felt. |
| #15 felt (ASTM D226 Type I) | 400 sq ft net per roll (432 sq ft gross) | G.A.P. #15 listing: “4 squares per roll”. The net figure is after the standard 4 in head lap. |
| #30 felt | 200 sq ft net per roll (216 sq ft gross) | Calculator sources give 200 sq ft net; MSA's 36 in × 72 ft roll is 216 sq ft gross. |
The net figures are the ones used, because the head lap is already consumed by the time the roll is on the roof. Coverage varies by brand, so the figure lives in the spec table and can be changed per product line without touching any code.
Starter strip — GAF Pro-Start
120.33 lineal feet per bundle, counted after each sheet is split in half: 19 full sheets give 38 half pieces at 6.5 in × 38 in. Driven by eave linear feet. Source: GAF’s product and spec page — gaf.com — Pro-Start starter strip.
Hip & ridge cap — GAF Seal-A-Ridge
25 lineal feet per bundle, which is about 4 bundles per 100 lineal feet, with 45 ridge caps per bundle in the standard version. Driven by ridge plus hip linear feet. Source: the GAF data sheet — GAF Seal-A-Ridge data sheet (PDF), which states that 4 bundles cover approximately 100 lineal feet; corroborated by Lowe’s and Home Depot Canada listings at 25 lineal feet per bundle.
Nails
4 nails per shingle on standard slopes, 6 per shingle in high-wind zones and on mansards. For three-tab at 80 shingles per square that works out at 320 and 480 nails per square.
The 4-versus-6 rule is confirmed directly by IKO’s installation instructions — IKO, proper nailing of three-tab shingles (PDF) — and by the IRC minimum of four fasteners per strip shingle.
No pounds-per-square figure is used anywhere on the site. Nail weight depends on length and gauge, and none of the sources gives one reliably, so none is offered.
Drip edge
Sold in 10 ft lengths, driven by eave plus rake linear feet. The length is a property of the stock rather than a derived figure, so it is carried in the spec table and can be changed if your supplier sells 10 ft 6 in pieces.
Waste factors
| Roof complexity | Allowance | Why |
|---|---|---|
| Simple gable | 10% | Two planes, straight runs, little cutting. |
| Cut-up gable | 15% | Dormers, valleys and penetrations on a gable roof. |
| Simple hip | 15% | Every course is cut at both ends, even on a plain hip. |
| Cut-up hip | 18% | The hip cuts, plus the valleys and dormers on top of them. |
Markup against margin
No external source applies here: markup and margin are definitions, not measurements. They are also the single most expensive confusion in contracting, so they are separate inputs on the bid calculator and the result shows both.
A 50% markup on $1,000 of cost is a $1,500 price and a 33.3% margin. A 50% margin on the same cost is a $2,000 price and a 100% markup. A roofer who asks for 40% margin and is handed 40% markup prices every job a sixth under what they intended and earns 28.6%, not 40%. The test suite asserts exactly that case.
Money is held as whole cents throughout, never as floating point, so a subtotal always equals the sum of the lines printed above it.
What is still open
Honesty about sources is worth nothing if it stops at the figures that happen to be settled. These are the ones that are not.
- The architectural shingle piece count — 63 against 64 per square — is unreconciled. Nothing material depends on it.
- The three-tab shingles-per-square figure and the nails-per-square figures are secondhand. The code is built not to depend on either.
- The waste factors are estimating practice. They are defaults and inputs, not specifications.
- Coverage rates are per product line. Where the source is a retailer listing rather than a manufacturer specification, it is labelled above as a retailer listing.
- Dodo Payments’ licence-key documentation — docs.dodopayments.com — documents only the test host. The live host constant needs a one-line confirmation against the live dashboard before the first real purchase, and that is on the launch checklist rather than quietly assumed.
Found a figure that is wrong, or a source better than ours? That is the most useful thing you can send support@roofparrot.com, and it is the kind of message that changes the code. Write in via the support page.