When three bids come back 30% apart, the instinct is to assume somebody is padding. The arithmetic says otherwise. Our engines apply 18% to 30% for overhead and profit, so moving modelled markup across that whole range shifts a total only about 10%. Most of a real gap is scope — and scope is the part you can actually verify.
Scope note: this is an analysis of the ProjectCostPro cost engines — the same code the 52 calculators run — not a survey of contractors or a dataset of observed bids. Where a figure describes our model rather than the market, it says so.
The five causes, ranked
Each of these is measurable in the cost engines behind the 52 calculators on this site. Ranked by how far each one can actually move a total, largest first.
#
Cause
How far it can move the total
1
Scope — what is and is not in the price
32% on the worked example below
2
Material choice
2.2x–4.2x on the installed total (cheapest to dearest option)
3
Local labor rates
2.00x across 184 ZIP zones
4
The size or quantity takeoff
1.84x per unit at a quarter of the footprint
5
Contractor markup
~10% between the widest honest bidders
The ordering is the point. Markup is the thing homeowners argue about and it is the smallest lever on the list. Scope is the thing nobody asks about and it is the largest.
A worked example on a real slab
Here is the full line-item breakdown our engine produces for a typical 400 square foot garage slab, 4 inches thick, 3,500 PSI, broom finish, mesh reinforcement, easy access. Total $6,681 at the midpoint of a $5,090–$8,271 planning range.
Line item
Amount
Share
Could a bid omit it?
Ready-mix concrete delivered (3,500 PSI)
$1,604
24.0%
No — it is the job
Placement & smooth finishing
$694
10.4%
No
Gravel base (4 in compacted)
$644
9.6%
Yes
Equipment and tool allowance
$516
7.7%
Sometimes bundled
#4 rebar grid (16 in O.C.)
$480
7.2%
Yes
Site prep (easy)
$398
6.0%
Yes
Garage permit allowance
$325
4.9%
Yes — often “owner to pull”
Forms and bracing
$254
3.8%
Rarely
Mobilization / minimum charge
$200
3.0%
Usually absorbed
Saw-cut control joints
$127
1.9%
Yes
Curing compound
$80
1.2%
Yes
6-mil vapor barrier
$71
1.1%
Yes
The seven lines marked as genuinely omittable — gravel base, rebar, site prep, permit, control joints, curing compound, vapor barrier — total $2,125. That is 31.8% of the price.
A contractor who leaves all seven out can quote about $4,550 for what looks like the same slab. Nothing in that bid is a lie. It is simply a different, thinner job: unreinforced concrete poured on unprepared subgrade with no vapor barrier and no control joints, which is a slab that will crack early and unevenly. Meanwhile the entire markup band on this project spans just 3.2%. Scope is worth ten times the argument markup is worth.
1. Scope
Our estimates average 9.4 line items. A quote with three lines is not simpler — it is either bundling, or excluding. Both are legitimate ways to write a bid, and neither is comparable to a bid written the other way until you unpack it.
The categories that most often go missing, in rough order of how much money they represent: subgrade and base preparation; removal, tear-off, and disposal of what is already there; permits and inspection; reinforcement; and the finishing details that determine service life rather than appearance — control joints, vapor barriers, flashing, sealants, curing.
That last group is where an inexperienced buyer loses most. Those lines are individually small and collectively decisive. They are also invisible on the day the job finishes and expensive three winters later.
2. Material choice
Our engines mostly model material by pricing the actual named product rather than by applying an abstract grade multiplier — a water heater is priced as a 50-gallon gas tank or a heat pump or a solar system, not as “mid grade.” So the honest way to size this driver is to hold a project’s dimensions fixed and swap the material option through the engine. On the six calculators offering three or more discrete material or system options, the installed total ran 2.2x to 4.2x from cheapest choice to dearest, median 3.6x:
Two calculators — carpet and tile — additionally apply an explicit budget/mid/premium multiplier on top of the chosen material, at 0.65/1.00/1.55 and 0.60/1.00/1.55 respectively. Those two are the exception, not the pattern, and the figures above are the ones that generalise.
Two bidders quoting different grades are not quoting the same project, and grade is rarely stated plainly. “Architectural shingles” and “30-year shingles” and “premium laminate” are marketing terms, not specifications. Ask for the manufacturer and the product line, then compare those.
One caution against over-reading this: material is only one line in an installed job. Labor, equipment, permits, and removal do not change when you switch product. Across all 52 engines, material is the single widest cost driver in only 5 projects — the full ranking is in what drives project costs.
3. Local labor rates
Across the 184 ZIP zones we price against, the multipliers behave very differently by category:
Category
Range
Spread
Why
Labor
0.80 – 1.60
2.00x
Trade labor is a local market
Material
0.95 – 1.15
1.21x
Lumber and fixtures trade nationally
Equipment
1.00 – 1.05
1.05x
Rental fleets price nationally
Manhattan and San Jose sit at the 1.60 ceiling. El Paso, Flagstaff, and Santa Fe sit at the 0.80 floor, with Wyoming and West Virginia at 0.85. So a labor-heavy job genuinely costs twice as much in one place as another, while the materials cost within about 20% of the same.
This matters when you compare your quote to a figure you read online. National averages are labor-weighted to nowhere in particular. If you are in a high-cost metro, a quote 40% above a national average may be exactly right.
4. The takeoff
Two contractors measuring the same project can arrive at different quantities — different assumptions about what area is included, different waste factors, different treatment of cuts and edges. That flows straight through to the total.
There is a second-order effect worth knowing: because fixed costs do not scale down, the per-unit price is not constant. Cut a footprint to a quarter with the specification unchanged and the installed price per square foot rises about 1.84x. So a bidder who has measured a smaller area than the other is not just quoting less work; the arithmetic behind their per-unit figure is different too. That effect is worked out in detail in why small jobs cost more per square foot.
5. Markup, the smallest one in this model
This is the one place where the ranking is a statement about our model rather than about contractors, so it is worth stating precisely. ProjectCostPro applies 18% to 30% for overhead and profit on installed work, in only five distinct bands across the 52 engines. Moving our modelled markup from the bottom of that range to the top changes the markup-bearing subtotal by roughly 10%; within a single trade the band is tighter still — the slab example above spans 3.2%.
What that does not establish is that a real bidder outside 18–30% is being dishonest. Actual bid differences also reflect labor productivity, schedule and sequencing, risk appetite, material availability, how a firm accounts for overhead, and margin — none of which our engines model. A quote 40% above another may be a fuller scope, a costlier labor market, a firm carrying real insurance and warranty reserves, or simply a company that does not want the job. The reason to compare line items rather than totals is that scope is the part you can actually verify.
It is also worth being clear about what the band pays for, because “markup” reads as “profit” and it is not. It covers general liability and workers’ compensation insurance, vehicles and fuel, supervision and site visits, office and estimating time, warranty exposure, and then margin. A contractor carrying proper insurance and pulling permits cannot operate at the bottom of that band indefinitely.
We do not apply markup to permits, flat fees, or subcontracted lines that already carry a subcontractor’s own margin. Marking up a pass-through would count the same margin twice, which is one of the specific things worth checking on a real bid.
How to normalize two quotes
Put both bids in two columns, line for line. Not totals. The gaps are the answer, and they only appear when the lines are aligned.
For every line one bid has and the other lacks, ask directly. “Is the gravel base excluded, or just not itemized?” The answer tells you whether you are looking at a saving or an omission.
Confirm grade by manufacturer and product line, not by adjective.
Confirm the measured quantity. If the two takeoffs differ by more than a few percent, one of them measured something you did not intend.
Check who pulls the permit. “Owner to pull permit” moves a real cost and a real liability onto you.
Only then compare the residual. Once scope, grade, and quantity match, what is left is labor rate and markup — and that gap should be modest. If it is still large, ask why.
Check the total against a planning range for your dimensions and ZIP. The bid checklist covers the contract terms to look at alongside the price, and every calculator here has a bid-check tool that tells you whether a quote sits inside the expected band for that scope.
Frequently asked questions
Why are my contractor quotes so different from each other?
Almost always scope. Ranking the five causes by how far each moves a total in our engines: scope inclusions come first, then material choice (2.2x to 4.2x on the installed total between the cheapest and dearest option), then local labor rates (a 2.0x spread across the 184 ZIP zones), then the size takeoff, and last our modelled markup, where moving from 18% to 30% shifts the markup-bearing subtotal by roughly 10%. That ranking describes the ProjectCostPro model, not a survey of contractors: real bids also vary on labor productivity, schedule, risk, material availability, and overhead accounting. Scope is simply the part you can verify line by line.
How much of a contractor quote is profit?
Our engines apply 18% to 30% for overhead and profit on installed work, and that band is not all profit. It covers general liability and workers’ compensation insurance, vehicles and fuel, supervision, office and estimating time, warranty exposure, and only then margin. It is applied to material, unit labor, and equipment rental, but not to permits, flat fees, or subcontracted lines that already carry a subcontractor’s own markup, because marking up a pass-through would double-count it.
Should I take the lowest bid?
Not before you find out why it is lowest. A low bid that omits the gravel base, the vapor barrier, or the permit is not cheaper — it is a smaller job that will either be change-ordered back up or fail early. On our worked slab example those omissions total 32% of the price. Put the bids side by side line for line, and treat any line present on one bid and absent from another as an open question rather than a saving.
Does a higher quote mean better work?
No. Price separates scope, grade, and local labor cost far more than it separates workmanship. A higher number can mean a fuller scope, a better material grade, or simply a more expensive labor market — all legitimate — or it can mean padding. The only way to tell is to compare the itemized lines. Judge workmanship on licensing, insurance, references, and past work, not on the size of the number.
How do I compare two contractor quotes fairly?
Normalize them before you compare totals. Write out every line from both bids in one column each, then fill the gaps: for each line one bid has and the other does not, ask whether it is genuinely excluded or simply unstated. Confirm both are quoting the same material grade and the same measured quantity. Only once both cover identical scope does the remaining difference reflect labor rate and markup — and that residual is usually small.
Every figure on this page is computed from the ProjectCostPro cost engines — the same code the 52 calculators run in your browser. The slab breakdown is the unmodified typical scenario from the concrete-slab engine; multipliers, grade factors, and markup bands are read directly from the published data files. Which lines a real contractor omits varies by trade and jurisdiction; the “could a bid omit it” column reflects common practice, not a rule. Planning ranges, not contractor quotes; we don’t replace your contractor, your permit, or your local inspector.
Licensed structural engineer · founder of ProjectCostPro
Every figure here is generated from line-item cost engines I build and calibrate against BLS wage data, manufacturer pricing, and public cost guides — then range-checked the way a structural engineer reviews a bid: does each line reconcile, and does the total hold together? These are planning ranges, not quotes; defer to a licensed pro in the relevant trade. More about the methodology →