Roofing Business 10 min read

Roofing Labor Cost Per Square: What Crews Charge and How to Bid It

August 25, 2026HailMate Team· Storm Restoration Experts

Labor is the line that decides whether a roof makes money. Material has a delivered price you can verify with a phone call. Labor has a rate, a difficulty multiplier, a burden, and a bunch of hours nobody wrote down — and that is where the margin quietly leaves.

This is what roofing labor actually costs per square, what changes it, and how to build a labor number your bids can survive.


The baseline numbers

Labor here means the crew's cost to you, not the price the homeowner sees. All of it is per roofing square — 100 square feet of roof surface.

Labor componentCommon rangeNotes
Install, architectural asphalt, walkable~$150 – $300 / sqSubcontracted piece rate; varies heavily by market
Install, 3-tab asphaltSlightly lowerFewer bundles, faster course work
Tear-off + disposal~$60 / sq / layerScales with layers, not squares
Steep adder (9/12+)+25% – 35%Roof jacks, harnesses, hand-carrying material
Two-story adder+10% – 20%Staging, ladder time, longer material runs
Metal, tile, syntheticMaterially higherSpecialized crews, slower install, more prep

These are ranges, and they move. Two forces push them around more than anything else: local wage levels, which differ far more between metros than most contractors expect, and post-storm demand, which can move a market's going rate within weeks of a major hail event.

Treat the table as a starting point for a conversation with your own crews, not as a national price list. The rate that matters is the one your subs will actually sign for next Tuesday.

Sub crew vs. in-house: compare loaded, not hourly

The most common bad comparison in roofing is a subcontracted per-square rate against an in-house hourly wage. They are not the same kind of number.

A subcontracted rate is nearly all-in. The number covers the crew's wages, their tools, their transport, and their downtime. It is a variable cost: no roof, no expense.

An in-house crew's hourly wage is the smallest part of what they cost. On top of the wage sit workers' compensation (a notoriously expensive class code in roofing), payroll taxes, general liability, trucks and their maintenance, fuel, tools, and paid time that is not on a roof — drive time, supplier runs, rain days, punch lists, and the callback you did not charge for.

To compare them honestly, convert the in-house crew to a per-square number:

Loaded per-square cost = (fully burdened crew cost per day) ÷ (squares that crew actually completes per day)

The second half of that equation is the one people get wrong. Ask a crew lead what they install per day and you will hear their best day. Track it over a season and you will get their real average, and it will be lower — because of tear-off days, half-days, weather, and the roof that turned out to have two layers.

When each one wins:

  • Subs win on variable volume. Storm work is spiky by nature. A crew you do not owe money to in February is worth a lot.
  • In-house wins on control. Quality consistency, schedule certainty, and the ability to send someone back tomorrow without negotiating.
  • Most established storm companies run a hybrid — a core in-house crew for quality-critical and warranty work, subs for surge capacity after an event.

What actually drives labor cost per square

Pitch. This is the biggest single factor after the base rate. Above roughly 7/12 the crew stops walking and starts staging: roof jacks, planks, harnesses, and material hand-carried a bundle at a time. Production per day falls, and the per-square rate has to rise to compensate. The full multiplier chart lives in our roof pitch reference.

Height and access. A two-story with a tight side yard and nowhere to set the dumpster costs more per square than a rambler on a corner lot, at identical pitch and identical square count.

Cut-up complexity. Hips, valleys, dormers, skylights, chimneys, and multiple planes all mean cutting. Cutting is slow, and every cut produces waste. A 25-square cut-up hip roof is a longer job than a 30-square gable.

Layers. Tear-off is separate labor and it scales per layer. Discovering the second layer on the morning of the job is a scheduling problem and a cost problem at the same time.

Season and storm timing. Crew availability in a metro three weeks after a major hail event is a seller's market. This is real, it is predictable, and it should be in your bid if you are selling into the surge.

Deck condition. Rotten decking is not shingle labor, but it is labor, and it is discovered mid-job. Handle it as a per-sheet line item in the contract rather than absorbing it.

Worked example: labor on a real roof

Two-story house, 1,400 sq ft footprint, 8/12 pitch, one existing layer, architectural shingles.

  1. Squares: 1,400 × 1.2019 (8/12 multiplier) = 1,683 sq ft ÷ 100 = 16.8 squares
  2. Base install labor at $225/sq: 16.8 × $225 = $3,780
  3. Steep adder (8/12 is right at the edge; call it +15%): $4,347
  4. Two-story adder (+15%): $4,999
  5. Tear-off, one layer at $60/sq: 16.8 × $60 = $1,008
  6. Total labor: about $6,000, or roughly $357 per square

The base rate was $225. The delivered labor cost was $357 — 59% higher — and nothing unusual happened on this job. It was a normal two-story with a normal pitch.

That gap is the entire argument for pricing complexity separately instead of running one flat labor number across every roof. A flat rate means your simple roofs subsidize your hard ones, and your hardest jobs — the ones that take the most out of your crews — are the ones losing the most money.

Labor as a share of the job

A useful check on any bid: labor should land somewhere around 30–40% of the sell price on a standard asphalt replacement, with material in a similar band and the remainder covering overhead and profit.

If labor is...It usually means
Under ~25% of sell priceEither an unusually simple roof, or the crew rate is below market and will not hold
30 – 40%Normal range for asphalt replacement
45%+Complexity adders are missing from the bid, or rates drifted and the price sheet did not follow

The share drifts upward on steep and complex work, and that is fine — as long as the price went up with it. What is not fine is the share drifting upward across all jobs, which means the price sheet is stale.

How to build a labor number you can bid against

  1. Get real production data. Squares completed per crew per day, measured over a season, not a good week. Everything downstream depends on this number being honest.
  2. Write the adders down. Steep, two-story, cut-up, hard access, second layer. Make them explicit percentages or dollar amounts on a price sheet so any estimator applies them the same way.
  3. Separate tear-off. It is a different activity with a different driver (layers). Bundling it into the install rate hides a real cost.
  4. Load the burden if you run in-house. Wage plus comp plus taxes plus vehicles plus non-productive time. Then divide by real production.
  5. Reconcile after every job. Bid labor versus actual labor, per job, while you still remember the job. This is the entire practice described in roofing job costing and real margin, and it is the difference between knowing your labor cost and guessing it.
  6. Re-rate at least twice a year, and immediately after a major storm changes your market.

On insurance jobs, labor is priced for you

On a storm claim, the carrier's estimate carries its own regional labor unit prices per SQ, and arguing the unit price is generally not where the money is. What matters instead:

  • Steep and two-story line items exist in Xactimate — and a scope written flat on a 10/12 two-story is underpaying the actual labor. That is a correction, not a favor.
  • The square count has to match the roof. A scope of loss built on footprint math instead of measured surface area under-pays every quantity-driven line on the page.
  • Accessories are separate lines. Ridge cap, drip edge, valley metal, and starter carry their own labor and are among the most commonly missed items.

The pattern is the same in every case: the unit price is fixed, the quantities and adders are where a legitimate supplement comes from — and you only get them by measuring the roof yourself rather than accepting the adjuster's numbers.

Keeping the labor number attached to the job

The reason bid labor and actual labor drift apart is rarely bad math. It is that the measurement, the bid, the crew's actual production, and the carrier's scope live in four different places — a folder, a spreadsheet, a text thread, and a PDF.

HailMate keeps them on one job record: the measured squares, the pitch photos, the labor bid, the material order, and the carrier scope, so the number you bid and the number you paid are visible side by side while the job is still open. And the hail maps put your crews on the streets that actually took damage in the first place. See the plans.


Related reading: Roofing cost per square · What is a roofing square · How to calculate roof square footage · Roofing company KPIs to track

FAQ

Roofing Labor Cost Per Square: What Crews Charge and How to Bid It: common questions

For standard architectural asphalt shingles on a walkable roof, subcontracted install labor commonly runs in the range of 150 to 300 dollars per square, and tear-off labor with disposal adds roughly 60 dollars per square per existing layer. Steep, two-story, and heavily cut-up roofs carry adders on top of the base rate. Rates vary widely by market, by crew availability after a major storm, and by how much of the accessory work is included.

Run your next storm with HailMate

Stop managing jobs with spreadsheets. Get every tool your crew needs in one app.

One state, everything included · from $79/mo · month-to-month, cancel anytime