Check a roofing quote against our bands
Paste the line items from a roofing bid. For each line we can price, you get the same thing our calculators give: the amount converted to a rate per square, the band we publish for that work, whether the line sits above, inside, or below it — and the question to put to the contractor. Lines we cannot price are listed as not priced, never dropped.
Your quote never leaves your browser. There is no server behind the checker. The text you paste is parsed by JavaScript on your own machine, shown back to you, and forgotten when you close the tab — never uploaded, never stored, never put in the shareable link. And there is no email box here to trade your numbers for: this site takes no leads, from you or about you.
Last reviewed 2026-08-11 · pricing data as of 2026-07 · how we build these numbers
What this page will and will not say
It will say that a line sits above, inside, or below a band we publish, and it will show the division that got there. It will not say you are being overcharged, because it cannot know that. A roofing bid is priced by someone who stood on your roof; we are a table of national numbers and a text box. Every honest reason a real bid lands above a national band — a steep or cut-up roof, a second layer nobody knew about, three storeys of ladder access, a premium product line, a metro where roofers earn 40% above the national median — is invisible from here.
So the output is built as a question list, not a verdict. A line above the band is a line worth asking about. A line below the band is also worth asking about, and homeowners rarely do: our installed rate bundles underlayment, flashing, permit and disposal, so a shingle line under our band usually means those are quoted elsewhere — or are not in the quote at all.
How to check the privacy claim yourself
Do not take our word for it. Open your browser's developer tools, switch to the network panel, paste a quote, and press the button: nothing goes out, because the checker contains no network code at all. What that panel will already be showing is the page shell that loaded before you arrived — like every page on this site, this one carries Google AdSense and Cloudflare's analytics, both named in our privacy policy. Neither is handed the contents of the text box, and if you block both, the checker keeps working exactly as it does now.
The code is not minified either. cost.js is the file that does the reading and the comparing; its quote-checker functions sit at the bottom, and the only place the words fetch or XMLHttpRequest appear in that file is in a comment promising they are not used. We would rather you checked that than trusted a badge.
Why the roof size is not optional
Take one real line: Tear-off and disposal $3,500. On its own it is unjudgeable. Over 10 squares of roof it is $350 per square, well above the $100–$250 band we publish for removal and disposal. Over 30 squares it is $117 per square, near the bottom of that band. Same words, same number, opposite readings — and the line looks identical in both quotes.
That is why the form asks for footprint, pitch, and overhang before it will read a single line. It runs exactly the geometry the roof calculator runs: the footprint is widened for the eave overhang, multiplied by the pitch factor, and divided by 100 to get squares. Removal lines are divided by that square count. Installed-roof lines are divided by the same count plus the 10% waste allowance, because that is the count our per-square material rates are multiplied by. Both numbers are printed with your result so you can redo the division by hand.
How each line is sorted
Every non-empty line you paste lands in exactly one of four places, and all four are shown:
- Checked against a published band. Removal and disposal lines against our tear-off band; shingle, metal, shake and tile lines against the installed band for that material; a whole-job total against the calculator's own low/typical/high for your roof. These get a position and a question.
- Carried inside our installed rate. Underlayment, ice-and-water shield, flashing, drip edge, ridge vents, permit, labor. Our per-square number is a single installed price that already contains all of these, so we publish no separate band for them and we do not invent one. What you get instead is the question: which line carries it, so the same layer is not counted twice across bids.
- No published band. Decking replacement, gutters, skylights, siding — real work, outside the roofing dataset behind this page. We name them and stop.
- Not priced. Lines with no dollar amount, credits and discounts, and lines we could not classify. They are printed with the reason. A checker that silently discards what it cannot handle is worse than no checker, because you would never know which of your lines it ignored.
When your quote splits the finished roof across several lines, the checker also adds them back together and compares the sum per square. That roll-up is the comparison our band was actually built for; a shingle line read on its own will almost always look low.
A worked example
A 1,500 sq ft footprint, medium pitch, standard eaves, architectural shingles, tear-off included. The geometry comes out at 20.45 squares of roof, or 22.49 squares once the 10% waste allowance is added. Four pasted lines:
| Pasted line | Per unit | Our band | Where it sits |
|---|---|---|---|
| Tear-off and disposal $3,500 | $3,500 ÷ 20.45 sq = $171/square | $100–$250 per square | Inside |
| Architectural shingles installed $9,800 | $9,800 ÷ 22.49 sq = $436/square | $450–$750 per square | Below |
| Permit and inspection $450 | — | Carried inside our installed rate | No verdict |
| Gutter cleaning $200 | — | No published band | No verdict |
Read the second row alone and you would think the shingle price is light. Then the roll-up runs: the shingle line and the permit line are both inside what our installed rate covers, so $9,800 + $450 = $10,250, over 22.49 squares, is $456 per square — inside the $450–$750 band, at the bottom of it. Nothing was wrong with the quote; our band simply bundles a line that this contractor listed separately. That is the single most common reason a bid appears to undercut us, and it is why the roll-up exists.
Where the bands come from
Every band on this page is the same dataset the roof replacement calculator prices with: BLS Occupational Employment and Wage Statistics for occupation 47-2181 Roofers, dated retail shingle pricing from Home Depot and Lowe's listings, and 2026 contractor cost guides for installed cost per square. Nothing on this page is generated, estimated, or inferred by a model — if a number is not in that dataset, the checker says so instead of producing one. See methodology for the full trail and pull dates.
What to do with the output
Take the questions to the contractor, in writing, and ask the same ones of every bidder. The point is not to negotiate against our table — it is to make three bids comparable to each other, which is the only comparison that reliably tells you something. Our roofing quote checklist covers the eight items a legitimate bid must itemize and the red flags that predict change orders, and the cost-factors guide ranks the seven things that genuinely move a roofing price.
If you have not run your own numbers yet, start at the roof replacement calculator — it prints the square count, the typical band, and the high band you will want written down before the first bid arrives.
Frequently asked questions
Does my quote get uploaded anywhere?
No. The text goes from the box into a function running on your own machine and straight back onto your screen. There is no server call, no account, no lead form, and nothing is stored — close the tab and it is gone. The shareable link the result panel offers carries only the roof measurements, never the pasted text. You can check all of this yourself: open the network panel, paste a quote, press the button, and nothing goes out. What the panel will already be showing is the page shell that loaded before you got there — like every page here, this one carries Google AdSense and Cloudflare's analytics, both listed in our privacy policy. Neither is handed the contents of that box, and blocking both leaves the checker working, because it never needed a network.
Why do I have to enter my roof size first?
Because a line item on its own means nothing. Tear-off and disposal at $3,500 is $350 per square on a 10-square roof and $117 per square on a 30-square roof. The first is above our published band, the second below it, and the line reads identically either way. Without the footprint, pitch, and overhang there is no denominator, so there is no comparison to make.
What does it mean when a line sits above your band?
That it sits above a national planning band built from published price data, and nothing more. A steep or cut-up roof, a second layer to remove, difficult access, a premium product line, or a high-wage metro will each legitimately carry a real bid above our numbers. The output gives you the question to ask for that line; the answer is what tells you whether the gap is real.
Why does my shingle line read below your band?
Usually because your quote itemizes what our band bundles. Our installed per-square rate is one number covering the shingle, underlayment, flashing, permit, labor and disposal. If your contractor lists those separately, the shingle line alone will always look low. That is why the checker adds those lines back together and compares the sum — the roll-up is the comparison our band was built for.
Which lines can you not check?
Anything we do not publish a band for: decking replacement, gutters, skylights, siding, and any line we cannot classify. Those are listed on screen with the reason instead of being dropped, because a checker that quietly swallows what it cannot handle is worse than no checker. Decking is the important one to chase yourself — ask for a written price per replaced 4x8 sheet before work starts.
Is this a second opinion on my contractor?
No. It is a comparison against published data, and it cannot see your roof, your market, or the person who walked it. Use it to decide which questions are worth asking, then get at least three written bids on the same specification — our quote checklist shows what each one must itemize.