What's a Fair Contractor Markup on Materials? The Honest Answer
You got three bids for your bathroom remodel. Contractor A lists porcelain tile at $8/sqft. You check Home Depot and find the same tile for $4.50/sqft. Is Contractor A ripping you off?
Probably not. But the answer is more complicated than "markup bad."
Why Contractors Mark Up Materials
A general contractor doesn't just buy your tile. They:
- Source it from a commercial supplier (often at better quality than retail)
- Coordinate delivery timing with the project schedule
- Handle returns and exchanges if there's damage or overage
- Account for waste (typically 10-15% extra for cuts and breakage)
- Manage warranty claims if the product is defective
That labor has a cost. The markup covers it.
There's also a business reality: contractors have overhead. Insurance, trucks, tools, office staff, licenses. A contractor who passes through materials at cost and only charges for labor is either underpaying themselves or hiding the margin somewhere else in the bid.
The Normal Range
15-25% markup: Standard for most residential contractors. This is the range where you shouldn't argue. It's the cost of doing business.
25-35% markup: On the higher end but not unreasonable for specialty materials, small orders, or items that require extra handling. Custom tile, imported fixtures, specialty lumber. If your contractor is sourcing something unusual, the extra markup reflects the extra effort.
35-50% markup: Getting into questionable territory. Ask your contractor to explain the pricing. There might be a legitimate reason (expedited shipping, sourcing difficulty), but there might not be.
50%+ markup: Red flag. This is where you either negotiate or walk. Unless the material is genuinely rare or requires significant sourcing effort, this is padding.
How to Spot Excessive Markup
Check specific line items, not the total. A bid can look reasonable on the bottom line while hiding inflated material costs offset by lower labor rates (or vice versa). Compare individual components.
Research wholesale, not retail. Contractors don't buy from Home Depot. They buy from commercial suppliers like Ferguson, Floor & Decor (pro accounts), or direct from manufacturers. Retail pricing is your ceiling, not your baseline for comparison.
Ask if materials are included or cost-plus. Some contractors use a cost-plus model where you pay actual material cost plus a fixed percentage. This is transparent and usually fair. Others bake everything into a lump sum. Both approaches work. What matters is that you understand which one you're looking at.
Compare material specs, not just prices. Contractor A's "$8/sqft tile" might be commercial-grade porcelain rated for high traffic. Home Depot's "$4.50/sqft tile" might be residential-grade ceramic that chips in two years. The markup might actually be a quality difference.
The Real Money Conversation
Material markup is real, but it's usually not where homeowners lose the most money. Labor rates and scope differences between bids account for 70-80% of the price gap when you compare multiple contractors.
If Contractor A bids $28,000 and Contractor B bids $22,000 for the same bathroom, the $6,000 difference is more likely coming from:
- Different labor rates ($45/hr vs $65/hr)
- Different scope (one includes new subfloor, the other doesn't)
- Different timeline (rush job vs standard scheduling)
- One includes permits, the other doesn't
Material markup is worth checking, but don't lose the forest for the trees.
How to Handle It
Don't tell a contractor "I can get this cheaper at Home Depot." That's a fast way to sour a relationship with someone who's about to work in your house for six weeks.
Instead:
- Get three bids with itemized materials lists
- Compare the same materials across all three bids
- If one contractor is significantly higher on specific items, ask: "I noticed the tile is priced higher than the other bids I received. Can you walk me through the specification?"
- Let them explain. Sometimes the answer makes sense. Sometimes it doesn't.
Or skip the awkward conversation entirely and upload your bids to BidCheck. We compare every line item against local benchmarks and flag anything that's significantly above market rate. You'll know exactly where the numbers are tight and where there's room to negotiate.