You did the responsible thing and got three quotes. Now you’re staring at three very different numbers with no idea why. One’s suspiciously cheap, one feels high, and the middle one might just be splitting the difference. Price alone won’t tell you which is fair — but the details will.
Why quotes vary so much
Contractors aren’t reading from the same script. They buy materials at different prices, carry different overhead, and — crucially — quote different scopes of work. One bid might include tear-off, permits, and haul-away; another quietly leaves them out. Until you line the quotes up item by item, you’re comparing apples to something that only looks like an apple.
First, make the quotes comparable
Before you compare anything, get every contractor bidding on the same scope. Give each one the same written description and ask that their quote itemizes the work.
What every quote should spell out
- The same materials — brand, grade, and color, not just “shingles”
- Tear-off and disposal of the old work
- Permits and who pulls them
- Flashing, underlayment, and ventilation
- Cleanup and a written labor + materials warranty
What the same job can look like
Here’s the shape of three quotes for one 2,000 sq ft asphalt roof. The cheapest bid isn’t cheap because the contractor is generous — it’s cheap because it’s missing things.
| Line item | Bid A | Bid B | Bid C |
|---|---|---|---|
| Materials | $5,200 | $5,600 | $5,800 |
| Labor | $4,800 | $5,400 | $6,000 |
| Tear-off | Not incl. | $1,800 | $1,800 |
| Permit | Not incl. | $350 | $400 |
| Warranty | 1 yr | 10 yr | 10 yr |
| Quoted total | $10,000 | $13,150 | $14,000 |
Read past the bottom line
Once the scopes match, the total is finally meaningful — but keep reading. A fair quote shows the material brand and grade, a labor figure that isn’t hand-wavy, the permit, a realistic timeline, and the warranty on both labor and materials. If any of those are missing, ask — the answer tells you a lot.
The bottom line
The best quote is rarely the cheapest and almost never the most expensive — it’s the one you understand completely. Match the scope, read every line, and anchor the whole comparison to an independent number. Do that, and “am I overpaying?” stops being a guess.