Skip to content
Home CostDoctor
Roofing costsRoof calculatorCheck a quoteCompare quotesMethodology

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

  1. 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.
  2. 2Price the materials it needsPer square, for your material, including the waste a cut-up roofline creates.
  3. 3Add the crew, at local wagesHours for the install, the tear-off and the detail work, at the wage rates published for your metro.
  4. 4Add the real cost of a real contractorDisposal, equipment, permits, and the overhead and profit a licensed, insured, warrantied business has to carry.
  5. 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

Bureau of Labor Statistics wage release for May 2025, occupation 47-2181 (roofers), across 15 metro areas.

Materials
Partly observed

2 of 24 material rows come from observed prices; the rest are modelled.

Local coverage
17 cities

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.

Geometry
Exact

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:

ZIP→City→Metro→State→National→Global

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.

ComponentMaxWhat earns it
Local data coverage32ZIP-level pricing earns 32; city 27; metro 21; state 14; national 9.
Data recency20Full marks within three months of the effective date, falling to 2 beyond two years.
Project detail supplied22Proportional to how many of the thirteen optional inputs you actually gave us.
Source quality16Weighted by the reliability of each source that fed the estimate.
Range tightness10A 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

KeyValueApplies toStatusRationale
pitch.flat.area1.000allverifiedRoof surface equals footprint. Exact geometry, not an estimate.
pitch.low.area1.042allverifiedsqrt(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.area1.118allverifiedsqrt(1 + (6/12)^2). Exact geometry for a 6:12 representative pitch.
pitch.steep.area1.250allverifiedsqrt(1 + (9/12)^2). Exact geometry for a 9:12 representative pitch.
pitch.very-steep.area1.414allverifiedsqrt(1 + (12/12)^2). Exact geometry for a 12:12 representative pitch.
pitch.flat.labor1.100laborsampleLow-slope work uses a different system and detailing, so hours per square rise even though area does not.
pitch.low.labor1.000laborsampleBaseline walkable pitch.
pitch.moderate.labor1.050laborsampleStill walkable; modest productivity loss.
pitch.steep.labor1.280laborsampleRoof jacks, staging and fall protection are required and productivity drops sharply.
pitch.very-steep.labor1.500laborsampleFull staging required. This is the single largest labour driver on a residential roof.

stories

KeyValueApplies toStatusRationale
stories.1.labor1.000laborsampleBaseline. Ground-level material handling.
stories.2.labor1.100laborsampleLonger carries, more setup, higher fall exposure.
stories.3.labor1.240laborsampleOften needs a lift or conveyor; material handling dominates.

complexity

KeyValueApplies toStatusRationale
complexity.simple.labor1.000laborsampleGable or hip with two to four planes and no dormers.
complexity.moderate.labor1.120laborsampleFive to eight planes, some valleys, one or two dormers.
complexity.complex.labor1.280laborsampleNine or more planes, multiple valleys and dormers, significant flashing.
complexity.very-complex.labor1.450laborsampleCut-up custom roof with turrets, many intersections and extensive detail work.
complexity.simple.waste1.070materialsampleStandard cutting waste on a simple roof.
complexity.moderate.waste1.100materialsampleValleys and hips increase offcut waste.
complexity.complex.waste1.150materialsampleMany intersections produce significantly more waste.
complexity.very-complex.waste1.200materialsampleHighly cut-up roofs routinely exceed 20 percent waste.

access

KeyValueApplies toStatusRationale
access.easy.labor1.000laborsampleDriveway staging, container next to the house, clear perimeter.
access.moderate.labor1.070laborsampleSome carrying distance, partial obstruction, restricted container placement.
access.difficult.labor1.180laborsampleHillside, narrow street, no on-site staging, or heavy tree cover.

tearoff

KeyValueApplies toStatusRationale
tearoff.hours_per_square_per_layer0.850laborsampleBase crew hours to strip one layer from one square. Scaled by the existing material's weight in the engine.

labor

KeyValueApplies toStatusRationale
labor.detail_hours_per_square0.350laborsampleCrew hours per square for underlayment, flashing, valleys and edge detail, over and above the covering install itself.
labor.tile_relay_handling1.150laborsampleEvery tile is handled twice on a lift-and-relay, so install hours rise even though no new tile is laid.
labor.burden_multiplier1.800labormodeledApplied to a published hourly wage to reach an employer's fully burdened crew cost. Excludes profit.
labor.burden_multiplier1.680labormodeledTexas 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_multiplier1.950labormodeledHigh workers' compensation rates for roofing classifications plus state payroll costs.
labor.burden_multiplier1.900labormodeledRoofing carries one of the most expensive workers' compensation classifications in the state.
labor.burden_multiplier1.780labormodeledModelled from typical roofing workers' compensation and payroll burden.
labor.burden_multiplier1.820labormodeledModelled from typical roofing workers' compensation and payroll burden.

material

KeyValueApplies toStatusRationale
material.tile_breakage_allowance0.120materialsampleShare of tile expected to break during a lift-and-relay and need replacing. Ask each contractor what allowance they assumed.
material.trade_discount0.780materialmodeledApplied 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

KeyValueApplies toStatusRationale
area.eave_overhang1.080materialsampleRoof plan area exceeds conditioned floor footprint because of eaves and overhangs.

quality

KeyValueApplies toStatusRationale
quality.builder.material0.880materialsampleEntry-level product within the chosen material family.
quality.standard.material1.000materialsampleMid-range product within the chosen family. The default.
quality.premium.material1.220materialsampleTop-of-line product within the chosen family, heavier weight and longer warranty.

warranty

KeyValueApplies toStatusRationale
warranty.standard.adder1.000allsampleThe warranty that comes with the product. No cost adder.
warranty.extended-labor.adder1.030allsampleContractor-backed extended labour coverage, typically 10 years or more.
warranty.system.adder1.080allsampleRequires a certified installer and a complete single-manufacturer system, including underlayment and accessories.

overhead

KeyValueApplies toStatusRationale
overhead.low1.220allsampleA lean, high-volume operation working at cost-plus in a soft market.
overhead.typical1.320allsampleA properly insured company carrying warranty reserve, supervision and overhead.
overhead.high1.450allsampleA premium or capacity-constrained contractor, or a post-storm market.

contingency

KeyValueApplies toStatusRationale
contingency.deck1.000allsampleDeck replacement is estimated explicitly from a sheet count rather than as a percentage.

uncertainty

KeyValueApplies toStatusRationale
uncertainty.verified1.000allmodeledA published figure transcribed unchanged. The band around it is the market's variation, not our doubt, so it is not widened.
uncertainty.modeled1.118allmodeledsqrt(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.sample1.414allmodeledsqrt(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.