Contractor Markup and Overhead Rate Calculator
ANA›Life Services Authority›National Calculator Authority›Contractor Markup and Overhead Rate Calculator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
Contractor Markup and Overhead Rate Calculator
Calculate your contractor markup percentage, overhead rate, and final bid price based on direct project costs, annual overhead expenses, and your desired profit margin.
Direct Project Cost ($)
Labor, materials, subcontractors, equipment for this project
Annual Overhead Expenses ($)
Office rent, insurance, admin salaries, utilities, vehicles, etc.
Projected Annual Revenue ($)
Total expected revenue for the year (used to allocate overhead)
Desired Net Profit Margin (%)
Typical contractor net profit: 5%–15%
Calculate
function conCalc() { var resultDiv = document.getElementById('con-result'); var directCost = parseFloat(document.getElementById('con-direct-cost').value); var annualOH = parseFloat(document.getElementById('con-annual-overhead').value); var annualRev = parseFloat(document.getElementById('con-annual-revenue').value); var profitMargin = parseFloat(document.getElementById('con-profit-margin').value);
// Validation if (isNaN(directCost) || directCost = annualRev) { resultDiv.innerHTML = 'Annual Overhead must be less than Projected Annual Revenue.
'; return; } if (isNaN(profitMargin) || profitMargin = 100) { resultDiv.innerHTML = 'Please enter a Desired Net Profit Margin between 0 and 99.99%.
'; return; }
// Step 1: Overhead Rate (as % of revenue) // Overhead Rate = Annual Overhead / Annual Revenue var overheadRate = annualOH / annualRev;
// Step 2: Overhead allocated to this project // Project Overhead = Direct Cost * Overhead Rate / (1 - Overhead Rate) // We allocate overhead proportionally to direct cost relative to total direct costs. // Simpler industry approach: Overhead $ for project = Direct Cost * (Annual OH / (Annual Revenue - Annual OH)) // This ensures overhead is recovered as a % of direct costs. var annualDirectCosts = annualRev - annualOH; // approximate total annual direct costs var ohOnDirectRatio = annualOH / annualDirectCosts; // overhead as % of direct costs var projectOverhead = directCost * ohOnDirectRatio;
// Step 3: Cost before profit var totalCostBeforeProfit = directCost + projectOverhead;
// Step 4: Bid Price using profit margin // Profit Margin = Net Profit / Bid Price => Bid Price = Total Cost / (1 - Profit Margin) var profitMarginDecimal = profitMargin / 100; if (profitMarginDecimal >= 1) { resultDiv.innerHTML = 'Profit margin must be less than 100%.
'; return; } var bidPrice = totalCostBeforeProfit / (1 - profitMarginDecimal);
// Step 5: Net Profit & Markup var netProfit = bidPrice - totalCostBeforeProfit;
// Markup % = (Bid Price - Direct Cost) / Direct Cost * 100 var markupPercent = ((bidPrice - directCost) / directCost) * 100;
// Overhead Rate % on direct costs var ohRateOnDirect = ohOnDirectRatio * 100;
// Gross Profit (before overhead deduction from bid perspective) var grossProfit = bidPrice - directCost; var grossMargin = (grossProfit / bidPrice) * 100;
resultDiv.innerHTML = '### Results ' + '' + 'Direct Project Cost$' + directCost.toLocaleString('en-US', {minimumFractionDigits:2, maximumFractionDigits:2}) + '' + 'Overhead Allocated to Project$' + projectOverhead.toLocaleString('en-US', {minimumFractionDigits:2, maximumFractionDigits:2}) + '' + 'Total Cost (Direct + Overhead)$' + totalCostBeforeProfit.toLocaleString('en-US', {minimumFractionDigits:2, maximumFractionDigits:2}) + '' + 'Net Profit$' + netProfit.toLocaleString('en-US', {minimumFractionDigits:2, maximumFractionDigits:2}) + '' + 'Final Bid Price$' + bidPrice.toLocaleString('en-US', {minimumFractionDigits:2, maximumFractionDigits:2}) + '' + 'Markup Percentage' + markupPercent.toFixed(2) + '%' + 'Overhead Rate (on Direct Costs)' + ohRateOnDirect.toFixed(2) + '%' + 'Overhead Rate (on Revenue)' + (overheadRate * 100).toFixed(2) + '%' + 'Gross Profit$' + grossProfit.toLocaleString('en-US', {minimumFractionDigits:2, maximumFractionDigits:2}) + '' + 'Gross Margin' + grossMargin.toFixed(2) + '%' + ''; }
#### Formulas Used
1. Overhead Rate on Direct Costs: Overhead Rate = Annual Overhead ÷ (Annual Revenue − Annual Overhead)
2. Project Overhead Allocation: Project Overhead = Direct Project Cost × Overhead Rate
3. Total Project Cost: Total Cost = Direct Cost + Project Overhead
4. Bid Price (using desired net profit margin): Bid Price = Total Cost ÷ (1 − Net Profit Margin %)
5. Markup Percentage: Markup % = (Bid Price − Direct Cost) ÷ Direct Cost × 100
Note — Markup vs. Margin: Markup is calculated on cost; margin is calculated on the selling price (bid). A 20% markup ≠ 20% margin.
#### Assumptions & References
More Calculators
- Humidity and Cooling Load Calculator
- Oregon Fuel Cost Comparison Calculator — compare natural gas, electric, oil, and heat pump costs using Oregon utility rates
- Ventilation Rate Calculator — calculate required fresh air exchange rates per Oregon mechanical code and ASHRAE 62.2
- Oregon Rebate Savings Estimator — estimate Energy Trust of Oregon and utility rebates for qualifying HVAC equipment upgrades
- Energy Savings Calculator (Old vs New HVAC System)
- AC Unit Size Calculator (BTU for Phoenix Climate)
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...