Not the number on a competitor's price sheet. In 2026, installed asphalt shingle roofing nationally runs about $350 to $1,200 per square (a "square" is 100 sq ft), but that range only tells a shop what the market will pay, not whether a given price clears its own costs. The number that matters is built from a fully burdened labor rate, base wage plus payroll taxes, workers' comp, benefits, and non-billable time, and roofing carries one of the highest burden loads of any trade because its workers' comp classification (NCCI code 5551) is rated for fall risk. A construction-accounting worked example shows a $30-an-hour installer actually costing $39 once burdened, a 30 percent swing most bid sheets never show. Below: what burden actually includes, what workers' comp alone adds for roofing, what ServiceTitan's own pricebook tools do and don't calculate, and a worked per-square example separating the labor floor from the price that should go on the invoice.
This is written for the shop bidding reroofs and retail asphalt-shingle jobs by the square, not the flat-rate service call. If pricing per square still runs on "what we charged last time" or a competitor's yard sign, this is the math that decides whether "we're slammed" and "we're actually making money" are the same sentence.
What does "per square" actually mean in roofing pricing?
A roofing square is 100 square feet of roof surface, a unit the trade has used for well over a century specifically because it standardizes material and labor estimates across roofs of wildly different sizes and shapes. A 2,400-square-foot single-story home and a 2,400-square-foot two-story with dormers can both get quoted, and compared, on the same 100-square-foot unit of actual roof work rather than on house square footage, which has almost nothing to do with how much roof there is to tear off and install.
That standardization is exactly why per-square pricing is useful, and exactly why it's dangerous when it's copied from someone else's number: the unit is standardized, but the cost to produce it, labor, workers' comp rate, and material vendor pricing, is not.
What's a realistic price-per-square range for asphalt shingle roofing right now?
In 2026, installed asphalt shingle roofing nationally runs about $350 to $1,200 per square, depending on shingle grade, roof pitch, and local labor rates, according to JobNimbus's 2026 roofing cost breakdown. That's the all-in installed price, labor and materials and markup together, wide enough that a number sitting inside the range can still be a losing job for one shop's cost structure and a strong-margin job for another's.
Labor-only costs run narrower and higher than most contractors expect. NRCA-compiled data puts per-square labor rates for basic asphalt shingle installation at $150 to $300 per square for labor alone, per National Roofing Authority's roofing labor cost benchmarks, before materials are added. That figure already reflects tear-off, disposal, and typical complexity, a different (and larger) number than the standard-productivity wage floor built out later in this post.
What actually goes into a roofing crew's burdened labor rate?
Burdened labor rate is the base hourly wage plus every mandatory cost of employing that person: payroll taxes, workers' compensation insurance, benefits, paid time off, and required safety training and PPE. Per Miter's construction labor-burden guide, those components typically add 25 to 40 percent on top of base wage, and the guide's own worked example uses a $30-an-hour roofing installer: $9.00 an hour in burden brings the fully burdened cost to $39.00 an hour, a 30 percent load.
That 30 percent isn't a rounding error, it's real cash the shop pays regardless of whether it gets priced into the job. A shop quoting off base wage instead of burdened wage is underpricing every labor hour on every job by roughly a third before a single shingle gets nailed.
| Burden component | What it covers | Sourced range |
|---|---|---|
| Base wage | Straight hourly pay before anything is added | Set by the shop |
| Payroll taxes | Employer FICA plus federal and state unemployment | Included in the 25–40% total below |
| Workers' compensation | NCCI class code 5551, "Roofing, all kinds" | $25–$45 per $100 of payroll before experience mod; over $70 with a poor claims history |
| Benefits & PTO | Health insurance, retirement match, paid time off | Included in the 25–40% total below |
| Training & PPE | Required safety certifications, fall-protection gear | Included in the 25–40% total below |
| Total burden | All of the above combined, on top of base wage | Roughly 25–40% (a $30/hr roofer costs about $39/hr fully burdened) |
Workers' comp alone can move the needle more than every other burden line combined, and it's the one component almost no bid sheet itemizes on its own.
Why does workers' comp alone move a roofer's burdened rate more than almost any other trade?
Because roofing is rated under NCCI class code 5551, one of the highest-rated classifications in the country, specifically because of fall risk. Per CPR Brokers' explainer on roofing workers' comp, voluntary-market rates for code 5551 commonly run $25 to $45 per $100 of payroll before any experience modifier, and a shop with a below-average safety record and a mod around 1.75 can see effective rates exceed $70 per $100. Roofing "consistently ranks among the most dangerous occupations tracked by the Bureau of Labor Statistics, with fatality rates several times the national average," per the same source, and falls are the primary driver.
What's the actual formula for pricing a square to hit a real margin, not just cover cost?
A defensible per-square price stacks four numbers, in this order: burdened labor cost for the hours the job actually takes, materials cost off the current vendor price, an hourly overhead-recovery rate, and a target margin applied to the total, not to any single line. Per JobNimbus's profit-focused roofing estimating guide, a commonly recommended way to build the overhead line is dividing total monthly overhead by total monthly labor hours to get an hourly rate applied to every bid, and well-run roofing companies generally target gross margins of 25 to 40 percent and net margins of 8 to 15 percent once all of that is added up.
The mistake that quietly erases margin is treating markup and margin as the same number: markup is calculated on cost, margin on the final price. A 30 percent markup on cost works out to roughly a 23 percent gross margin, per the same JobNimbus guide, a gap that compounds across every job on the board.
What does a per-square price actually have to cover, line by line?
The table below is an illustrative worked example, not a quote for any real job, using NRCA's compiled productivity standard of roughly 1.25 man-hours per square (per RoofPredict's guide to pricing for a 20% net margin) combined with a $26-an-hour base wage and a 32 percent burden load, the midpoint of the sourced range above.
| Line item | Illustrative $/square | Where it comes from |
|---|---|---|
| Burdened labor, standard productivity | $42.90 | 1.25 NRCA man-hours/square × an illustrative $34.32/hr burdened rate ($26 base × 1.32 burden) |
| Full labor line (tear-off, disposal, complexity, regional wage) | $150–$300 | NRCA-compiled per-square labor-only range for basic asphalt shingle install |
| Materials (shingles, underlayment, flashing, fasteners) | Varies by grade/vendor | Tracked as a bill of materials off current vendor cost, not a flat figure |
| Overhead recovery | Monthly overhead ÷ monthly labor hours | JobNimbus-recommended hourly-rate method |
| Target margin | 25–40% gross / 8–15% net | JobNimbus benchmark for well-run roofing shops |
The $42.90 is a floor built from standard productivity, not a bid. Everything below the labor line, tear-off complexity, materials, overhead, and margin, is where the number that actually goes on the invoice gets built.
Does ServiceTitan's own pricebook calculate price per square or burdened labor rate for you?
No, not out of the box, on either count. ServiceTitan's Price Setup Wizard is built for flat-rate pricing, "costs, labor, and surcharges are bundled under a single price," and its labor input is a Billable Rate, "amount charged per hour for labor," per ServiceTitan's own Price Setup Wizard documentation, not a burdened cost rate. Nothing in that workflow asks for payroll tax rate, comp class code, or benefits load.
Pricebook Pro's roofing-specific Price Insights feature comes closer but stops short: it shows "the minimum and maximum price for the service in your region," a regional benchmarking tool, per ServiceTitan's own roofing Price Insights documentation. That's what competitors charge, not what a shop's own burdened labor and current material costs require to hit a target margin, and neither Pricebook Pro's monthly content refresh nor Pricebook Connect's vendor-cost sync changes that, per ServiceTitan's own comparison of the two. The gap shows up elsewhere on this blog too: ServiceTitan's own pricebook tools update generic content or surface vendor deltas, but neither recomputes a price from a contractor's real burdened labor rate.
What happens when a shop prices per square off gut feel instead of burden math?
Picture an illustrative two-crew, roughly $1.8M-a-year roofing shop, the kind of composite shop this blog writes to. The owner quotes $325 a square because that's what a competitor's yard sign says and what "felt right" on the last few bids. Base wage for the crew runs $26 an hour; nobody has calculated the shop's real workers' comp rate under class code 5551 or added it, with payroll taxes and benefits, into a per-hour number. The $325 looks profitable against the invoice because the labor line on the job-cost report shows base wage, not the fully burdened cost.
At quarter-end the shop is "slammed," the crews never stop moving, and the bank balance still isn't where it should be. That's the burden gap showing up as cash flow instead of as a line item: every square priced at $325 quietly ate 25 to 40 percent more in true labor cost than the books ever showed, and it takes a full season of jobs to notice without burden math built into the price.
How should rising material costs change the per-square number?
They should move the price up on a documented, recurring basis, not get absorbed into margin until a bad quarter forces a reset. Per FoxHaven Roofing's 2026 cost breakdown, citing NRCA data, construction material prices were 43.4 percent higher in November 2025 than in February 2020, a run-up a flat per-square price set once and never revisited will not track. A shop repricing only when a bid feels wrong is always pricing last quarter's material cost into this quarter's job.
Burden components and the 25–40% range (including the $30/hr → $39/hr example) come from Miter's fully burdened labor costs guide. Class code 5551 and the $25–$45 (up to $70+) per-$100-of-payroll range come from CPR Brokers' roofing workers' compensation explainer. The 2026 national price-per-square range ($350–$1,200) and the overhead/margin benchmarks come from JobNimbus's 2026 roofing cost guide and roofing estimating guide. NRCA-compiled labor-only rates ($150–$300/square) and the 1.25 man-hours/square productivity standard come from National Roofing Authority's labor cost benchmarks and RoofPredict's margin guide. The 43.4% material-inflation figure (citing NRCA) comes from FoxHaven Roofing's 2026 cost-driver breakdown. What ServiceTitan's own pricebook tools do and don't calculate comes from ServiceTitan's own docs: the Price Setup Wizard, roofing Price Insights, and Pricebook Pro vs. Connect. The $42.90/square floor and the $1.8M-shop example are illustrative calculations built from the figures above, labeled as such, not reported client figures.
- No invented client numbers. The $1.8M-shop walkthrough and the $42.90/square calculation are labeled illustrative examples built from sourced figures, not a reported client's real numbers.
- This isn't a pricing guarantee for any specific shop. Wage rates, comp classifications, material vendor costs, and local market pricing all vary; the formula is the transferable part, not any single dollar figure in it.
- Top Builder AI's Pricebook figures are computed by deterministic, tested code first; the AI narrates the result in plain business language afterward, and a person approves every price change before anything posts.
- No self-serve per-square pricing tool ships today. The burdened sold-hour rate and roofing per-square rollup described here is built into a shop's real ServiceTitan pricebook through a done-for-you Teardown or 90-Day Install engagement, not a shipped self-serve toggle.
Want your shop's real burdened sold-hour rate built into your pricebook?
A fit call walks through your current pricebook, your actual payroll and comp numbers, and what a burden-rate-based per-square target looks like for your crews specifically.
Book a fit call →