Calculate the true hourly cost of an employee by accounting for taxes, benefits, overhead, and non-billable time.
Base Compensation
Paid Time Off (Annual Days)
Taxes & Benefits
Overhead & Markup
Calculation Results
Total Annual Cost (Burdened)–
Effective Billable Hours–
Break-Even Hourly Cost–
Required Billing Rate–
Labor Burden Factor:–% (Costs above base wage)
.calculator-container {
max-width: 800px;
margin: 0 auto;
padding: 20px;
background: #f9f9f9;
border: 1px solid #ddd;
border-radius: 8px;
font-family: sans-serif;
}
.calculator-container h2 {
text-align: center;
color: #333;
margin-bottom: 10px;
}
.calculator-container p {
text-align: center;
color: #666;
font-size: 0.9em;
margin-bottom: 25px;
}
.input-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
.input-section {
background: #fff;
padding: 15px;
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}
.input-section h3 {
margin-top: 0;
font-size: 1.1em;
color: #2c3e50;
border-bottom: 2px solid #eee;
padding-bottom: 8px;
margin-bottom: 15px;
}
.form-group {
margin-bottom: 15px;
}
.form-group label {
display: block;
margin-bottom: 5px;
font-weight: 600;
font-size: 0.9em;
color: #444;
}
.form-group small {
font-weight: normal;
color: #888;
}
.form-group input {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 1em;
box-sizing: border-box; /* Important for padding */
}
.controls {
text-align: center;
margin-top: 25px;
}
.calc-btn {
background-color: #0073aa;
color: white;
border: none;
padding: 12px 30px;
font-size: 1.1em;
border-radius: 5px;
cursor: pointer;
transition: background 0.3s;
}
.calc-btn:hover {
background-color: #005177;
}
.result-box {
margin-top: 30px;
background: #fff;
padding: 20px;
border-radius: 8px;
border-left: 5px solid #0073aa;
box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}
.result-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
.result-item {
padding: 10px;
border-bottom: 1px solid #eee;
}
.result-label {
display: block;
font-size: 0.9em;
color: #666;
}
.result-value {
display: block;
font-size: 1.4em;
font-weight: bold;
color: #333;
}
.highlight .result-value {
color: #d35400;
}
.highlight-green .result-value {
color: #27ae60;
}
.breakdown {
margin-top: 15px;
text-align: center;
font-size: 0.95em;
color: #555;
}
@media (max-width: 600px) {
.input-grid, .result-grid {
grid-template-columns: 1fr;
}
}
function calculateLaborRate() {
// 1. Get Inputs
var baseWage = parseFloat(document.getElementById('baseWage').value);
var hoursPerWeek = parseFloat(document.getElementById('hoursPerWeek').value);
var vacationDays = parseFloat(document.getElementById('vacationDays').value);
var holidayDays = parseFloat(document.getElementById('holidayDays').value);
var sickDays = parseFloat(document.getElementById('sickDays').value);
var taxRate = parseFloat(document.getElementById('taxRate').value);
var wcRate = parseFloat(document.getElementById('wcRate').value);
var annualBenefits = parseFloat(document.getElementById('annualBenefits').value);
var overheadRate = parseFloat(document.getElementById('overheadRate').value);
var profitMargin = parseFloat(document.getElementById('profitMargin').value);
// Validation
if (isNaN(baseWage) || isNaN(hoursPerWeek)) {
// Do not run calc if base data is missing, but don't clear results to avoid flicker
return;
}
// Handle defaults for empty optional fields
if (isNaN(vacationDays)) vacationDays = 0;
if (isNaN(holidayDays)) holidayDays = 0;
if (isNaN(sickDays)) sickDays = 0;
if (isNaN(taxRate)) taxRate = 0;
if (isNaN(wcRate)) wcRate = 0;
if (isNaN(annualBenefits)) annualBenefits = 0;
if (isNaN(overheadRate)) overheadRate = 0;
if (isNaN(profitMargin)) profitMargin = 0;
// 2. Time Calculations
var weeksPerYear = 52;
var totalPaidHours = hoursPerWeek * weeksPerYear; // Standard 2080 for 40hr week
var hoursPerDay = hoursPerWeek / 5;
var totalPaidOffDays = vacationDays + holidayDays + sickDays;
var totalPaidOffHours = totalPaidOffDays * hoursPerDay;
var effectiveBillableHours = totalPaidHours – totalPaidOffHours;
// 3. Cost Calculations
var annualBasePay = baseWage * totalPaidHours;
var annualTaxCost = annualBasePay * (taxRate / 100);
var annualWCCost = annualBasePay * (wcRate / 100);
var totalLaborBurden = annualTaxCost + annualWCCost + annualBenefits;
var totalDirectLaborCost = annualBasePay + totalLaborBurden;
// Overhead Allocation (Applied to Total Direct Cost)
var annualOverheadCost = totalDirectLaborCost * (overheadRate / 100);
var totalAnnualCost = totalDirectLaborCost + annualOverheadCost;
// 4. Hourly Rates
// Break Even = Total Cost / Billable Hours (Not paid hours, because you must recover cost during billable time)
var breakEvenRate = totalAnnualCost / effectiveBillableHours;
// Billing Rate with Profit
// Formula: Cost / (1 – ProfitMargin%) to maintain margin, OR Cost * (1 + Profit%).
// Standard markup logic implies Cost + (Cost * Margin).
// Standard Margin logic implies Price = Cost / (1 – Margin). Let's use Markup for simplicity in labeling or Margin if specified.
// Let's use standard Margin formula: Price = Cost / (1 – (margin/100))
var billingRate = 0;
if (profitMargin < 100) {
billingRate = breakEvenRate / (1 – (profitMargin / 100));
} else {
billingRate = breakEvenRate * 2; // Fail safe
}
// Burden Percentage
var burdenPercent = ((totalAnnualCost – annualBasePay) / annualBasePay) * 100;
// 5. Display Results
document.getElementById('resultSection').style.display = 'block';
// Formatting function
var fmtMoney = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
var fmtNum = new Intl.NumberFormat('en-US', { maximumFractionDigits: 1 });
document.getElementById('resTotalAnnualCost').innerText = fmtMoney.format(totalAnnualCost);
document.getElementById('resBillableHours').innerText = fmtNum.format(effectiveBillableHours);
document.getElementById('resBreakEven').innerText = fmtMoney.format(breakEvenRate);
document.getElementById('resBillingRate').innerText = fmtMoney.format(billingRate);
document.getElementById('resBurdenPercent').innerText = fmtNum.format(burdenPercent);
}
Understanding All-In Labour Rate Calculations
In construction, field services, and professional consulting, knowing your "Base Hourly Wage" is only the beginning of financial planning. The All-In Labour Rate (also known as the "Burdened Labor Rate") reveals the actual cost incurred by the company for every hour an employee works. Failing to calculate this accurately is a primary reason why service businesses face profitability issues despite appearing to have healthy margins.
What is Included in an All-In Labour Rate?
The All-In rate aggregates three main categories of expenses on top of the base salary:
Payroll Taxes (The Statutory Burden): These are mandatory costs such as Social Security, Medicare (FICA), and federal/state unemployment taxes (FUTA/SUTA). These typically add 8% to 15% to the base wage.
Benefits & Insurance: This includes Workers' Compensation insurance (which can be very high for construction trades), health insurance premiums, 401(k) matching, and other perks.
Paid Time Off (The Productivity Gap): This is the most often overlooked factor. If you pay an employee for 2,080 hours a year (40 hours x 52 weeks), but they take 3 weeks of vacation, 1 week of sick time, and 8 holidays, they are only "billable" or productive for roughly 1,880 hours. Your costs must be recovered over these fewer hours, driving the hourly rate up significantly.
The Calculation Formula
To determine your All-In Hourly Cost, use the following logic:
For example, an employee earning $25/hour might actually cost the company $38.50/hour to break even. To make a 20% profit margin, the billing rate would need to be nearly $48/hour.
Why "Effective Billable Hours" Matter
The denominator in your calculation is just as important as the numerator. If you divide your annual costs by 2,080 hours (a standard full-time year), you are assuming 100% productivity with no holidays or breaks. This artificially lowers your calculated cost. By dividing by the actual working hours (e.g., 1,880), you get a realistic view of what you must charge per hour of work performed to cover all year-round expenses.
Using This Calculator for Job Costing
Use the tool above to determine your "Break-Even Hourly Cost." This is your floor—the absolute minimum you can charge without losing money. The "Required Billing Rate" adds your desired profit margin on top. Use the Billing Rate when estimating jobs, bidding on contracts, or setting your service prices to ensure true profitability.