How the estimate is built
An estimate you cannot argue with is worthless. This page describes exactly how the number is produced, which parts are measured, which are modelled, and where the model is weakest. If something here looks wrong, it probably is — and you now know enough to say so.
In short
- 1Measure the roof, not the houseYour floor area is not your roof area. We derive the real sloped surface from the footprint and the pitch.
- 2Price the materials it needsPer square, for your material, including the waste a cut-up roofline creates.
- 3Add the crew, at local wagesHours for the install, the tear-off and the detail work, at the wage rates published for your metro.
- 4Add the real cost of a real contractorDisposal, equipment, permits, and the overhead and profit a licensed, insured, warrantied business has to carry.
- 5Say how sure we areThe range widens where the data is thin, and the confidence score falls rather than pretending.
That is the whole model. Everything below is the detail: the exact formulas, the factor table live from the database, how the range is combined, and where the model is weakest.
How reliable is this?
Updated as data lands
- Labour
- Government data
- Materials
- Partly observed
- Local coverage
- 17 cities
- Geometry
- Exact
Bureau of Labor Statistics wage release for May 2025, occupation 47-2181 (roofers), across 15 metro areas.
2 of 24 material rows come from observed prices; the rest are modelled.
Metro-level pricing in 15 markets and written local guidance for 17 cities. Anywhere else falls back to national figures, and the confidence score says so.
Pitch multipliers, roof area and material quantities are arithmetic, not estimates.
About 65% of a typical re-roof is still priced from modelled rows, so every estimate is capped at a confidence of 60 until that changes. We would rather show you that than a confident-looking number we cannot stand behind. Sources and licences
Step 1
Geometry: from what you know to roofing squares
Roofers price per square - 100 square feet of roof surface. Almost nobody knows their roof area, so we derive it.
footprint = house area / number of storeys roof plan area = footprint x 1.08 (eaves and overhangs) roof surface = roof plan area x pitch factor squares = roof surface / 100 material qty = squares x waste factor (7% to 20% by complexity)
The pitch factor is exact geometry, not an estimate: sqrt(1 + (rise/12)^2). A 6:12 roof has 11.8% more surface than its footprint; a 12:12 roof has 41.4% more. This is the one part of the model that is simply true, and it is why pitch matters so much to your price.
Step 2
Components, priced separately
Every cost is built from a quantity we derive and a unit price we look up. Nothing is a percentage of a made-up total.
Materials
Covering, underlayment, starter and ridge, drip edge, flashing, ventilation, decking allowance. Quantity is squares x waste; price comes from the pricing table for that material.
Labour
Install hours per square by material, plus tear-off hours scaled by the weight of what is coming off, plus detail and dry-in hours. Then multiplied by pitch, storeys, roof shape and access.
Equipment
Roll-off containers, sized from the calculated debris tonnage rather than assumed.
Disposal
Tear-off tonnage = squares x installed weight per square x layers, times the local tipping fee.
Permits
A local allowance. This is the weakest number in the model and the easiest to fix - published fee schedules are exact and jurisdiction-specific.
Overhead and profit
Applied to the direct cost. A licensed, insured contractor carrying warranty reserve, supervision, vehicles and office cost has to charge this. It is not a negotiating margin.
Step 3
How the range is combined
This is where most cost calculators quietly mislead people.
Every unit price has a low, a median and a high. The naive way to build a total range is to add all the lows together and all the highs together. That describes a job where the shingles, the labour, the dumpster, the tipping fee and the permit all came in at their best case simultaneously — and then the same job where they all came in at their worst. Neither job exists.
We combine component uncertainties in quadrature instead: the total deviation is the square root of the sum of the squared component deviations. That assumes the components are partly independent, which is much closer to reality, and it produces a range roughly 35 to 45% narrower than the naive sum. Both numbers are shown in the line-item table so you can see the difference.
Overhead and profit is then applied at three levels — lean, typical, and premium-or-constrained-market — which is where most of the remaining spread comes from.
Step 4
Geography: the fallback chain
Local prices are the whole point, so the model is explicit about how local it actually managed to be.
Every price lookup walks this chain and stops at the first level that has data:
The level that answered is recorded and shown to you, and it feeds the confidence score directly. A ZIP we have never seen still returns an estimate — from national figures, with the score reduced and the reason stated. That is the honest behaviour: refusing to answer helps nobody, and pretending to be local when you are not is worse.
Step 5
The confidence score
Out of 100, and it is designed to be able to fall.
| Component | Max | What earns it |
|---|---|---|
| Local data coverage | 32 | ZIP-level pricing earns 32; city 27; metro 21; state 14; national 9. |
| Data recency | 20 | Full marks within three months of the effective date, falling to 2 beyond two years. |
| Project detail supplied | 22 | Proportional to how many of the thirteen optional inputs you actually gave us. |
| Source quality | 16 | Weighted by the reliability of each source that fed the estimate. |
| Range tightness | 10 | A tighter modelled spread relative to the typical price scores higher. |
The cap. If any price in an estimate is sample data, the score is capped at 60 regardless of what it would otherwise have earned, and the reason is shown alongside it. If any price is modelled rather than directly observed, the cap is 78. Today, every estimate on this site hits the first cap. When real feeds are connected, scores will rise on their own — and until then you should treat these numbers as directional.
Every assumption, in the open
The factor table, live from the database
These 49 multipliers and 67 price rows are what the engine actually reads. Nothing multiplicative is written into the application code, so an administrator can retune the model without a deploy.
pitch
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| pitch.flat.area | 1.000 | all | verified | Roof surface equals footprint. Exact geometry, not an estimate. |
| pitch.low.area | 1.042 | all | verified | sqrt(1 + (3.5/12)^2) = 1.0417. Exact geometry for a 3.5:12 representative pitch, the midpoint of the band. Previously stored as 1.054, which is the 4:12 value and did not match the formula stated beside it - a row marked verified has to be reproducible from its own methodology. |
| pitch.moderate.area | 1.118 | all | verified | sqrt(1 + (6/12)^2). Exact geometry for a 6:12 representative pitch. |
| pitch.steep.area | 1.250 | all | verified | sqrt(1 + (9/12)^2). Exact geometry for a 9:12 representative pitch. |
| pitch.very-steep.area | 1.414 | all | verified | sqrt(1 + (12/12)^2). Exact geometry for a 12:12 representative pitch. |
| pitch.flat.labor | 1.100 | labor | sample | Low-slope work uses a different system and detailing, so hours per square rise even though area does not. |
| pitch.low.labor | 1.000 | labor | sample | Baseline walkable pitch. |
| pitch.moderate.labor | 1.050 | labor | sample | Still walkable; modest productivity loss. |
| pitch.steep.labor | 1.280 | labor | sample | Roof jacks, staging and fall protection are required and productivity drops sharply. |
| pitch.very-steep.labor | 1.500 | labor | sample | Full staging required. This is the single largest labour driver on a residential roof. |
stories
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| stories.1.labor | 1.000 | labor | sample | Baseline. Ground-level material handling. |
| stories.2.labor | 1.100 | labor | sample | Longer carries, more setup, higher fall exposure. |
| stories.3.labor | 1.240 | labor | sample | Often needs a lift or conveyor; material handling dominates. |
complexity
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| complexity.simple.labor | 1.000 | labor | sample | Gable or hip with two to four planes and no dormers. |
| complexity.moderate.labor | 1.120 | labor | sample | Five to eight planes, some valleys, one or two dormers. |
| complexity.complex.labor | 1.280 | labor | sample | Nine or more planes, multiple valleys and dormers, significant flashing. |
| complexity.very-complex.labor | 1.450 | labor | sample | Cut-up custom roof with turrets, many intersections and extensive detail work. |
| complexity.simple.waste | 1.070 | material | sample | Standard cutting waste on a simple roof. |
| complexity.moderate.waste | 1.100 | material | sample | Valleys and hips increase offcut waste. |
| complexity.complex.waste | 1.150 | material | sample | Many intersections produce significantly more waste. |
| complexity.very-complex.waste | 1.200 | material | sample | Highly cut-up roofs routinely exceed 20 percent waste. |
access
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| access.easy.labor | 1.000 | labor | sample | Driveway staging, container next to the house, clear perimeter. |
| access.moderate.labor | 1.070 | labor | sample | Some carrying distance, partial obstruction, restricted container placement. |
| access.difficult.labor | 1.180 | labor | sample | Hillside, narrow street, no on-site staging, or heavy tree cover. |
tearoff
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| tearoff.hours_per_square_per_layer | 0.850 | labor | sample | Base crew hours to strip one layer from one square. Scaled by the existing material's weight in the engine. |
labor
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| labor.detail_hours_per_square | 0.350 | labor | sample | Crew hours per square for underlayment, flashing, valleys and edge detail, over and above the covering install itself. |
| labor.tile_relay_handling | 1.150 | labor | sample | Every tile is handled twice on a lift-and-relay, so install hours rise even though no new tile is laid. |
| labor.burden_multiplier | 1.800 | labor | modeled | Applied to a published hourly wage to reach an employer's fully burdened crew cost. Excludes profit. |
| labor.burden_multiplier | 1.680 | labor | modeled | Texas is the one state that does not require most private employers to carry workers' compensation, so the burden on a published wage is typically lower. Verify against the employer's actual coverage. |
| labor.burden_multiplier | 1.950 | labor | modeled | High workers' compensation rates for roofing classifications plus state payroll costs. |
| labor.burden_multiplier | 1.900 | labor | modeled | Roofing carries one of the most expensive workers' compensation classifications in the state. |
| labor.burden_multiplier | 1.780 | labor | modeled | Modelled from typical roofing workers' compensation and payroll burden. |
| labor.burden_multiplier | 1.820 | labor | modeled | Modelled from typical roofing workers' compensation and payroll burden. |
material
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| material.tile_breakage_allowance | 0.120 | material | sample | Share of tile expected to break during a lift-and-relay and need replacing. Ask each contractor what allowance they assumed. |
| material.trade_discount | 0.780 | material | modeled | Applied to an observed retail price to approximate what a roofing contractor pays a distributor for the same product. Roofing materials are typically bought on trade terms by the pallet rather than the bundle. Retune from real supplier quotes as they become available; until then this is our assumption and is marked modeled rather than verified. |
area
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| area.eave_overhang | 1.080 | material | sample | Roof plan area exceeds conditioned floor footprint because of eaves and overhangs. |
quality
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| quality.builder.material | 0.880 | material | sample | Entry-level product within the chosen material family. |
| quality.standard.material | 1.000 | material | sample | Mid-range product within the chosen family. The default. |
| quality.premium.material | 1.220 | material | sample | Top-of-line product within the chosen family, heavier weight and longer warranty. |
warranty
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| warranty.standard.adder | 1.000 | all | sample | The warranty that comes with the product. No cost adder. |
| warranty.extended-labor.adder | 1.030 | all | sample | Contractor-backed extended labour coverage, typically 10 years or more. |
| warranty.system.adder | 1.080 | all | sample | Requires a certified installer and a complete single-manufacturer system, including underlayment and accessories. |
overhead
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| overhead.low | 1.220 | all | sample | A lean, high-volume operation working at cost-plus in a soft market. |
| overhead.typical | 1.320 | all | sample | A properly insured company carrying warranty reserve, supervision and overhead. |
| overhead.high | 1.450 | all | sample | A premium or capacity-constrained contractor, or a post-storm market. |
contingency
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| contingency.deck | 1.000 | all | sample | Deck replacement is estimated explicitly from a sheet count rather than as a percentage. |
uncertainty
| Key | Value | Applies to | Status | Rationale |
|---|---|---|---|---|
| uncertainty.verified | 1.000 | all | modeled | A published figure transcribed unchanged. The band around it is the market's variation, not our doubt, so it is not widened. |
| uncertainty.modeled | 1.118 | all | modeled | sqrt(1 + 0.5^2). An observed input with our own derivation on top: we take our uncertainty about the centre as roughly half the market spread, and combine the two in quadrature. |
| uncertainty.sample | 1.414 | all | modeled | sqrt(1 + 1^2). A placeholder we wrote ourselves: we are about as unsure of the centre as the market is wide. Widening the published range is the honest response - a confidence score alone does not change the number anyone acts on. |
Being straight with you
What this model cannot do
- It cannot see your deck. Rot, delamination and old skip sheathing are found at tear-off, and they are the most common reason a real job costs more than any estimate.
- It does not know your local crew availability this month. Post-storm markets can move 20 to 30% in weeks, and nothing in our data captures that in real time.
- It does not model code upgrades triggered by your specific permit. Those are jurisdiction-specific and sometimes property-specific.
- It assumes a competent, insured contractor doing the job properly. It is not modelling the cheapest possible way to get shingles onto a roof.
- Its permit figures are allowances, not schedules. Published fee schedules are exact, and replacing our allowance with them is one of the highest-value improvements available.
- Its labour rates are real - Bureau of Labor Statistics wage data for each metro - but materials, disposal, equipment and permits are still our own sample figures, and they are the larger share of the bill. That is the single largest limitation, and no amount of good modelling fixes it.
If you want to help fix the biggest limitation, the most useful thing you can do is tell us what you actually paid. It takes two minutes and it is anonymous.
A worked example
A 2,000 sq ft roof is 20 squares. At a moderate 10% waste factor that is 22 squares of material. Architectural shingle at roughly $158 per square is about $3,476 of covering, before underlayment, accessories, flashing and ventilation. Labour is roughly 1.6 crew hours per square to install, plus tear-off scaled by the weight coming off, plus detail hours — then multiplied by pitch, storeys, roof shape and access. Add containers, tipping fees and a permit allowance, then overhead and profit on the whole direct cost.
Every one of those numbers is visible in the line-item table on your own estimate, with the arithmetic shown next to it.