How we estimate roof cost
One engine powers every calculator, material page and quote check on this site. This page documents what goes into it, what we are confident about, and what we are not.
Assumptions in engine
42
Source-verified
0
No assumption has passed source verification yet.
Pricing assumptions require source verification
The unit costs, regional index and adjustment multipliers behind this estimate are currently labeled DEMO / PLACEHOLDER. They exist so the calculation engine, methodology and source registry can be reviewed end to end. They are not published market prices, and every value is editable in the pricing database once verified data is loaded.
How a number becomes a production assumption
Researched figures land first in a staging table as raw observations, tied to the source they came from and marked unreviewed. The calculator never reads that table. A reviewer checks the scope, date and geography behind each observation and marks it verified, rejected or needing context. Only then can it be promoted into the production pricing tables as a deliberate, audit-logged edit. That is why finding a number in a report is not, by itself, enough for it to appear in an estimate.
What the engine does, step by step
01
Roof area, not house area
Roofs are larger than the floor they cover. If you give us a measured roof area we use it directly. Otherwise we derive a ground footprint from living area and story count, then multiply by a slope factor for your pitch. Everything downstream is priced per square foot of roof surface, and reported per roofing square (100 sq ft) as contractors quote it.
02
Material cost and installation labor, priced separately
Where a source gives us both a material-only rate and an installation-labor rate, we carry them as two figures and price them as two lines. Where a source only publishes a combined installed price, we show one "base roofing system" line and say so. We never split a combined price into material and labor using an assumed ratio — a guessed percentage would look like data and behave like an invention.
03
Geography: a labor signal, applied only to labor
Wage data such as the BLS occupational wage series tells us how roofing labor costs differ by region. It says nothing about what a bundle of shingles costs, and shingles do not get more expensive because local wages are high. So the regional index scales the installation-labor component only. If a material has no verified material/labor split yet, we apply no regional index at all to it and lower the confidence rating, rather than scaling material cost by somebody's wages.
04
Pitch, complexity, stories and access
Steeper roofs need staging, harnesses and slower work. Hips, valleys, dormers and multiple planes add cut waste and flashing labor. Height and difficult access add setup time. These are project-effort factors, so where components are split they apply to the labor side rather than to material supply. Each applies a multiplier band — not a single number — so uncertainty widens the range instead of hiding inside it.
05
Tear-off and disposal
Removing existing layers and hauling them away is real, separately-priced work that scales with layer count and material weight. If you do not know your layer count, we price the uncertainty rather than assuming the cheapest case.
06
Decking allowance
Rotten sheathing is the single most common change order in roofing. We include an allowance for the share of decking likely to be replaced, and we show it as its own line so you can compare it against the per-sheet rate in a contractor quote.
07
Flashing, ventilation and accessories
Chimney and wall flashing, pipe boots, ridge or intake ventilation, skylights, and optional gutter work are itemised. These are the line items most often left vague in a quote, which is why we price them separately instead of burying them in a square-foot rate.
08
No item charged twice
Some material rows already include tear-off, disposal, underlayment, flashing or ventilation inside their base price. Each row records what its price covers, and the engine skips any add-on that is already inside that scope, then lists what it skipped so you can see the base price is doing that work.
09
Range, not a single number
The output is a budget / typical / premium band plus a fair-price midpoint. A single number would imply a precision that roofing does not have: two competent contractors on the same roof legitimately differ on crew size, warranty, and material tier. These are estimate ranges, not contractor bids, and no bid is produced here.
Confidence levels
High
You supplied a measured roof area, a known pitch, a known layer count and a ZIP with a verified labor index.
Moderate
Most inputs are known, but at least one meaningful driver — pitch, layers, decking condition — was estimated.
Preliminary
Roof area was derived from living area, or several drivers are unknown. Treat the range as an orientation, not a budget.
Verified vs unverified assumptions
Every assumption row in our database carries a verified flag. A row is only marked verified once it is traceable to a named, dated source in the registry. Unverified rows are still used by the engine — the alternative is showing nothing — but any estimate that touches one is labeled on screen, on every page, without exception. We do not mark data verified because a build shipped.
What this is not
- It is not a contractor bid. No one has seen your roof.
- It is not a lead form. We do not require your contact details to show you a number.
- It is not an insurance settlement estimate, which uses different pricing databases and scopes.
- It does not include structural repair, full deck replacement, or code upgrades discovered after tear-off.