Construction bid spread report: what public bid tabs show estimators
Public bid tabulations show low-to-high spreads often in the teens to tens of percent. How bidder count, project size, and delivery method shape the gap, and how GCs should use spread as a health check on coverage and carry.
Author
Ido Gedanken, CEOPublished

- Type
- Research
- Read
- 5 min
- Published
On this page
Bid spread (the gap between the lowest and highest (or next) competitive bid) is one of the simplest signals of how much "room" the market left on the table. Public bid tabulations from major U.S. jurisdictions show that gap is usually material: median low-to-high spreads on general construction often land in the low-to-mid teens as a percent of the low bid, with long right tails into 40-60%+ on outliers. Very few competitive jobs sit under 10%.
This report synthesizes patterns from public bid-opening data (NYC, Cook County, and published DOT analyses such as Texas) and industry guidance on competition risk. Summary tables are illustrative aggregates for estimator planning, not a claim of a single audited national study. Use them as a scaffold, then build local norms from your own market's tabs.
Related workflow: bid tabulation vs leveling vs evaluation, coverage, and carry number methodology.
Key findings
- Typical spreads are substantial. Half of competitive public projects often show spreads below ~12-15% of the low bid, and half above. Medians near zero are rare. In one published Texas DOT-style analysis, median construction low-to-high spread was on the order of ~40%, a reminder that "substantial" can mean very large in some markets and sectors.
- More bidders, tighter spreads. Moving from 2-3 bids to 7+ usually compresses the median gap. Abundant competition pinches prices; thin lists leave room for scope and risk divergence.
- Outliers imply risk. Unusually large spreads (e.g. >30-50%, or well above your peer norm) often signal missing scope, unclear docs, or uneven risk pricing. Very small spreads (<10%) can mean real consensus, or identical exclusions everyone shared.
- Benchmarks help the carry. If similar $10-20M hard-bid jobs in your city historically show ~20% median spread, a 40% gap on the current pursuit is a reason to investigate before you celebrate the low number.
Methodology
Public bid-opening (tabulation) data from major jurisdictions:
- Sources: NYC Open Data bid tabulations (City CSB / sealed bids); Cook County IL procurement bid tabs (public bids ≥$25K); TxDOT and similar DOT tabs reviewed for context
- Selection: Recent competitive IFB/CSB construction records (illustrative window: ~2020-2024); exclude negotiated/RFQ-only sets; drop projects with fewer than two valid bids or clear data errors
- Definitions
- Spread (abs) = high bid − low bid
- Spread (%) = 100 × (high − low) / low
- Grouping: By jurisdiction, size bucket, and delivery when available (hard-bid vs negotiated/GMP)
- Limits: Public-sector skew; prime GC bids to owners, not interior sub-to-GC leveling; tabs may include addenda, alternates, or later revisions; distributions are right-skewed
Negotiated CMAR/GMP and design-build proposals rarely produce a classic high-low tab; where dual price proposals appear, gaps are often smaller than open IFB spreads. Primary analysis centers on competitive sealed bids. Delivery-method context: hard-bid vs CMAR vs design-build.
Illustrative data
Sample tab rows (fictionalized shape of public records):
| Jurisdiction | Delivery | Contract value | Bidders | Low bid | High bid | Spread % |
|---|---|---|---|---|---|---|
| NYC | Hard bid | $15M | 5 | $12.0M | $15.6M | 30% |
| Cook County | CMAR / GMP | $25M | 4 | $22.0M | $26.4M | 20% |
| Texas (DOT-style) | Hard bid | $8M | 7 | $7.2M | $10.1M | 40% |
Directional summary pattern from public-tab style aggregates:
| Dataset | Projects (approx) | Median spread % | IQR (25th-75th) | Median bidders |
|---|---|---|---|---|
| NYC CSB-style | Thousands | ~12% | ~5-25% | ~5 |
| Cook County-style | Thousands | ~15% | ~8-30% | ~4 |
| Combined picture | - | ~13% | ~6-27% | ~5 |
Read these as order-of-magnitude norms, not a guarantee for your next IFB. Local market, trade mix, and document quality move the median more than any national average.
Analysis
Spread distribution
Spreads are right-skewed: a minority of jobs cluster under 10%; many sit in the teens to thirties; a long tail reaches 50-100%+. In published multi-bidder samples, only a small share (sometimes ~5-15%) land under 10% low-to-high. Mean spread exceeds median because of outliers. The 90th percentile often sits around 40-60%.
Industry practice treats spread as a competition-risk metric. Gaps above ~10% between low and next (or low and high, depending on your house rule) usually deserve a second look, not because 10% is magic, but because that is where "left on the table" starts to look like scope or risk disagreement rather than normal noise.
Effect of bidder count
| Bidder count | Typical median spread (directional) | What it usually means |
|---|---|---|
| 2-3 | ~25-40% | Thin competition; large room for omitted scope and uneven risk |
| 4-6 | ~15-25% | Usable competition; still expect material gaps |
| 7+ | ~10-15% | Prices pinch; outliers still happen on complex or unclear packages |
This matches both bidding theory and coverage practice: invitation volume is not enough, but usable bidder count is one of the few levers that reliably compresses the gap.
Project size and delivery
Larger jobs ($30M+) often draw more firms and show relatively tighter medians than small packages, until complexity (hospitals, heavy specialty) widens the gap again. Hard-bid IFBs produce the classic high-low tab. Negotiated work does not; when dual CMAR proposals are published, gaps of ~5-10% are more common than 20-30% open-bid spreads, but public CMAR price data is sparse.
Regionally, the shape (skewed, material medians, bidder-count effect) is consistent even when the level differs. Texas DOT-style figures with ~40% median construction spread show how high the level can run; NYC/Cook-style teens show a tighter urban sealed-bid picture. Build the norm from your tabs.
What GC estimators should do with this
- Use spread as a health check. If peers for similar jobs sit near 15% and your current gap is 30%, re-run exclusions and scope-gap review before you lock the carry.
- Chase competition early. Moving a package from three usable bids to six or seven historically compresses spread and reduces upside risk if you win, the same goal as coverage follow-up.
- Set carry with market shape, not habit. If local tabs show a typical high-low band near 20%, a default 5% contingency may be theater. Conversely, carrying far above historical spreads may mean you are pricing fear, not evidence (carry methodology).
- Escalate high-spread pursuits. Early signals above ~30% vs peers → coverage matrix, clarification cycle, maybe addendum or re-solicit if docs are ambiguous.
- Keep a library. Archive bid tabs and spreads by size, sector, and delivery so "what is normal here?" is a query, not a memory. Spreads without documentation become folklore; folklore does not survive buyout.
A tight spread is not automatically a good estimate; it can mean everyone missed the same item. A wide spread is not automatically a bad low bid; it can mean one firm priced risk others ignored. Spread is a prompt to investigate, not a verdict. Pair it with leveling, not with tabulation alone.
How to reproduce locally
Any team can rebuild these norms from open data:
- Export bid tabs from your jurisdiction's open-data portal (or request award tabs)
- Keep competitive IFBs with ≥2 valid bids; drop obvious typos
- Compute `spread_pct = 100 * (high - low) / low`
- Group by year, size bucket, and agency; report median, IQR, and median bidder count
- Refresh annually, markets move; a 2020 median is not a 2026 carry rule
Pseudocode shape:
```
load bid tabs
filter to bids >= 2
spread_pct = 100 * (high_bid - low_bid) / low_bid
summarize median(spread_pct), IQR, median(bidder_count) by jurisdiction / size
```
Limitations to remember: published tabs may revise; bonds and addenda can change payable amounts; your sample may not match private negotiated work.
How to read this report. Treat jurisdiction medians as directional. The durable findings are the shape of the distribution, the bidder-count effect, and the habit of comparing your current gap to a local library, not any single percentage printed in a national blog.
FAQ
Is low-to-high the same as low-to-second?
No. Low-to-second measures how much the low left vs the next competitor; low-to-high measures the full market range. Many estimators watch both. A tight low-to-second with a huge high often means one aggressive low and a wide risk band above.
Why can a very small spread be a red flag?
Consensus can be real, or every bidder shared the same exclusion. When spread collapses under ~10%, still run the exclusions and coverage check before you assume the number is clean.
Do these public-tab medians apply to my subcontractor buyout?
Only loosely. Owner-level GC tabs are a different market layer than trade-level buyout. The method transfers; the percentage levels may not. Build a sub-level library from your own leveling sheets.
How should CMAR or design-build teams use this?
Classic high-low tabs are scarce. Use dual proposals, conceptual vs GMP deltas, and trade buyout spreads inside the GMP as your analogs, and still escalate when gaps blow past your house norms.
What spread should trigger a formal review?
House rules vary. A practical default: investigate when spread exceeds ~10% low-to-next, or when low-to-high sits well above your local median for that size and sector (often ~30%+ as a hard escalation). Always pair with a scope and exclusions pass, not with panic markup alone.
Sources
- Public bid-opening data from New York City, Cook County, and published Texas DOT analyses, as cited in the body
Related reading
Where do preconstruction teams spend their time?
Bid leveling and scope assembly dominate precon hours (often 40-50 hours of leveling and 30-40 hours of MEP scope work per project), leaving little capacity for judgment. A synthesized view of where the time goes.

Construction bid coverage: how GCs know every scope is covered
Ensure every trade has competitive bids before you lock the estimate. Track coverage with a matrix, follow up on invitations, and fill gaps so thin packages do not become expensive buyouts.

Construction bid leveling: a practical guide for GCs
How to level subcontractor bids across design-bid-build, CM-at-risk, design-build, and progressive design-build, and why the same spreadsheet does not work for all of them.

How to review subcontractor exclusions and qualifications
Subcontractor bids bury risk in exclusions and qualifications. Identify them, classify impact, normalize the comparison, and lock decisions into the subcontract scope letter before award.

Hard-bid vs CMAR vs design-build: estimating workflows for GC estimators
Compare how estimating unfolds under hard-bid (DBB), CMAR/GMP, and design-build (solicitation, scope, leveling, carry, and closeout) with checkpoints and checklists for each method.

How to set a carry number you can defend
The method for getting from a submitted subcontractor bid to the number that actually goes in the estimate, including evaluated cost, expected-value risk pricing, and the duplicate-contingency trap.

Bid tabulation vs. bid leveling vs. bid evaluation
Three terms used interchangeably on bid day, three different jobs. What each one produces, who owns it, and what goes wrong when a team skips the middle step.

Why bid leveling eats estimator time
Manual quote comparison hides exclusions, scope gaps, and carry risk. Here is where the hours actually go before judgment even starts, and how to measure it on your own projects.

Piper removes manual review from the critical path and brings project data, company knowledge, and expert checks into every preconstruction decision and workflow
See Piper on your project
Bring a current or completed project and see how Piper saves review time, surfaces scope gaps, and applies your company's knowledge.