body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: #333;
max-width: 1200px;
margin: 0 auto;
padding: 20px;
background-color: #f4f7f6;
}
.calc-container {
background: #ffffff;
padding: 30px;
border-radius: 12px;
box-shadow: 0 4px 20px rgba(0,0,0,0.1);
margin-bottom: 40px;
}
.calc-header {
text-align: center;
margin-bottom: 30px;
color: #2c3e50;
}
.grid-form {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
@media (max-width: 768px) {
.grid-form {
grid-template-columns: 1fr;
}
}
.input-group {
margin-bottom: 15px;
}
.input-group label {
display: block;
margin-bottom: 8px;
font-weight: 600;
color: #555;
}
.input-group input {
width: 100%;
padding: 12px;
border: 1px solid #ddd;
border-radius: 6px;
font-size: 16px;
box-sizing: border-box;
transition: border-color 0.3s;
}
.input-group input:focus {
border-color: #3498db;
outline: none;
}
.section-title {
grid-column: 1 / -1;
font-size: 1.1em;
color: #3498db;
border-bottom: 2px solid #eee;
padding-bottom: 10px;
margin-top: 10px;
margin-bottom: 10px;
font-weight: bold;
}
button.calc-btn {
grid-column: 1 / -1;
background-color: #2ecc71;
color: white;
border: none;
padding: 15px;
font-size: 18px;
border-radius: 6px;
cursor: pointer;
font-weight: bold;
margin-top: 20px;
transition: background-color 0.3s;
}
button.calc-btn:hover {
background-color: #27ae60;
}
.results-area {
grid-column: 1 / -1;
background-color: #f8f9fa;
border-radius: 8px;
padding: 20px;
margin-top: 20px;
display: none;
border: 1px solid #e9ecef;
}
.result-row {
display: flex;
justify-content: space-between;
padding: 10px 0;
border-bottom: 1px solid #e0e0e0;
}
.result-row:last-child {
border-bottom: none;
font-weight: bold;
font-size: 1.2em;
color: #2c3e50;
margin-top: 10px;
border-top: 2px solid #2c3e50;
padding-top: 15px;
}
.result-label {
color: #666;
}
.result-value {
font-weight: 700;
}
.content-section {
background: #fff;
padding: 40px;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}
h2, h3 {
color: #2c3e50;
}
.highlight-box {
background-color: #e8f4fd;
border-left: 5px solid #3498db;
padding: 15px;
margin: 20px 0;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
table, th, td {
border: 1px solid #ddd;
}
th, td {
padding: 12px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
function calculateRate() {
// Get Inputs
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value) || 0;
var salvageValue = parseFloat(document.getElementById('salvageValue').value) || 0;
var lifeYears = parseFloat(document.getElementById('lifeYears').value) || 0;
var annualHours = parseFloat(document.getElementById('annualHours').value) || 0;
var annualOverhead = parseFloat(document.getElementById('annualOverhead').value) || 0;
var fuelBurn = parseFloat(document.getElementById('fuelBurn').value) || 0;
var fuelCost = parseFloat(document.getElementById('fuelCost').value) || 0;
var maintCost = parseFloat(document.getElementById('maintCost').value) || 0;
var operatorWage = parseFloat(document.getElementById('operatorWage').value) || 0;
var profitMargin = parseFloat(document.getElementById('profitMargin').value) || 0;
// Validation
if (lifeYears <= 0 || annualHours <= 0) {
alert("Please enter valid positive numbers for 'Useful Life' and 'Annual Hours' to avoid division errors.");
return;
}
// Calculation: Ownership Costs (Fixed)
// Depreciation = (Purchase – Salvage) / Total Hours over lifetime
var totalDepreciation = purchasePrice – salvageValue;
var annualDepreciation = totalDepreciation / lifeYears;
var hourlyDepreciation = annualDepreciation / annualHours;
// Overhead (Insurance, Tax, Storage) per hour
var hourlyOverhead = annualOverhead / annualHours;
var totalHourlyOwnership = hourlyDepreciation + hourlyOverhead;
// Calculation: Operating Costs (Variable)
var hourlyFuel = fuelBurn * fuelCost;
var totalHourlyOperating = hourlyFuel + maintCost + operatorWage;
// Totals
var breakevenCost = totalHourlyOwnership + totalHourlyOperating;
// Profit Calculation
// Margin logic: Rate = Cost * (1 + Margin/100)
var hourlyProfit = breakevenCost * (profitMargin / 100);
var finalRate = breakevenCost + hourlyProfit;
// Display Results
document.getElementById('resOwnership').innerText = '$' + totalHourlyOwnership.toFixed(2);
document.getElementById('resOperating').innerText = '$' + totalHourlyOperating.toFixed(2);
document.getElementById('resBreakeven').innerText = '$' + breakevenCost.toFixed(2);
document.getElementById('resProfit').innerText = '$' + hourlyProfit.toFixed(2);
document.getElementById('resTotal').innerText = '$' + finalRate.toFixed(2);
document.getElementById('results').style.display = 'block';
}
How to Calculate Equipment Hourly Rates
Calculating the correct hourly rate for your equipment is fundamental to the profitability of any construction, landscaping, or excavation business. Guessing your rates based on competitors can lead to losing money on every hour the machine runs, or pricing yourself out of the market. A robust rate must cover machine depreciation, operating expenses, and operator wages while securing a profit margin.
1. Understanding Ownership Costs (Fixed Costs)
Ownership costs are expenses you incur regardless of whether the machine is running or parked. They are calculated annually and then divided by the estimated annual billable hours.
- Depreciation: This is the loss of value over time. It is calculated as (Purchase Price – Resale Value) / Useful Life. This ensures you recover the capital to replace the machine when it wears out.
- Interest, Insurance, and Taxes: These are annual fixed fees. Even if you own the machine outright, you should account for the "opportunity cost" of the money tied up in the asset.
2. Understanding Operating Costs (Variable Costs)
These costs only occur when the engine is running. They are directly tied to usage intensity.
- Fuel: Multiply the machine's consumption rate (gallons or liters per hour) by the current fuel price.
- Maintenance & Tires: Include oil changes, filters, hydraulic fluids, track replacements, and tire wear. It is often estimated as a percentage of depreciation or a fixed dollar amount per hour.
- Operator Labor: Always use the "burdened" labor rate, which includes the hourly wage plus payroll taxes, insurance, and benefits.
Tip: Always underestimate your "Annual Billable Hours." If you work 2,000 hours a year, base your calculations on 1,600 to 1,700 hours to account for bad weather, transport time, and repairs. This creates a safety buffer in your rate.
Example Calculation: 20-Ton Excavator
Let's look at a realistic scenario for a mid-sized excavator to understand how the numbers come together.
| Cost Component |
Input Data |
Hourly Cost Impact |
| Depreciation |
$150,000 Purchase, $50k Resale, 5 Years, 1,500 hrs/yr |
$13.33 / hr |
| Fixed Overhead |
$4,000/yr (Insurance/Tax) |
$2.67 / hr |
| Fuel |
5 gal/hr @ $4.00/gal |
$20.00 / hr |
| Maintenance |
Tracks, fluids, repairs |
$12.00 / hr |
| Operator |
Wage + Burden |
$45.00 / hr |
| Subtotal (Breakeven) |
– |
$93.00 / hr |
| Profit (20%) |
20% Margin |
$18.60 / hr |
| Final Rate |
– |
$111.60 / hr |
Why Profit Margin Matters
Many contractors make the mistake of adding profit only to their labor. However, you must also add profit to the equipment itself. The risk of owning heavy machinery (breakdowns, market changes, idle time) requires a return on investment. The calculator above applies your profit margin to the total cost per hour (Ownership + Operating), ensuring the machine generates revenue for the company beyond just paying for itself.
Frequently Asked Questions
What if my annual hours vary?
If you fly fewer hours than estimated, your hourly rate needs to be higher to cover the fixed annual costs. Conversely, if you work more hours, your profit margin increases. It is safer to calculate based on a conservative estimate of hours.
How do I calculate Operator All-In Cost?
Take the base hourly wage and multiply it by roughly 1.3 to 1.5. This accounts for FICA, workers' compensation, unemployment insurance, and benefits.
Should I include the trailer cost?
Yes. If a truck and trailer are required to move the equipment daily, their costs should either be calculated separately as mobilization fees or built into the overhead of the equipment's hourly rate.