Calculate competitive rental rates based on ownership costs and utilization.
Calculated Rental Rates
Minimum Hourly Rate:
Daily Rate (8 Hours):
Weekly Rate (5 Days):
Monthly Rate (4 Weeks):
How to Calculate Construction Equipment Rental Rates
Determining the right rental rate for construction machinery is critical for both rental companies and contractors looking to recover costs. If you set rates too low, you fail to cover depreciation and maintenance; too high, and your equipment sits idle.
The Core Formula
Most professional rental operations use the Cost Recovery Method. This involves four primary factors:
Depreciation: The annual loss in value (Purchase Price – Salvage Value) / Useful Life.
Maintenance Costs: The total cost of tires, oil, filters, and major repairs per year.
Overhead: Fixed costs including insurance, taxes, licensing, and storage fees.
Profit Margin: The additional percentage required to grow the business and account for risk.
Step-by-Step Calculation Example
Imagine a Compact Track Loader purchased for $80,000 with a salvage value of $20,000 after 5 years.
Total Annual Ownership Cost: $12,000 + $7,000 = $19,000.
Hourly Breakeven: If used 1,000 hours/year, $19,000 / 1,000 = $19/hour.
Rental Rate with 30% Profit: $19 * 1.30 = $24.70/hour.
Industry Standard Rate Ratios
While the calculation above gives the "base" cost, the industry typically uses a declining ratio for longer durations:
Daily Rate: Usually 1/15th to 1/20th of the monthly rate.
Weekly Rate: Usually 3x to 4x the daily rate.
Monthly Rate: Usually 3x the weekly rate.
Our calculator uses a standard utilization model where Daily is 8 hours, Weekly is 5 working days, and Monthly is 20 working days, adjusted for the desired profit margin.
function calculateRentalRates() {
var purchasePrice = parseFloat(document.getElementById("purchasePrice").value);
var salvageValue = parseFloat(document.getElementById("salvageValue").value);
var usefulLife = parseFloat(document.getElementById("usefulLife").value);
var usageHours = parseFloat(document.getElementById("usageHours").value);
var annualMaintenance = parseFloat(document.getElementById("annualMaintenance").value);
var annualOverhead = parseFloat(document.getElementById("annualOverhead").value);
var profitMargin = parseFloat(document.getElementById("profitMargin").value);
if (isNaN(purchasePrice) || isNaN(usefulLife) || isNaN(usageHours) || usageHours <= 0 || usefulLife <= 0) {
alert("Please enter valid numbers. Annual usage hours and useful life must be greater than zero.");
return;
}
// 1. Calculate Annual Depreciation
var annualDepreciation = (purchasePrice – salvageValue) / usefulLife;
// 2. Total Annual Cost
var totalAnnualCost = annualDepreciation + annualMaintenance + annualOverhead;
// 3. Hourly Cost (Breakeven)
var hourlyBreakeven = totalAnnualCost / usageHours;
// 4. Hourly Rate with Profit
var hourlyRate = hourlyBreakeven * (1 + (profitMargin / 100));
// 5. Derive Time-based Rates
// Daily is usually 8 hours of run time
var dailyRate = hourlyRate * 8;
// Weekly is usually 5 days
var weeklyRate = dailyRate * 5;
// Monthly is usually 4 weeks
var monthlyRate = weeklyRate * 4;
// Display results
document.getElementById("resHourly").innerText = "$" + hourlyRate.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resDaily").innerText = "$" + dailyRate.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resWeekly").innerText = "$" + weeklyRate.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resMonthly").innerText = "$" + monthlyRate.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resultsArea").style.display = "block";
document.getElementById("resultsArea").scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}