California Prevailing Wage Project Cost Calculator
ANA›Life Services Authority›National Calculator Authority›California Prevailing Wage Project Cost 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; } }
California Prevailing Wage Project Cost Calculator
Estimate total labor costs for California public works projects subject to prevailing wage laws (Labor Code §1720 et seq.). Enter worker details, hours, and wage rates to calculate gross wages, fringe benefits, overtime premiums, and total employer cost.
Number of Workers
Regular Hours per Worker (per week)
Overtime Hours per Worker (per week, >8 hrs/day or >40 hrs/week)
Double-Time Hours per Worker (per week, >12 hrs/day or 7th day)
Project Duration (weeks)
Prevailing Base Wage Rate ($/hr)
Fringe Benefit Rate ($/hr, from DIR wage determination)
Apprentice Workers (% of workforce, 0–100)
Apprentice Base Wage Rate ($/hr, typically 60–85% of journeyman)
Employer Payroll Tax Rate (%, e.g. FICA 7.65 + FUTA/SUTA ~3)
Calculate
function calCalculate() { // --- Gather inputs --- var workers = parseFloat(document.getElementById('cal-workers').value); var regHrs = parseFloat(document.getElementById('cal-regular-hours').value); var otHrs = parseFloat(document.getElementById('cal-overtime-hours').value); var dtHrs = parseFloat(document.getElementById('cal-double-hours').value); var weeks = parseFloat(document.getElementById('cal-weeks').value); var baseWage = parseFloat(document.getElementById('cal-base-wage').value); var fringe = parseFloat(document.getElementById('cal-fringe').value); var apprenticePct = parseFloat(document.getElementById('cal-apprentice-pct').value); var apprenticeWage = parseFloat(document.getElementById('cal-apprentice-wage').value); var payrollTaxRate = parseFloat(document.getElementById('cal-payroll-tax').value);
var resultDiv = document.getElementById('cal-result');
// --- Validation --- var errors = []; if (isNaN(workers) || workers 40) errors.push("Regular hours must be between 0 and 40."); if (isNaN(otHrs) || otHrs 168) errors.push("Overtime hours must be between 0 and 168."); if (isNaN(dtHrs) || dtHrs 168) errors.push("Double-time hours must be between 0 and 168."); if (isNaN(weeks) || weeks 100) errors.push("Apprentice percentage must be between 0 and 100."); if (isNaN(apprenticeWage) || apprenticeWage 50) errors.push("Payroll tax rate must be between 0 and 50."); if ((regHrs + otHrs + dtHrs) === 0) errors.push("Total hours per worker per week cannot be zero.");
if (errors.length > 0) { resultDiv.style.display = 'block'; resultDiv.innerHTML = 'Please fix the following:' + errors.map(function(e){ return ''; }).join('') + ''; return; }
// --- Core Calculations ---
// Worker split var apprenticeRatio = apprenticePct / 100; var journeymanRatio = 1 - apprenticeRatio; var journeymanWorkers = workers * journeymanRatio; var apprenticeWorkers = workers * apprenticeRatio;
// Total hours per worker per week (all categories) var totalHrsPerWorkerPerWeek = regHrs + otHrs + dtHrs;
// California overtime multipliers (Labor Code §510): // Regular time = 1.0x base wage // Overtime = 1.5x base wage // Double time = 2.0x base wage // Fringe benefits are paid on ALL hours (straight-time equivalent per DIR)
// Effective hourly wage rate per worker per week (weighted): // Effective Rate = (regHrs * 1.0 + otHrs * 1.5 + dtHrs * 2.0) / totalHrs [for wage calc] // But computes total wage dollars directly:
// --- Journeyman wage cost --- var jRegWage = journeymanWorkers * regHrs * weeks * baseWage * 1.0; var jOtWage = journeymanWorkers * otHrs * weeks * baseWage * 1.5; var jDtWage = journeymanWorkers * dtHrs * weeks * baseWage * 2.0; var jTotalBaseWage = jRegWage + jOtWage + jDtWage;
// --- Apprentice wage cost --- var aRegWage = apprenticeWorkers * regHrs * weeks * apprenticeWage * 1.0; var aOtWage = apprenticeWorkers * otHrs * weeks * apprenticeWage * 1.5; var aDtWage = apprenticeWorkers * dtHrs * weeks * apprenticeWage * 2.0; var aTotalBaseWage = aRegWage + aOtWage + aDtWage;
var totalBaseWages = jTotalBaseWage + aTotalBaseWage;
// --- Fringe Benefits --- // Fringe is paid on ALL hours worked (not multiplied by OT factor per DIR guidance) var totalAllHours = workers * totalHrsPerWorkerPerWeek * weeks; var totalFringe = totalAllHours * fringe;
// --- Gross Labor Cost (wages + fringe) --- var grossLaborCost = totalBaseWages + totalFringe;
// --- Employer Payroll Taxes (applied to base wages only, not fringe) --- var payrollTaxes = totalBaseWages * (payrollTaxRate / 100);
// --- Total Project Labor Cost --- var totalProjectCost = grossLaborCost + payrollTaxes;
// --- Per-worker and per-hour metrics --- var costPerWorker = totalProjectCost / workers; var costPerHour = totalProjectCost / totalAllHours;
// --- Overtime premium (additional cost above straight time) --- var jOtPremium = journeymanWorkers * otHrs * weeks * baseWage * 0.5; var jDtPremium = journeymanWorkers * dtHrs * weeks * baseWage * 1.0; var aOtPremium = apprenticeWorkers * otHrs * weeks * apprenticeWage * 0.5; var aDtPremium = apprenticeWorkers * dtHrs * weeks * apprenticeWage * 1.0; var totalOtPremium = jOtPremium + jDtPremium + aOtPremium + aDtPremium;
// --- Format helper --- function fmt(n) { return '$' + n.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ','); } function fmtN(n, dec) { return n.toFixed(dec === undefined ? 0 : dec).replace(/\B(?=(\d{3})+(?!\d))/g, ','); }
// --- Output --- resultDiv.style.display = 'block'; resultDiv.innerHTML = '### 📊 Project Cost Estimate ' +
'' + 'CategoryAmount' +
'Workforce' + ' Total Workers' + fmtN(workers) + '' + ' Journeyman Workers (' + fmtN(journeymanRatio100,1) + '%)' + fmtN(journeymanWorkers,2) + '' + ' Apprentice Workers (' + fmtN(apprenticeRatio100,1) + '%)' + fmtN(apprenticeWorkers,2) + '' + ' Total Worker-Hours' + fmtN(totalAllHours,0) + ' hrs' +
'Base Wages' + ' Journeyman Regular-Time Wages' + fmt(jRegWage) + '' + ' Journeyman Overtime Wages (1.5x)' + fmt(jOtWage) + '' + ' Journeyman Double-Time Wages (2.0x)' + fmt(jDtWage) + '' + ' Apprentice Regular-Time Wages' + fmt(aRegWage) + '' + ' Apprentice Overtime Wages (1.5x)' + fmt(aOtWage) + '' + ' Apprentice Double-Time Wages (2.0x)' + fmt(aDtWage) + '' + ' Total Base Wages' + fmt(totalBaseWages) + '' + ' (of which: Overtime/DT Premium)' + fmt(totalOtPremium) + '' +
'Fringe Benefits (all hours × ' + fmt(fringe) + '/hr)' + fmt(totalFringe) + '' +
'Gross Labor Cost (Wages + Fringe)' + fmt(grossLaborCost) + '' +
'Employer Payroll Taxes (' + payrollTaxRate.toFixed(2) + '% of base wages)' + fmt(payrollTaxes) + '' +
'✅ Total Project Labor Cost' + fmt(totalProjectCost) + '' +
'Cost per Worker (project total)' + fmt(costPerWorker) + '' + 'Effective Cost per Hour' + fmt(costPerHour) + '/hr' +
''; }
#### Formulas Used
Base Wage Cost per Worker Type:
Wage Cost = Workers × Weeks × [ (Regular Hrs × 1.0 × Base Wage) + (Overtime Hrs × 1.5 × Base Wage) + (Double-Time Hrs × 2.0 × Base Wage) ]
Fringe Benefits:
Fringe Cost = Total All Hours × Fringe Rate ($/hr) Total All Hours = Workers × (Reg + OT + DT Hrs/wk) × Weeks
Gross Labor Cost:
Gross Labor Cost = Total Base Wages + Total Fringe Benefits
Employer Payroll Taxes:
Payroll Taxes = Total Base Wages × (Payroll Tax Rate / 100)
Total Project Labor Cost:
Total Cost = Gross Labor Cost + Payroll Taxes
Effective Cost per Hour:
Cost/hr = Total Project Labor Cost / Total All Hours
#### Assumptions & References
- California Labor Code §1720–1861 governs prevailing wage requirements on public works projects exceeding $1,000 (general) or $25,000 (new construction).
- Overtime rules (Labor Code §510): 1.5x for hours over 8/day or 40/week; 2.0x for hours over 12/day or all hours on the 7th consecutive day.
- Fringe benefits are paid at the straight-time rate on all hours worked, per DIR (Department of Industrial Relations) wage determinations. They are not multiplied by OT factors.
- Prevailing wage rates are set by the DIR and vary by craft, classification, and county. Look up current rates at dir.ca.gov/OPRL/PWD.
- Apprentice ratio: California requires a minimum apprentice-to-journeyman ratio (typically 1:5) under Labor Code §1777.5. Apprentice wages are typically 60–85% of journeyman rates depending on period of apprenticeship.
- Payroll taxes include employer FICA (7.65%), FUTA (0.6%), and California SUI (variable, ~3.4% for new employers). Fringe benefit contributions are generally excluded from taxable wages if paid to bona fide benefit plans.
- This calculator provides estimates only. Actual costs depend on specific DIR wage determinations, collective bargaining agreements, project classification, and county. Consult a licensed contractor or labor compliance consultant for binding figures.
- Workers' compensation insurance, general liability, equipment, and material costs are not included in this calculator.
More Calculators
- Farkle Scoring Probability Calculator
- D&D 5e Carrying Capacity Calculator
- Dispensary Startup Cost Estimator
- Door Hinge Placement Calculator
- THC/CBD Potency & Serving Size Calculator
- Craps Odds & Payout Calculator
- Weatherstripping Length and Cost Calculator
- Solar Savings Calculator
- Solar Battery Storage Calculator
- ABV Calculator
- Drink Cost Calculator
- Proof Conversion Calculator
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...