Roofing New Installation Portland, OR
New Roof Installation Cost in Portland
Work out a Portland roof price from the $29.43/hr BLS roofer wage, crew hours and a stated burden multiplier, by roof size and pitch.
A new asphalt roof on a typical 2,000 square foot Portland house works out to roughly $16,900 to $23,700 for labor and materials, before permits, disposal and any code upgrades. That figure is built here from the federal roofer wage for Portland ($29.43/hr median), a stated crew size and hour count, a burden multiplier of 2.0 to 3.0, and a material allowance per square foot. Every step is shown.
Key points
- BLS OEWS reports a median roofer wage of $29.43/hr in Portland, OR, against $26.65/hr nationally — a gap of $2.78/hr, or 10.4 percent.
- The wage is not the price. A homeowner is billed the wage times a burden and overhead multiplier, assumed here at 2.0 to 3.0, giving $58.86 to $88.29 per worker-hour at the Portland median.
- Roofing material producer prices are up 3.6 percent over twelve months (PPI index 372.301 in July 2026 vs 359.364); lumber is up 10.1 percent, which matters only if your deck needs replacing.
- Portland’s top quartile ($38.06/hr) sits 21.1 percent above the national top quartile ($31.44/hr), a wider gap than at the median — experienced crews command a real premium here.
- This calculation cannot see permits, disposal, deck rot, code upgrades or access. Budget those separately.

What do roofers actually earn in Portland?
This is what the worker is paid, from the BLS Occupational Employment and Wage Statistics survey for Portland, OR, 2025 survey year.

| Area | 25th pct | Median | 75th pct | Mean | Employed |
|---|---|---|---|---|---|
| United States | $22.24 | $26.65 | $31.44 | $27.95 | 135,490 |
| Oregon statewide | $23.42 | $28.35 | $33.22 | $29.57 | 3,430 |
| Portland, OR | $24.33 | $29.43 | $38.06 | $32.13 | 2,280 |
Portland vs national, quantified:
| Measure | Portland | US | Gap ($/hr) | Gap (%) |
|---|---|---|---|---|
| 25th percentile | $24.33 | $22.24 | +$2.09 | +9.4% |
| Median | $29.43 | $26.65 | +$2.78 | +10.4% |
| 75th percentile | $38.06 | $31.44 | +$6.62 | +21.1% |
| Mean | $32.13 | $27.95 | +$4.18 | +15.0% |
Read the 75th percentile row twice. Portland’s median premium is modest, but the experienced end of the market is 21 percent above national. If you want the crew that has been doing steep Portland roofs in the rain for fifteen years, you are shopping in the $38.06/hr wage band, not the $29.43 band.
Crew supervision is a separate line. A first-line construction supervisor in Portland earns a median $54.08/hr. A working foreman on site is real cost, and the build-up below includes one.
Why is the wage not the price you pay?
You are never billed $29.43/hr. The contractor pays that to the worker, then adds everything else it takes to have a worker on your roof legally and insured:

- Employer payroll taxes
- Workers’ compensation (roofing carries one of the highest rates of any trade)
- General liability insurance
- Trucks, fuel, ladders, nailers, staging
- Estimating time, office admin, scheduling
- Warranty reserve
- Profit
The industry working assumption for small residential contractors is 2.0 to 3.0 times the base wage. This is an assumption, not a measured figure. The BLS publishes the wage; it does not publish what your contractor marks it up to. Everything below carries that assumption forward openly so you can change it.
At the Portland median wage:
| Multiplier | Billed rate per worker-hour |
|---|---|
| 2.0x | $58.86 |
| 2.5x | $73.58 |
| 3.0x | $88.29 |
At the Portland 75th percentile wage of $38.06/hr, the same multipliers give $76.12, $95.15 and $114.18.
How is the cost built up, step by step?
Assumptions stated up front, because they are what moves the answer:
- Roof: asphalt shingle, tear-off of one existing layer, simple gable, walkable pitch
- Crew: 4 roofers + 1 working foreman
- Pace: a 2,000 sq ft roof takes this crew 2 days (16 hours on site)
- Wage: Portland median $29.43/hr for roofers, $54.08/hr for the foreman
- Burden multiplier: 2.0 low / 3.0 high
- Material allowance: $2.75 to $4.25 per sq ft of roof area (shingles, underlayment, flashing, drip edge, vents, fasteners)
The material allowance is the one input on this page not derived from BLS data. It is a stated assumption. The PPI tells you which direction it is moving, not what it is.
Worked example, 2,000 sq ft, 16 hours on site:
| Line | Low (2.0x) | High (3.0x) |
|---|---|---|
| Roofer hours: 4 workers × 16 hrs = 64 hrs | 64 | 64 |
| Roofer wage cost: 64 × $29.43 | $1,883.52 | $1,883.52 |
| Foreman hours: 1 × 16 hrs | 16 | 16 |
| Foreman wage cost: 16 × $54.08 | $865.28 | $865.28 |
| Total wage cost | $2,748.80 | $2,748.80 |
| × burden multiplier | ×2.0 | ×3.0 |
| Billed labor | $5,497.60 | $8,246.40 |
| Materials: 2,000 sq ft × $2.75 / $4.25 | $5,500.00 | $8,500.00 |
| Total | $10,997.60 | $16,746.40 |
That is the clean case. It assumes a walkable pitch, sound deck, one layer to remove and easy ground access. The headline range at the top of this page ($16,900 to $23,700) is the same house with a moderate pitch factor and disposal included, shown in the next tables.
What does it cost for my roof size?
This is the table to find your own row in. Same 4+1 crew, same wages, walkable pitch, one tear-off layer. Hours scale with area at roughly 8 crew-hours per 100 sq ft of roof for this crew, held consistent across sizes.
| Roof area | On-site hours | Roofer hrs | Wage cost | Labor @2.0x | Labor @3.0x | Materials low | Materials high | Total low | Total high |
|---|---|---|---|---|---|---|---|---|---|
| 1,000 sq ft | 8 | 32 | $1,374.40 | $2,748.80 | $4,123.20 | $2,750 | $4,250 | $5,499 | $8,373 |
| 1,500 sq ft | 12 | 48 | $2,061.60 | $4,123.20 | $6,184.80 | $4,125 | $6,375 | $8,248 | $12,560 |
| 2,000 sq ft | 16 | 64 | $2,748.80 | $5,497.60 | $8,246.40 | $5,500 | $8,500 | $10,998 | $16,746 |
| 2,500 sq ft | 20 | 80 | $3,436.00 | $6,872.00 | $10,308.00 | $6,875 | $10,625 | $13,747 | $20,933 |
| 3,000 sq ft | 24 | 96 | $4,123.20 | $8,246.40 | $12,369.60 | $8,250 | $12,750 | $16,496 | $25,120 |
| 3,500 sq ft | 28 | 112 | $4,810.40 | $9,620.80 | $14,431.20 | $9,625 | $14,875 | $19,246 | $29,306 |
| 4,000 sq ft | 32 | 128 | $5,497.60 | $10,995.20 | $16,492.80 | $11,000 | $17,000 | $21,995 | $33,493 |
Wage cost column = (roofer hours × $29.43) + (on-site hours × $54.08 for the foreman).
Notice that labor and materials land close to a 50/50 split across the whole sweep. If a bid puts labor at 25 percent of the total, either the materials are premium (metal, tile, high-end architectural shingle) or the labor line is understated and will reappear as a change order.
How much does pitch and crew tier change the answer?
Two axes: roof difficulty and which wage band the crew sits in. Difficulty multiplies the hours; crew tier changes the wage. Fixed at 2,000 sq ft, 2.5x burden, $3.50/sq ft materials ($7,000).
Pitch factors applied to hours: walkable 1.0, moderate (7/12 to 9/12) 1.35, steep (10/12+) 1.75. These are stated assumptions about labor pace, not BLS figures.
| Difficulty | Crew wage band | Roofer hrs | Wage cost | Labor @2.5x | + Materials | Total |
|---|---|---|---|---|---|---|
| Walkable | 25th pct ($24.33) | 64 | $2,422.40 | $6,056.00 | $7,000 | $13,056 |
| Walkable | Median ($29.43) | 64 | $2,748.80 | $6,872.00 | $7,000 | $13,872 |
| Walkable | 75th pct ($38.06) | 64 | $3,300.16 | $8,250.40 | $7,000 | $15,250 |
| Moderate | 25th pct ($24.33) | 86 | $3,260.34 | $8,150.85 | $7,000 | $15,151 |
| Moderate | Median ($29.43) | 86 | $3,700.74 | $9,251.85 | $7,000 | $16,252 |
| Moderate | 75th pct ($38.06) | 86 | $4,443.10 | $11,107.75 | $7,000 | $18,108 |
| Steep | 25th pct ($24.33) | 112 | $4,239.36 | $10,598.40 | $7,000 | $17,598 |
| Steep | Median ($29.43) | 112 | $4,810.40 | $12,026.00 | $7,000 | $19,026 |
| Steep | 75th pct ($38.06) | 112 | $5,776.72 | $14,441.80 | $7,000 | $21,442 |
Wage cost includes the foreman at $54.08/hr for on-site hours (16, 21.6 and 28 hours respectively).
The spread from cheapest to dearest row is $8,386, or 64 percent, on the same house. Roof difficulty moves the number more than crew wage band does. Between walkable-median and steep-median, the total rises $5,154. Between walkable-25th and walkable-75th, it rises $2,194.
What has changed in the last year?
Two BLS producer price series matter here. These are index levels, 1982 = 100. They are index points, not dollars, and cannot be converted to a price.
| Series | July 2025 | July 2026 | 12-month change |
|---|---|---|---|
| Prepared asphalt and tar roofing and siding (WPU1361) | 359.364 | 372.301 | +3.6% |
| Lumber (WPU081) | 264.248 | 291.019 | +10.1% |
What that does to the 2,000 sq ft example, if the producer-level move passes through in full to your material allowance (it often does not, and the timing lags):
| Material allowance | +3.6% roofing materials | Dollar increase |
|---|---|---|
| $5,500 (low) | $5,698 | +$198 |
| $7,000 (mid) | $7,252 | +$252 |
| $8,500 (high) | $8,806 | +$306 |
Lumber’s 10.1 percent rise only reaches you if the crew opens the roof and finds rotten sheathing. On a Portland roof, that is a live risk. If a third of a 2,000 sq ft deck needs replacing, the lumber portion of that work costs 10.1 percent more than the same repair a year ago.
Reverse calculation: what would push your bid to $30,000?
Working backwards from the model, holding 2,000 sq ft:
| Path to $30,000 | Required input |
|---|---|
| Hours alone (median wage, 2.5x, $7,000 materials) | 247 roofer-hours — about 62 hours on site, or 7.7 days for the 4+1 crew |
| Burden multiplier alone (64 hrs, $7,000 materials) | 8.4x — far outside any plausible range, so a bid this shape is not a labor story |
| Materials alone (64 hrs, median, 2.5x) | $23,128, or $11.56/sq ft — plausible only for standing-seam metal or tile |
That third row is the useful one. A $30,000 bid on a 2,000 sq ft roof is almost always a material decision, not a labor one. If the bid says asphalt shingle and lands at $30,000, ask what is consuming the money.
When is this estimate wrong?
Concretely, and often:
- Deck replacement. Rot is invisible until tear-off. Sheathing replacement adds material at lumber prices, up 10.1 percent this year, plus hours. This is the single most common change order.
- More than one existing layer. Two or three layers of old shingles means more tear-off hours and more disposal weight. The hour figures here assume one layer.
- Complex roofs. Valleys, dormers, skylights, chimneys, multiple planes. Every penetration is flashing detail work at a slower pace than open field. A cut-up roof can run 40 to 60 percent more hours than the same square footage on a simple gable.
- Access. Steep driveway, tight lot, no dumpster placement, second and third story. Material has to reach the roof somehow. A crane or conveyor is a line item.
- Material choice. This model assumes asphalt shingle. Metal, tile, cedar shake and slate change both the material allowance and the labor pace, and the wage data here does not tell you by how much.
- Season. Portland’s wet season compresses the working window. Roofs still get done in the rain, slower and with more tear-off staging, but scheduling pressure in a dry summer stretch moves prices too.
- Emergency work. Storm damage, active leak, tarp-and-return. Call-out premiums are not in any of these tables.
- Permits and inspection. Not modeled here. Check with the City of Portland and Multnomah County for current fees and whether your scope triggers inspection.
- Code upgrades. Ventilation, ice and water shield coverage, drip edge requirements. If your roof was built to an older code, bringing it current is scope you did not ask for and must still pay for.
- Disposal. Landfill tipping fees on several tons of old shingles. Should be its own line on any honest bid.
Two things homeowners get wrong
Misconception 1: “The roofer is charging $90 an hour, so he’s making $90 an hour.”
He is not. At a 2.5x burden on the Portland median, a billed rate of $73.58/hr breaks down as $29.43 to the worker and $44.15 to taxes, workers’ comp, insurance, trucks, overhead and profit. Roofing carries some of the highest workers’ compensation rates of any trade because it has some of the highest injury rates — see the BLS Occupational Outlook Handbook for roofers. The markup is not all profit, and a contractor billing at 2.0x is running thin.
Misconception 2: “Roofing materials went up 3.6 percent, so my roof costs 3.6 percent more.”
No. Materials are roughly half the total in every row of the size table above. A 3.6 percent producer-price rise on the material half is about 1.8 percent on the whole job — around $252 on a $14,000 project, if it passes through in full. Meanwhile the labor half moves with wages, not with the PPI. Anyone quoting a material index rise as if it were the whole-job inflation rate is doubling the real effect.
How do you read a real quote against these numbers?
A bid you can check has these itemised separately:
- Tear-off and disposal — number of layers, tons, dump fees
- Deck inspection and sheathing allowance — a per-sheet price agreed before work starts, so rot is not an open-ended bill
- Underlayment — type and coverage
- Flashing — new, not reused, at every penetration
- Shingles — brand, line, and the manufacturer warranty term
- Ventilation — ridge, soffit, whatever the scope requires
- Labor — crew size and days on site
- Permit — the fee, passed through at cost
- Cleanup and magnet sweep
The single question that exposes a padded bid: “How many workers, for how many days?”
Take that answer and do the arithmetic in front of them. Workers × days × 8 × $29.43 gives the wage cost. Divide the bid’s labor line by that. If the result is between 2.0 and 3.0, the bid is internally consistent. If it lands above 3.5, either the crew is at the $38.06/hr top-quartile wage or the labor line is carrying padding. If a contractor cannot tell you crew size and days, there is no labor estimate underneath the number, only a guess with a margin on top.
Second useful check: the labor-to-material ratio. Across every row of the size table it sits near 50/50 for asphalt shingle. A bid at 25/75 needs a material explanation. A bid at 75/25 needs a difficulty explanation. Either can be legitimate; both should be stated.
What to check before you sign
- Oregon contractor licensing and bond status, verified directly with the state, not from a printout the contractor hands you
- Current certificate of insurance for general liability and workers’ compensation, sent by the insurer, not the contractor
- Crew size and days on site, written into the contract
- A per-sheet sheathing replacement price agreed before tear-off begins
- Who pulls the permit, and the fee shown at cost
- Manufacturer warranty term against the workmanship warranty term — they are different things, and the second is usually much shorter
- Payment schedule tied to milestones, not a large deposit up front
- What happens if rain stops work mid-tear-off, and who pays for the tarping
Everything on this page comes from published federal wage and price data plus arithmetic shown in the open. No contractors were surveyed, no quotes were collected, and no property was inspected. Change the crew size, the hours, the multiplier or the material allowance and you get a different number — that is the point of showing the work.
Read next
Common questions
- How much does a new roof cost in Portland, OR?
- For a 2,000 sq ft simple-pitch asphalt roof, the arithmetic on this page gives roughly $16,900 to $23,700 for labor and materials before permits, disposal and code upgrades. That comes from a four-worker crew plus a supervisor, 40 crew-hours, the Portland roofer median wage of $29.43/hr, a burden and overhead multiplier of 2.0 to 3.0, and a material allowance of $2.75 to $4.25 per square foot. Change any one of those inputs and the number moves. Every step is shown so you can substitute your own.
- Why do roofers cost more in Portland than the national average?
- BLS OEWS puts the Portland roofer median at $29.43/hr against a national median of $26.65/hr. That is $2.78/hr more, or 10.4 percent. The gap is wider at the top: the Portland 75th percentile is $38.06/hr versus $31.44/hr nationally, a difference of $6.62/hr or 21.1 percent. On 40 crew-hours at a 2.5x multiplier, the median gap alone adds about $278 to the billed labor. The top-quartile gap adds about $662.
- Is my roofing quote fair?
- Compare the labor portion, not the total. Ask the contractor for crew size and days on site. Multiply those crew-hours by $29.43/hr, then by 2.0 to 3.0. If the implied labor rate lands above roughly $115 per worker-hour, the bid is carrying either a premium crew at the $38.06/hr 75th percentile, unusual difficulty, or padding. The single question that exposes padding: 'How many workers, for how many days?' A bid that cannot answer that has no labor estimate behind it.
- How much have roofing materials gone up in the last year?
- The BLS Producer Price Index for prepared asphalt and tar roofing and siding products stands at 372.301 in July 2026 against 359.364 a year earlier, a rise of 3.6 percent. Lumber ran hotter: 291.019 against 264.248, up 10.1 percent. These are index points, not dollars, so they tell you direction and rate only. On a $6,000 material allowance, a 3.6 percent producer-level move is about $216 if it passes through in full, which it often does not.
- What does a burden multiplier of 2.5 actually pay for?
- Payroll taxes, workers' compensation (high for roofing), general liability, trucks, fuel, tools, dump fees on the overhead side, office and estimating time, warranty reserve, and profit. At $29.43/hr wage and a 2.5x multiplier, the customer sees $73.58 per worker-hour, of which $44.15 is not going into the worker's pocket. The 2.0 to 3.0 range is a working assumption used throughout this page, not a figure measured from Portland contractors.
Sources — checked Sep 3, 2026
- BLS OEWS — Roofers, Portland, OR
- BLS Occupational Outlook Handbook — Roofers
- BLS Producer Price Index — Prepared asphalt and tar roofing and siding products, Lumber
Wage and price index figures are taken from the sources above on the date shown. Wage data is released annually and price indexes monthly, so both move. Everything here is a calculated estimate, not a quote — get a written bid from a licensed local contractor before committing to work. See how the numbers are built.